2013-07-07 Clojureの基礎 〜プロトコル・データ型・レコード〜 Lisp Clojure 今更ながら、Clojureの基礎メモ。 今回は独自型定義周りを。 プロトコル 概要 Javaのインタフェースの代替(より柔軟である) 既に定義済みのデータ型(およびクラス)に、(そのソースコードの変更なしに)プロトコルを追加できる プロトコルのメソッドは名前空間で管理されるため、プロトコル間の名前衝突を気にする必要はない 記法 プロトコルの定義:defprotocolマクロ データ型(およびクラス)へのプロトコル追加:extend関数、extend-typeマクロ(少し見易い)、extend-protocolマクロ(複数のクラスへのプロトコル追加を一塊で記述) データ型 概要 Javaのクラスの代替 デフォルトで変更不可 メソッド定義は、プロトコル(あるいはインタフェース)経由で行う必要がある 記法 データ型の定義:deftypeマクロ 無名データ型の定義:reifyマクロ Javaクラスの継承(extends):proxyマクロ レコード 概要 ある特徴をもったデータ型 具体的には、PersistentMapを実装したデータ型、つまり「プロトコルを実装できるマップ」である マップなので、assocおよびupdate-ibで操作できる なお、Clojureでは領域固有の情報はマップでモデリングすることが推奨されているので、そのような場合に用いることができる 記法 レコードの定義:defrecordマクロ 参考 プログラミングClojure 第2版作者: Stuart Halloway and Aaron Bedra,川合史朗出版社/メーカー: オーム社発売日: 2013/04/26メディア: 単行本(ソフトカバー)この商品を含むブログ (11件) を見る