2009/05/12

[scheme]stack(大域変数+副作用)

思い切ったstack。

 

Schemeによる記号処理入門」P.39 ~ 40

(define *stack*i
  '())

 

(define push
  (lambda (data)
    (cond
     ((null? *stack*)
      (set! *stack* (list data)))
     (else (set! *stack* (cons data *stack*))))
    *stack*))

 

(define pop
  (lambda ()
    (cond
     ((null? *stack*) 'empty)
     (else ((lambda (x)
              (set! x (car *stack*))
              (set! *stack* (cdr *stack*))
              x)
            '())))))

(push 'one)
(push 'two)
(pop)
(pop)
(pop)


;;処理結果

gosh> *stack*
gosh> push
gosh> pop
gosh> (one)
gosh> (two one)
gosh> two
gosh> one
gosh> empty
gosh>

 

Schemeによる記号処理入門

Schemeによる記号処理入門

posted with amazlet at 09.05.10

猪股 俊光 益崎 真治
森北出版
売り上げランキング: 305671

Amazon.co.jp で詳細を見る

0 件のコメント:

コメントを投稿