2017-11-13 16 views
0

オブジェクトクラスとして機能するプロシージャを作成しようとしています。独自の属性やメソッドを持つなど。私は変数にバインドされるメイクリストプロシージャを作成しようとしています(L1(メイクリスト)を定義します)。しかし、ローカルの属性リストを実装する際に問題があります。変数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 
> 
関連する問題