function - OCaml:没有定义值的柯里化(Currying)

标签 function ocaml return currying

我有两个函数 f 和 g,我正在尝试 return f(g(x))但我不知道 x 的值,我不确定如何去做。

一个更具体的例子:如果我有函数 f = x + 1g = x * 2我正在尝试 return f(g(x))我应该得到一个等于 (x*2) + 1 的函数

最佳答案

看起来你说得对,f(g(x))应该可以正常工作。我不知道你为什么有一个 return那里的关键字(它不是 ocaml 中的关键字)。这是一个正确的版本,

let compose f g x = f (g x)

这个的类型定义是,
val compose : ('b -> 'c) -> ('a -> 'b) -> 'a -> 'c = <fun>

每个,'a,'b,'c 都是抽象类型;我们不在乎它们是什么,它们只需要在定义中保持一致(因此,g 的域必须在 f 的范围内)。
let x_plus_x_plus_1 = compose (fun x -> x + 1) (fun x -> x * 2) 

关于function - OCaml:没有定义值的柯里化(Currying),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2734629/

相关文章:

C 程序没有进入任何 for 循环?

c - 函数调用中的连线错误

java - 几乎相同的语句,但不同的值

c - 不使用print语句给出输出

c++ - 多个返回语句或 "goto end;"

javascript - 如何 chop JavaScript 方法中列出的变量?

function - 整数函数结果 - "Value assigned to ' [函数名称 ]' never used"

OCaml 格式库的 Haskell 等效项

ocaml - 如何理解这个 "with"?

json - 使用可用的库 (Yojson) 启动交互式 OCaml session