문제

나는 Macintosh에서 drscheme을 사용하여 "The Little Schemer"라는 책에서 체계를 배우려고 노력하고 있습니다. "L의 차는 무엇입니까? L은 논쟁 (ABC)입니까?"

이 질문에 대한 답은 A임을 이해하지만 실제로 "따라야 할"DR Scheme에 무엇을 입력 해야하는지 알 수는 없습니다. > (def l ( 'a'b'c))와 같은 l에 할당하는 방법에 대한 간단한 아이디어

"기능 호출 : 열린 괄호 후에 정의 된 이름 또는 원시 작동 이름을 기대했지만 다른 것을 찾았습니다."

도움이 되었습니까?

해결책

무언가를 정의하려면 :

(define <name> <value>)

그래서 l을 정의하려면 :

(define l '(a b c))

이것은 정의됩니다 l 목록으로 (a b c). 단일 인용문은 상징이든 목록이든간에 그 뒤에 무엇이든지 인용합니다. 즉, 평가되지 않았지만 AS-IS를 읽습니다. 너 ~하지 않다, 그러나 당신이 설정 한 이름을 인용하십시오. 고맙게도, 이것은 당신 이이 불일치가있는 체계에서 매우 적은 수의 운영 중 하나입니다.

다른 팁

이 시도:

(define l '(a b c))

여기에서 견적은 전체 목록에 적용됩니다 (a b c).

아니면 그냥 사용하십시오

(car '(a b c))

오류가 말하는 것은 다음과 같습니다. 독자가 목록을 볼 때 목록의 첫 번째 요소를 함수로 취급하려고합니다. 그게 방법입니다 (+ 1 2 3) 작품 : 기능을 호출합니다 +. (엄격히, 그것은 기호를 본다 '+ 그리고 그에 대한 기능이 있다는 것을 알게 된 다음 해당 기능을 호출합니다.)

따라서 입력 할 때

(define l ('a 'b 'c))

내부 목록을보고 함수를 찾고 싶습니다. 대신 이름이 지정된 기호를 찾습니다 a. 기능이 없으므로 오류가 발생합니다. 대신 입력하면

(define l '(a b c))

당신은 인용문을 통해 독자에게 그것을 해석하지 않고 목록으로 취급해야한다고 말했습니다.

다음은 Mac의 MIT Scheme의 예입니다.

1 ]=> (define li '(a b c))

;Value: li

1 ]=> (car li)

;Value: a

1 ]=> (car '(a b c ))

;Value: a

비각 형태의 형태

(define l '(a b c))  

~이다

(define l (quote (a b c)))  

또는이 경우에도 :

(define l (list 'a 'b 'c))  

"목록"부분이 없으면 a를 실행하려고합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top