0
我需要編寫一個Scheme高階函數,它將兩個參數的函數作爲其參數並返回該函數的curried版本。就目前的功能而言,我瞭解到這一點:Scheme,高階函數和curried函數
(define curriedFunction (lambda (x)
(if (positive? x)
(lambda (y z) (+ x y z))
(lambda (y z) (- x y z)))))
(display ((curriedFunction -5) 4 7))
(display "\n")
(display ((curriedFunction 5) 4 7))
如果x爲負數,它會減去x y和z。如果x是正數,則它會添加x,y和z。
在高階函數術語我明白這一點:
(display (map (lambda (x y) (* x y)) '(1 2 3) '(3 4 5)))
第三點我理解這許多在通過功能方面在作爲參數:
(define (function0 func x y)
(func x y))
(define myFunction (lambda (x y)
(* x y)))
(display (function0 myFunction 10 4))
在代碼的正上方,我理解函數「myFunction」也可以這樣寫:
(define (myFunction x y)
(* x y))
所以現在你知道我在Scheme編程和語法方面的位置。 現在回到編寫一個Scheme函數的高階函數的問題,該函數以兩個參數的函數作爲參數,並返回該函數的一個curried版本。我如何將這些概念連接在一起?預先感謝您,我真的很感激它。
哇,倫佐,您提供簡單的例子是真棒!我一直堅持這幾個小時,但你給了我頓悟。我無法向Renzo表示謝意! – Adam
不客氣! – Renzo