When to prefer function or operator?

瀏覽次數:63 次
跳到第一則未讀訊息

thomas...@gmail.com

未讀,
2020年8月21日 上午10:34:422020/8/21
收件者:tlaplus
There are cases when either a function or operator will solve a task more-or-less equivalently. 

For example, both this function and operator accomplish a roughly-equivalent result: 

addOne[x \in Nat] == x + 1

addOneOperator(x) == x + 1


My question is: when either an operator or function will accomplish a job, which one would you prefer?  What are the tradeoffs? 

Stephan Merz

未讀,
2020年8月21日 上午10:41:262020/8/21
收件者:tla...@googlegroups.com
Section 6.4 of Specifying Systems has a thorough discussion of the tradeoffs between functions and operators [1]. The conclusion is as follows:

When defining an object V, you may have to decide whether to make V an operator that takes an argument or a function. The differences between operators and functions will often determine the decision. [...] If these differences don’t determine whether to use an operator or a function, then the choice is a matter of taste. I usually prefer operators.

Regards,
Stephan

[1] Since the publication of Specifying Systems, recursive operator definitions have been added to TLA+ and therefore the arguments about recursive definitions no longer apply.


--
You received this message because you are subscribed to the Google Groups "tlaplus" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tlaplus+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/tlaplus/6108b306-0d5a-4a0f-80bf-6c56ebefc51fn%40googlegroups.com.

thomas...@gmail.com

未讀,
2020年8月21日 中午12:58:062020/8/21
收件者:tlaplus
Thanks for getting back to me. 

So in my example, from a direct specification perspective, it doesn't matter much; does it affect anything in regards to TLC or TLAPS? Does using an operator perform better during model checking? 

Stephan Merz

未讀,
2020年8月21日 下午1:21:172020/8/21
收件者:tla...@googlegroups.com
Hello,

indeed, assuming that you are not interested in making explicit the domain of the function, there is no big difference between the two. You shouldn't see any noticeable difference when using TLC or TLAPS either.

Regards,
Stephan

thomas...@gmail.com

未讀,
2020年8月21日 下午1:34:382020/8/21
收件者:tlaplus
Cool, thanks for the clarification!
回覆所有人
回覆作者
轉寄
0 則新訊息