0
我試圖修改下面的函數來編寫Scheme中的兩個函數。函數組合在方案中
(define (compose F1 F2)
(eval F1 (interaction-environment))
)
而不是
(define (compose f g)
(λ (x) (f (g x))))
但我不知道如何使用eval。
我試圖修改下面的函數來編寫Scheme中的兩個函數。函數組合在方案中
(define (compose F1 F2)
(eval F1 (interaction-environment))
)
而不是
(define (compose f g)
(λ (x) (f (g x))))
但我不知道如何使用eval。
從你的建議,我想你想使用Scheme的宏/預處理功能。 eval
不適用於代碼轉換。組合物可以°
方案被定義爲
(define (° f g)
(lambda (x) (f (g x))))
或
(define-syntax °
(syntax-rules()
((° f g)
(lambda (x) (f (g x))))))
其中表達式f
g
和的元數爲1
(define (plus-10 n) (+ n 10))
(define (minus-3 n) (- n 3))
(display
(map (° plus-10 minus-3)
(list 1 2 3 4)))
在編譯時的map
表達式變爲
(map (lambda (x) (plus-10 (minus-3 x)))
(list 1 2 3 4))
equal?
小號
(list 8 9 10 11)
什麼是你期待發生什麼? – deltab
你爲什麼要使用'eval'? – molbdnilo
如果你有兩個函數參數,'eval'沒有任何意義。 – Sylwester