compose功能首先應用最後一個功能,即它以相反的順序應用發送的功能。例如:反轉撰寫功能中的功能用法
((compose sqrt add1) 8)
上面會ADD1到8,然後找到SQRT 9.
欲因此創建該第二個第一施加第一發送功能,並且然後,一個mycompose功能第三等,在上面的例子中,首先應用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