SRFI 100 が提案されています

SRFI 100: define-lambda-object http://srfi.schemers.org/srfi-100/srfi-100.html


コード例。ドキュメントには参考実装も載っているのですが、あえて実装を想像すると楽しいですね。SICP に似たようなのがあったし。

;; The `x' is a mutable required field.
;; The `y' is an immutable required field.
(define-lambda-object ppoint (x) y)

(define pp  (make-ppoint 10 20))
(pp 'x)					=> 10
(pp 'y)					=> 20
(pp 'x 11) (pp 'x)			=> 11
(pp 'y 22)				=> error: immutable field y
(ppoint? pp)				=> #t