|
0
|
| Robin Zigmond · 技术社区 · 5 年前 |
|
1
4
是的,PureScript确实以与Haskell完全相同的方式使用咖喱,但咖喱不是这里的问题。 问题是 评估顺序 .Haskell使用正常的求值顺序,而PureScript使用Application(更明确地说,PureScript并不懒惰)。 这意味着,在PureScript和Haskell之间,Eta减少的工作方式不同(在边缘情况下)。考虑以下示例:
如果我打电话
但如果我用PureScript写的话,那就意味着每次调用
为了打电话
但是如果扩展实例字典,则在其自身构造过程中不需要实例字典,而仅在以下情况下需要实例字典:
-你可能会愤怒地问。
针对您的评论:
对于Eta扩展的情况,JavaScript将如下所示:
这实际上是编译器中的一个bug(很抱歉,我现在找不到GitHub问题),补丁只是简单地禁止这种模式,只允许Eta扩展的情况,如您所见,在这种情况下
|