MzSchemeで構造体

リストで構造体作るのが面倒なので、MzSchemeの構造体を試します。

ドキュメントはここら辺。
PLT MzScheme: Language Manual

構造体の定義

(define-struct book (title jp-title))

ふむふむ。(define-struct 構造体名 (フィールド))。

新規作成

うはナンダコレ。make-構造体名で構造体に新規データを作れる。

(define sicp
  (make-book "SICP"
             "計算機プログラムの構造と解釈"))

らくちん。

アクセサ

なんも定義してないけどアクセサまで作られちゃいます。スゲェ。構造体名-フィールド名でアクセス

(book-title sicp)    ; SICP
(book-jp-title sicp) ; 計算機プログラムの構造と解釈

頭いい。

set!

構造体なので、set!があると嬉しい。set-構造体名-フィールド名!でset!

(set-book-title! sicp "Structure and Interpretation of Computer Programs -- 2nd ed.")
(book-title sicp) ; Structure and Interpretation of Computer Programs -- 2nd ed.

完璧。

継承

おいおい。クラスじゃねーぞー。構造体の粋を遥かに上回ってます。

(define-struct (sub-book book) (ISBN))
(make-sub-book "K&R" "プログラミング言語C" 'ISBN1-23456-789-1) ; #<struct:sub-book>

凄すぎデス。

まとめ

やばい。らくちん過ぎる。