我試圖從參數創建一個lambda這樣(apply (make-lambda '(a b) '(+ a b)) '(1 2))
回報3
這是從計劃中的兩個列表創建lambda的正確方法嗎?
我第一次嘗試(define (make-lambda params func) (lambda params func))
回報(+ a b)
此代碼的工作,但感覺不對我說:(define (make-lambda params func) (eval (list 'lambda params func)))
什麼正確這樣做的方式?
是這是在它運行的方案環境中使用還是這是您正在編寫的方案解釋器的一部分?這兩個將需要不同的答案.. – Sylwester
我傾斜計劃,並希望確保我的解決方案不醜。 –
您給我的印象是您需要在運行時製作程序。 'eval'是唯一能做到這一點的構造。通常使用這個和eval對優化有很大的影響,所以如果你給我們一個例子說明你如何使用它,我們可能會提出一個更好的解決方案。通常使用lambda和更高階函數的閉包就足夠了。 – Sylwester