我有两个函数 f 和 g,我正在尝试 return f(g(x))
但我不知道 x 的值,我不确定如何去做。
一个更具体的例子:如果我有函数 f = x + 1
和 g = 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/