gpt4 book ai didi

opa - 为什么 Opa 语言中需要 'do'?

转载 作者:行者123 更新时间:2023-12-01 00:38:33 24 4
gpt4 key购买 nike

我认为新手会对“do”感到困惑,从语言设计的角度来看,我想知道它。您不想在新语言生命的这个阶段混淆新手,在这个阶段几乎每个人都是新手,您需要新手来建立社区和临界质量 ;-)

“做”的文档(3.8.3。做或不做)说:

There is a very good reason for this construction: in Opa, every function definition (and more generally every value not at toplevel) ends with one value, which is the result of the function — conversely, once we have reached the first value, we have the result of the function, so the function is complete.

我想知道的是我在上面加粗的部分:为什么在达到第一个值之后函数就完成了?是否为了避免您在 OCaml 中看到的类似情况而引入了“do”?:

let _ = (some expression)

在 Opa 的语言设计中,“do”的使用有哪些替代方法?否则如何解决这个问题(从语言设计的角度来看)。

最佳答案

没有直接的答案。当前的 OPA 语法需要 do,但我们可以选择另一种哲学。

例如:

user_update(x) =
line = <div>
<div>{x.author}:</div>
<div>{x.text}</div>
</div>
do Dom.transform([#conversation +<- line ])
Dom.scroll_to_bottom(#conversation)

do 需要知道该函数不会在 Dom.transform 行结束,而是在下一行结束。正如你引用的书中所写:“......一旦我们达到第一个值,我们就有了函数的结果,所以函数是完整的。”

但如果使用类似 js 的语法,它可能是:

user_update(x) {
line = <div>
<div>{x.author}:</div>
<div>{x.text}</div>
</div>;
Dom.transform([#conversation +<- line ]);
Dom.scroll_to_bottom(#conversation)
}

我们已经收到了大量关于 OPA 语法的反馈和建议,我们正在努力寻找最佳方法。您可以阅读这篇文章以了解更多信息:

众包 OPA 语法 http://dutherenverseauborddelatable.wordpress.com/2011/05/30/crowdsourcing-the-syntax/

也阅读评论。 ;)

关于opa - 为什么 Opa 语言中需要 'do'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6681794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com