2017-03-26 3 views
0

Dr. Racket이 v6.8로 업데이트되었습니다. AFAIK 전무는 언어 구조의 키워드이며, 정의 블록을 실행하는 경우 언 바운드 식별자drracket v6.8 언 바운드

#lang racket 

(define (enumerate-interval low high) 
    (if (> low high) 
     nil 
     (cons low (enumerate-interval (+ 1 low) high)))) 

으로 정확한 오류 메시지가 불평해서는 안 :

nil: unbound identifier in module in: nil 

은 V6와 다른이 무엇인가입니다. 8?

답변

1

nil에서 R4RS의 출시가 표준의 일부가 아니기 때문에. PDF을보고 언어 변경 사항이있는 38 페이지를보십시오.

#lang racket은 원래 R5RS 였지만 오늘날에는 완전히 다른 방언으로 발전했습니다. 따라서 Scheme에서 Racket으로 이름이 바뀌 었습니다. 빈 목록 리터럴 인 '() 또는 그 대신에 nullempty 바인딩 중 하나를 사용해야합니다. emptyracket/base이 아니므로 racket/list이 필요하거나 #lang racket을 사용하면 더 큰 바인딩 세트를 사용할 수 있습니다. 당신이 정말로 빈리스트를 나타내는 글로벌 바인딩으로 nil을 사용하려면

당신은 스스로를 정의 할 수 있습니다

(define nil '()) 

는 그러나, commonlisper이 거짓 값 #f와 그 실수 있습니다.

+0

자세한 답변을 주셔서 감사 드리며, 저는 '()'로 관리했습니다. 감사. –