질문 제목이 약간 혼란스러운 경우 사과드립니다. 어쩌면 당신이 그것을 읽고 나면 더 나은 타이틀을 제안 할 수 있습니다.Scheme : if 문에서 #t를 사용할 수 없습니다.
온라인 과정의 숙제 중 하나 인 mit-scheme
에 반복 수식을 작성하여 1에서 주어진 숫자로 표시하십시오.
아래의 코드는 잘 작동 :
(define (count2-iter num)
(define (iter counter)
(cond ((> counter num) #t)
(else (display counter)
(iter (+ counter 1)))))
(iter 1))
출력 :
1 ]=> (load "count2-iter.scm")
;Loading "count2-iter.scm"... done
;Value: count2-iter
1 ]=> (count2-iter 10)
12345678910
;Value: #t
가 개인적으로 난 단지
cond
2 가지를 사용하여 좋아하지 않는 나는 이것에 대한
if
을 사용하려고했습니다.
(define (count2-iter1 num)
(define (loop idx)
(if (> idx num)
#t
((display idx)
(loop (+ idx 1)))))
(loop 1))
출력 : 왜이
1 ]=> (count2-iter1 5)
5
;The object #!unspecific is not applicable.
;To continue, call RESTART with an option number:
; (RESTART 2) => Specify a procedure to use in its place.
; (RESTART 1) => Return to read-eval-print level 1.
입니까? cond
에서와 같은 방식으로 #t 평가해야하지 않습니까? 제가 Scheme에 대해 아직 익숙하지 않아서 설명을 정말 고맙게 생각합니다.
+1하지만 개인적으로 나는 그 상태를 뒤집을 것이 훨씬 자연 스럽다고 생각합니다. 더 좋은 점은'when' 또는'unless' 형태로 else 브랜치가 없다면 말입니다. – djf
감사합니다 ... 나는 몇 시간 전에 시작해서 cond를 쓰지 만 그곳에는 암시 적이라는 것을 결코 알지 못했습니다. –