gpt4 book ai didi

function - 一些编程语言如何区分函数和函数指针?

转载 作者:行者123 更新时间:2023-12-01 09:06:13 31 4
gpt4 key购买 nike

我主要谈论的是函数式编程语言。例如,map 的维基百科文章在 Haskell 语言中有这个例子:

map square [1,2,3,4,5]

解析器/编译器如何知道我们要传递函数squaremap作为高阶函数,而不是试图调用函数本身?对于具有静态类型的语言,表达式 square [1,2,3,4,5]显然不会编译,但编译器真的会用它来确定这不是我的意思吗?

或者,这只是 Wikipedia 上的一个坏例子,更好的例子可能看起来像 map &square [1,2,3,4,5] (使用 C 风格的函数引用)?

最佳答案

首先,函数应用程序具有最高优先级。因此,当解析器遇到“map”时,它将把右边的第一件事作为第一个参数。 map 类型需要一个函数作为第一个参数,并且“square”被定义为一个函数,因此类型是兼容的。您可以将 map square 视为一个需要数字列表的函数。

关键是检查类型,并验证参数类型,遵循优先规则。

关于function - 一些编程语言如何区分函数和函数指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7170107/

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