2016-10-08 2 views
0

저는 Scheme을 처음 사용하기 시작했으며, 무엇이 잘못되었는지 잘 모릅니다.Scheme의 if 문을 통해 인수를 전달하면 오류가 발생합니다.

(let ((fn (car last-elem)) 
     (output(if (> (length last-elem) 1) ;or = needed? 
       (cdr last-elem) 
       ('())))) 

(cond ((equal? fn 'dim) (dim output)) 
     ((equal? fn 'print) (print output)) 

이 코드는 문을 생성 한 다음 print, 내 테스트 사례 인 Hello, World!

인쇄가 바로 지금이다 (나중에 내가 새로운 기능을 필요로 할 더 많은 물건이있을 것이다) 그냥이 :와

(define (print args) 
    (display(args)) 
    (newline) 

이 오류 아웃 :

응용 프로그램 :이 아닌 절차; ... [없음] 상황 : : ("안녕하세요, 세계!") 인수 ... : 인수에 적용 할 수있는 절차 주어진 예상 내가 쓰기 트랙라고 생각

을, 내가 얻고 자하는 결과가 "주어진"것에 있기 때문입니다. 하지만 인쇄하기를 바랍니다.

이 오류에 관해서는 몇 가지 다른 질문이 있지만 그 해결책은 아무도 없습니다.

미리 감사드립니다.

+0

'희미한 빛'과 '마지막 - 선거'란 무엇입니까? 질문에 누락 된 절차가 있습니다 –

+0

dim 현재 사용되지 않는, last-elem은 목록의 마지막 요소입니다. 프로그램의 전반적인 목적은 어리석은 기본 통역사가되는 것입니다. 프로그램을 받아 실행합니다. 문제의 프로그램은 "Hello, World!"를 인쇄하는 것입니다. 그래서 내가 다른 모든 것들이 효과가 있다는 것을 확신 할 수 있습니다. 나는 비록 계획에 대해 많이 알지 못한다. 그래서 나는 여기서 대부분 짐작을하고있다. –

+0

그런 다음 사용하지 않는 부분을 제거하여 시작하십시오. 그렇지 않으면 코드가 컴파일되지 않습니다. 현재 범위에 포함되지 않은 변수 나 프로 시저를 참조 할 수 없습니다. –

답변

1

우선은 print 절차는 괄호의 추가 잘못된 설정을 가지고, 그것은 다음과 같이한다 : 당신이 얻을 때

(define (print args) 
    (display args) 
    (newline)) 

이 :; 오류 "응용 프로그램을하지 않는 절차 프로 시저를 기대", 그것은 스키마에서 (f)이 잘못된 것을 의미하는 경우 f을 무효 프로 시저로 적용하면 f 프로 시저가 아닌 경우 오류가 발생합니다.

+0

> (표시 args)이 고정, 그 차이점은 무엇입니까? –

+0

마지막 단락보기 –

+0

감사합니다. –

관련 문제