2 つの関数を組み合わせて 1 つの関数として出力する方法を見つける必要があります。
関数のリストを取り込んで、を使用して('a->'a) list
関数を出力する次のコードがあります。('a->'a)
List.fold_left
基本的なケースは把握しましたが、2 つの機能を組み合わせる方法はたくさん試しました。出力のタイプは('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