문제
운동으로서 나는 람다 가이 같은 것을 함수로 정의하려고 시도하고있다 :
(define let_as_lambda
(lambda (var)
(lambda (value body)
(var body) val)))
.
와 나는 이렇게 전화하기를 희망합니다 :
((let_as_lambda a) (3 (+ a 2)))
.
그러나 바운드 변수를 통과 할 수있는 방법은 없습니다 (이 경우 "A")는 함수의 인수로서 "a").(나는 그것이 조금 이상한 것처럼 보이지만 함수를 반환하는 let_as_lambda (var)가 필요합니다.)
누구 든지이 작업을 수행하는 방법을 보여줄 수 있습니까?모든 조언을 높이 평가합니다.
사실,이 람다와 동등한 표현식을 사용하는 것 :
(let ((p1 v1) (p2 v2)...) body) = ((lambda (p1 p2...) body) v1 v2...)
.
이 일을 할 수 없습니다 :
(define let_as_lambda
(lambda (var val body)
((var body) val)))
.
라고 불리는 : (let_as_lambda a 3 (+ a 2))
동일한 불만 사항을 없음 :
정의 전에 식별자에 대한 참조 : a
해결책
let
is a syntatic extension defined in terms of lambda
. I don't think you can define it as a function. Take a look at the example from The Scheme Programming Language
제휴하지 않습니다 StackOverflow