我正在尝试实现类似pipe
功能的东西。
输入:函数列表
输出:一个函数
例子:
# pipe [(fun y -> y+5);(fun y -> y*3)] 1 = 18
# pipe [(fun z -> z*3);(fun z -> z+5)] 1 = 8
我的问题:
辅助函数composite
有两个参数,一个函数f
和一个函数列表l
。如果列表为空,则返回函数f
。如果不是,f
将是 list 头部的参数g
。但是,我遇到了语法错误。我不知道发生了什么事。有没有人发现错误?
let pipe l =
let composite f l = match l with
[]->f
| g::gs -> (fun h -> (g -> f)) in
List.fold_left composite (fun x -> x) l