3 pointers functional-programming function map higher-order-functions
我主要谈的是函数式编程语言.例如,维基百科的地图文章以Haskell-ish语言为例:
map square [1,2,3,4,5]
如何解析器/编译器知道我们想要的功能传递square到map作为一个高阶函数,而不是试图调用该函数本身?对于使用静态类型的语言,表达式square [1,2,3,4,5]显然不会编译,但编译器是否真的使用它来确定那不是我的意思?
或者,这只是维基百科的一个不好的例子,一个更好的例子可能看起来像map &square [1,2,3,4,5](使用C风格的函数引用)?
首先,功能应用程序具有最高优先级.所以当解析器遇到"map"时,它会将第一个东西作为第一个参数.map类型需要一个函数作为第一个参数,"square"被定义为一个函数,因此类型是兼容的.您可以将map square视为期望数字列表的函数.
关键是检查类型,并根据优先级规则验证参数类型.
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |