compose関数は最後の関数を最初に適用します。つまり、送信関数を逆の順序で適用します。たとえば:合成関数の関数の使用を逆転する
((compose sqrt add1) 8)
上記は8にADD1、その後、私は、そこで第一、第二、最初の機能を送り、適用さmycompose機能、第三などを作成したい9.
の平方根を見つけるだろう上記の例では、sqrtを最初に適用してからadd1を適用する必要があります。次のように管理することができます:
(define (mycompose L arg)
(let loop ((L L)
(res arg))
(cond
[(empty? L) res]
[else (loop (rest L) ((car L) res))])))
(mycompose (list sqrt add1) 8)
私は確かに良い方法があります。特に、マクロを使って上記のことを達成できますか?また、ターンごとに複数の引数を各関数ターンに送ることができますか?
マクロを使わずにすべての要件を満たす '(define(mycompose。fs)(apply compose(reverse fs))'として関数を実装することができます。 –
もっと良い方法があると分かりました。ありがとう。 – rnso