我需要找到一种方法来组合两个函数并将它们作为一个输出。
我有以下代码,其中接受函数列表,('a->'a) list
然后('a->'a)
使用List.fold_left
.
我想出了基本情况,但我尝试了很多方法来组合两个功能。输出应该具有类型('a -> 'a) list -> ('a -> 'a)
。
示例输出:
# pipe [] 3;;
- : int = 3
# pipe [(fun x-> 2*x);(fun x -> x + 3)] 3 ;;
- : int = 9
# pipe [(fun x -> x + 3);(fun x-> 2*x)] 3;;
- : int = 12
功能:
let p l =
let f acc x = fun y-> fun x->acc in (* acc & x are functions 'a->'a *)
let base = fun x->x in
List.fold_left f base l