使用序列我的價值序列,我想申請到部分功能:上部分應用程序
let f a b c d e= a+b+c+d+e
let items = [1,2,3,4,5]
let result = applyPartially f items
Assert.Equal(15, result)
我的applyPartially功能之後尋找。我曾嘗試寫這樣的遞歸函數:
let rec applyPartially f items =
| [] -> f
| [x] -> f x
| head :: tail -> applyPartially (f head) tail
我所遇到的問題是,F型是在我的迭代「A - >」的開始乙 - >「C - >」 D->」 e,並且對於每個循環它都應該消費一個訂單。
'a->'b->'c->'d->'e
'b->'c->'d->'e
'c->'d->'e
'd->'e
這意味着我能想到的下界面是'd - >'e。我怎麼能隱藏我的函數的複雜性,以便在遞歸函數中只顯示'd - >'e?
非常感謝,我會讀這個明天,我的大腦傷害的那一刻! :) – Watson
我不是專家,但可以讓f = NeedsMore(好玩的 - >需要更多(好玩的b - > NeedsMore(fun c - > NeedsMore(fun d - > NeedsMore(fun e - > Completed(a + b + c + d + e)))))被封裝在一個計算表達式中? – Watson
@Watson好主意,是的,我想可能是!雖然我猜這不會使代碼_that_比明確的版本更好... –