我主要谈论的是函数式编程语言。例如,关于map的 wikipedia 文章有这个用 Haskell 语言编写的示例:
map square [1,2,3,4,5]
解析器/编译器如何知道我们想要将函数作为高阶函数传递,而不是试图调用函数本身square
?map
对于具有静态类型的语言,表达式square [1,2,3,4,5]
显然不会编译,但编译器真的会使用它来确定这不是我的意思吗?
或者,这只是 Wikipedia 中的一个坏例子,而一个更好的例子可能看起来像map &square [1,2,3,4,5]
(使用 C 风格的函数引用)?