我正在尝试实现类似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