EoPL reading (103) 2.3 Representation Strategies for Data Types

Exercise 2.14

書き方が難しい。ってかそれ以前の問題もあったりなんかします。
ざっくりな理解として

  • empty-stack 手続きは constructor
  • push 手続きは constructor
  • pop 手続きは constructor
  • top 手続きは observers
  • empty-stack? 手続きは observers

かなぁ。仕様を書くのはここでは違う意味で手間なので実装を以下に。
# 試験してません

(define empty-stack '())
(define push (lambda (s env) (cons s env)))
(define pop (lambda (env) (cdr env)))
(define top (lambda (env) (car env)))
(define empty-stack? (lambda (env) (null? env)))

あ、top 手続きは empty-stack? なチェックが必要だな。
# pop もか

なんか違うな。2.3 はきちっと読まんとダメそげ。