【发布时间】:2017-10-25 04:54:34
【问题描述】:
我只知道部分应用程序很简单,而且它可以(并且确实,对于 Haskell)可以简化语法?
【问题讨论】:
我只知道部分应用程序很简单,而且它可以(并且确实,对于 Haskell)可以简化语法?
【问题讨论】:
主要优点是使部分函数应用更方便,从而鼓励函数组合。
一个缺点是它与您可能想要的一些其他语言功能不太匹配,例如标记、可选和可变参数。让它工作当然不是不可能的,例如 OCaml 有标签和可选参数,但它变得古怪。你怎么知道一个函数是部分应用的,还是完全应用的,只是没有应用可选参数? OCaml 的解决方案是假设部分应用,并要求函数以非可选参数“终止”,以便能够在不指定所有可选参数的情况下完全应用。
如果语言不纯并且具有某种形式的类型推断,则会出现另一个缺点。然后可以部分应用一个有副作用的函数,丢弃该值而不会注意到类型不正确,从而永远不会发生副作用。一种语言出现此类错误的可能性取决于其类型推断,但在 OCaml 等语言中,这是一个相当常见的初学者错误。但是,可以通过使用类型注释来避免这种情况。
【讨论】: