let, letrec, let *의 차이를 고민하고 있습니다 ... 스키마가 제 1 차 프로그래밍 언어가 아니기 때문에 제 메모리는 오랜 시간 동안 존재하지 않습니다 .. 이 함수가 있습니다. 지금 나는 letrec과 매우 혼란 스럽다. 이것은 다시 재귀이다. 나는 이해할 수있다. 그러나이 코드에서 연결을 충분히 할 수는 없다. (어쩌면 여전히 재귀에 대해 혼란스러워 할 것이다.) 왜 여기에 letrec가 필요한지 설명 할 수있다letrec, Scheme의 혼동
(define myFunc
(lambda (start end res func)
(letrec ((func:rec_func
(lambda (x i y)
(if (>= i start)
(func:rec_func (cons i x) (- i res) (cons (func i) y)) ;; line6
(cons x (cons y '())))))) ;; line7
(func:rec_func '() end '()))))
(편집) 는 내가 이해가 꼬리 재귀의
-> [Q1] 꼬리 재귀가 있습니까?
-> [Q2] 그런 다음 꼬리 재귀를 위해 항상 letrec을 사용해야합니까? 예 다음 행한다면
이 함수 개시 경계 Y X의 목록을 반환 단부 그래서 그것은 인덱스를 검사 나 내부 경계 6
된다 -> [Q3 그리고, 무엇 LINE6을 수행 ? 내 기억이 맞다 func:rec_func
의 몸 자체를 의미하기 때문에,이 구조는 letrec
보다는 let
또는 let*
이 필요한 경우 내가 LINE6에게