'when'의 구현 방식은 무엇이 다른가요?'when'을 함수로 구현할 때와 매크로로 구현할 때의 차이점
(define-syntax when
(syntax-rules()
((_ pred b1 ...)
(if pred (begin b1 ...)))))
비교 예
(define (my-when pred b1 ...)
(if pred (begin b1 ...)))
때 '내-때'는 루프 매크로이 사용된다 :
(define-syntax for
(syntax-rules()
((_ (i from to) b1 ...)
(let loop((i from))
(my-when (< i to)
b1 ...
(loop (+ i 1)))))))
에러가 발생
((i010) (디스플레이 i)에 대해)
; 중단! : 최대 재귀 깊이 함수로 구현 될 수있다 '때'는 내가 생각하지 않지만, 내가 왜 모르는
을 초과 ... 당신이했던 것처럼
멋진 설명! 조건이 참일 때 (loop (+ i 1)) 만 평가되는 이유를 명확히 할 수 있습니까? 내게는 'when'매크로가 if 문에서 루프를 "사용"하지 않는 것처럼 조건이 false 인 경우에만 평가되는 것처럼 보입니다. – wes
@wes 루프는'my-when' 매크로의 ".. :"부분입니다. 편집이 도움이되기를 바랍니다. – molbdnilo