2014-12-03 4 views
0

참고로 Scheme을 사용하여 DrRacket을 사용하여 프로그래밍 중입니다. 나는 다음과 같은 오류 메시지가 프로그램을 실행하면Scheme - 비어 있지 않은 목록이 예상 됨

는 :

check-expect encountered the following error instead of the expected value, 
(list false true true true). 
    :: first: expects a non-empty list; given: string? 

를이 코드가 잘 실행해야합니다 보인다 나는 문제가 무엇인지 모르겠습니다.

;; Signature: mymap: (x -> y) listofX -> listofY 
;; Purpose: Consumes a function from X –> Y, and a list of X; returns a list of Y; 
;;   by applying the function to each item in the list of X. 

(define (mymap g alist) 
    (cond 
    [(empty? alist) empty] 
    [else 
    (cons (g (first alist)) 
      (mymap (rest alist) g))] 
    ) 
) 

;; define 2 other functions using mymap and write 
;; one check-expect for each of these functions 

(check-expect (mymap string? (list 1 "ab" "abc" "")) (list false true true true)) 
(check-expect (mymap sqr (list 1 0 -3 4 -5)) (list 1 0 9 16 25)) 

(define (C2F c) 
    (+ (* 9/5 c) 32)) 

(define (cf* alist) 
    (mymap alist C2F)) 

(check-expect (mymap C2F (list 100 0 -40)) (list 212 32 -40)) 

감사합니다.

 (mymap g (rest alist)))] 

대신

BBladem83 @
 (mymap (rest alist) g))] 

답변

3

당신은 사용 mymap에 재귀 호출의 매개 변수를 반전 당신이 진짜 문제를 실현하면 또한, 돌아가서 다시 읽기 오류 메시지가 다시 나타납니다. 오류 메시지의 내용을 이해했는지 확인하십시오. 이것은 당신이 확실히 이런 종류의 실수를 반복 할 것이기 때문에 앞으로 도움이 될 것입니다. 나는 내가하는 것을 안다. : P DrRacket에서 실행중인 경우 오류 메시지를 클릭하면 커서가 문제의 라인으로 이동합니다.
+1

의 : – dyoo