2017-11-13 7 views
0

개체 클래스의 역할을하는 프로 시저를 만들려고합니다. 자신의 속성과 메소드를 갖는 것. 나는 변수에 바인딩 될 수있는 make-list 프로 시저 (L1 (make-list) 정의)를 만들려고 노력하고 있지만, 로컬 목록에있는 저장된 목록 인 특성 local-list를 구현하는 데 문제가 있습니다. 변수 L1. 내가 어떻게 바뀌 었는지에 상관없이 나의 문제 ('로컬 목록을 정의 (1 2 3 4)) - 난 항상 당신이있어 내 인쇄 목록 절차개체처럼 작동하는 프로 시저 만들기 - Scheme

(define (make-list) 
    ;;Helper procedures 
    (define (print-list list) 
     (if (eq? list '()) 
     (display "Empty") 
     (begin (car list) 
      (print-list (cdr list))))) 
    (begin 
     (define local-list '(1 2 3 4)) 
     (lambda (x) 
     (cond 
      ((eq? x 'size) 
      (begin 
      (display "L1: ") 
      (newline) 
      (local-list) 
      (print-list (local-list)))) 
      (else #f))) 

답변

0

에 빈 얻을 아주 가까이

(define (make-list) 

    ;;Helper procedures 
    (define (print-list list) 
    (if (eq? list '()) 
     (display "Empty") 
     (begin (displayln (car list)) ; <-display missing 
       (print-list (cdr list))))) 
    ; no begin here 
    (define local-list '(1 2 3 4)) 

    (lambda (x) 
    (cond 
     ((eq? x 'size) 
     (begin 
     (display "L1: ") 
     (newline) 
     (print-list local-list))) ; <- no call to local-list (2x) 
     (else #f)))) 

테스트

> (define L1 (make-list)) 
> (L1 'size) 
L1: 
1 
2 
3 
4 
Empty 
>