gpt4 book ai didi

functional-programming - OCaml 柯里化(Currying)/多参数

转载 作者:行者123 更新时间:2023-12-04 08:43:20 25 4
gpt4 key购买 nike

我有一个简单的功能:

 let rec ap x y = if x < 10 then 12 else ap((x-1) (y));;

但我不断收到的错误是:
Error: This expression has type int
This is not a function; it cannot be applied.

我已经坚持了 2 个小时了,我不知道为什么这不起作用?

我也只是简化了函数,因为在我实际的 ocaml 代码中,问题归结为这个。我不确定这是否与 curry 有关,但有人可以解释为什么会这样吗?

最佳答案

OCaml 编译器认为您将 (x-1) 应用于 ((x-1) (y)) 中的 (y)。这就是您收到错误消息的原因:“此表达式的类型为 int。这不是一个函数;它不能被应用。”

实际上,你必须写成 ap (x-1) (y),因为 ap 有两个参数。

请记住,在 OCaml(或其他 Hindley-Milner 派生语言:SML、Haskell)中,与类似 C 的语言相比,应用函数和服务于不同的目的不需要括号。

关于functional-programming - OCaml 柯里化(Currying)/多参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21222073/

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