함수에 대한 수학적 람다 표기법을 사용하여 letrec를 구현하려고하는데 어려움을 겪고 있습니다. 내 임무는하자가 p(e1) U (p(e2) - {x})
으로 정의 될 수 있으며, 내가 성공적으로 발현 freevars을 찾을 수 있도록 구현했습니다 (p(e1) - {f x}) U (p(e2) - {f})
로 그 letrec 정의 할 수 있다고,하지만
let, letrec, let *의 차이를 고민하고 있습니다 ... 스키마가 제 1 차 프로그래밍 언어가 아니기 때문에 제 메모리는 오랜 시간 동안 존재하지 않습니다 .. 이 함수가 있습니다. 지금 나는 letrec과 매우 혼란 스럽다. 이것은 다시 재귀이다. 나는 이해할 수있다. 그러나이 코드에서 연결을 충분히 할 수는 없다. (어쩌면 여전히 재귀에 대해
나는 차이가합니다 (인위적인 예를 들어 죄송합니다) 사이에 이해하지 않습니다 (define average
(lambda (elems)
(define length
(lambda (xs)
(if (null? xs)
0
(+ 1 (length (cdr xs))))))
(define sum
나는 다음과 같은 식을 0으로 평가하기위한 것입니다 말씀 드리했지만 제도의 많은 구현은 1로 평가 : (let ((cont #f))
(letrec ((x (call-with-current-continuation (lambda (c) (set! cont c) 0)))
(y (call-with-current-continuation (lam