関数を引数としてflist取り、引数がリストになるが、とまったく同じように動作する別の関数を返す関数を作成したいと思います。ff
例えば:
let f x1 x2 x3 = x1+ x2 + x3
この振る舞いが欲しい
(flist f) [x1,x2,x3] = x1+x2+x3
リストの長さが3でない場合は、何らかの方法で動作する可能性があります。flistすべての関数を処理する必要があります(3つの引数を持つ関数だけでなく、if g x1 x2 x3 x4 = x1+x2+x3*x4、then (flist g) [x1,x2,x3,x4] = x1+x2+x3*x4)。
私はこれを試しました、
flist f [] = f
flist f (x:xs) = flist (f x) xs
しかし、それは機能していません。どうすればこれを達成できますか?これを行うためにデータ型を使用できますか?