関数のリストであるリスト 'L'を取る関数 'Compose'を定義する必要があります。リスト内のすべての関数に適合するパラメータを指定すると、最後の関数はこのパラメータを使用してそれ自身を評価します。結果は2番目の最後の関数に渡されます。リストの最初の項目(関数)に到達するまで、最終結果が得られます。関数リストの関数の構成!
など。
Compose((fn N→N + 1)^(fn N→2 * N)^#)3。
が、私は私の大学で講師によって考案されたSAL(簡単な応用的言語)と呼ばれる関数型プログラミング言語(上記したがって、変な構文でこれを記述する必要が答え7.を与える(^リスト項目と#マークをseperatesリストの終わり))。
擬似コードで記述できる解決策があれば、私はループや変数などを使用することはできません。どうやら解決策は1行の答えです。私はそれが再帰を含むと想像しています(私たちのタスク関数の99%が!)。
また、私はハスケル(私は学ばなくてはならないだろうと思う)を理解していないので、擬似コードや普通の英語ですら大丈夫です。 -
ありがとうございます。 Haskellでは
、$は不要であり、そのため、あなたはそれが好きpointfree書きたいと思うかもしれませんこれは: 'compose = foldl(flip(。))id'です。 – HaskellElephant
コメントをいただきありがとうございますが、これは本当に私の解決策ではありませんでしたが、私が投稿したリンクからコピーしました。 –
適切なセマンティクスを持っていれば、この折りたたみ式の方が一般的にははるかに優れています。 – dfeuer