4
我有两个函数f和g,我试图return f(g(x))
但我不知道x的价值,我不知道如何去做这件事。OCaml:没有定义值的卷曲
更具体的例子:如果我有功能f = x + 1
和g = x * 2
和我试图return f(g(x))
我应该等于(x*2) + 1
我有两个函数f和g,我试图return f(g(x))
但我不知道x的价值,我不知道如何去做这件事。OCaml:没有定义值的卷曲
更具体的例子:如果我有功能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>
每个, '一个,' B“,c是抽象类型;我们不在乎它们是什么,它们只需要在定义中保持一致(因此,g
的域必须在f
的范围内)。
let x_plus_x_plus_1 = compose (fun x -> x + 1) (fun x -> x * 2)
非常感谢您的帮助!但是我还有一个问题,那就是我们被允许在没有为x指定一个值的情况下调用compose? – nicotine 2010-04-29 05:59:38
函数返回函数。 HOF! – ygrek 2010-04-29 06:54:44
也许正在发生的事情在写出来的时候会更清晰一些,但是这些程序是完全一样的东西(一个是另一个的语法糖,我不确定是哪一个)。调用'compose f g'不需要'x'的值,因为'compose f g'不使用'x':它构建并返回一个函数。 – 2010-04-29 08:26:34