📝Clojure設計思想

📝Clojure設計思想

refs: 🏷Clojure 📝Clojureモチベ

Clojureの設計思想についてまとめる. できるだけ他者の意見を集め, それに対する考察は Clojure考察 でまとめる.

Index #

このメモではなく他のメモに書いた情報を 🏷Clojure Way のタグでまとめる.

Simple made Easy #

おそらく最も有名なフレーズ?

Lisp Reloaded #

Lisp本来の力を持ちながらLispの歴史に成約されない.

JVMに対する圧倒的な信頼 #

OSではなくVMが未来のプラットフォームである.

Code is data, data is code #

aka. LISPの思想. homoiconicity.

Clojureは不定であり不変 #

Clojureにおいて値は immutable であり persistent である.

Prefer data over fucntions #

データ > 関数 > マクロの順に選択する.

Make Your Data Visible #

ref: Thinking in Data

データの非公開は不要, なぜなら不定だ. カプセル化はミュータブルな世界の産物.

🏷カプセル化

💡preferring to build a large library of functions on a small set of types #

単純なデータ型とそれを操作する関数群を好む.

ref. Clojure - マルチメソッド(multimethod)と階層

Clojure は状況ごとに新しいデータ型を定義するような伝統的オブジェクト指向のアプローチを避け、代わりに少ないデータ型に対する関数群からなる巨大なライブラリを構築することを好む。

しかしながら、Clojureも柔軟で拡張可能なシステムアーキテクチャを可能にするランタイムポリモーフィズムの価値は認識している。Clojureはタイプ、値、属性と引数のメタデータ、ひとつ以上の引数の関連性によるディスパッチをサポートするマルチメソッドシステムを通して洗練されたランタイムポリモーフィズムを提供する。


これは Thinking in Data の考えに似ている. つまりOOPの人はすぐにドメインごとに無数のオブジェクトを作りたがるが, 素でマッチョな力があるMapをつかえ, ということかな.


ref. 📝Clojure multimethod

References #

Clojureの設計思想を探るにはYoutubeに投稿されているClojure Conjの動画をみるのもいいかも. たくさん動画がある.

このClojure界隈では Rationale という用語をよくつかっている. おそらくRich Hickeyが多様しているのかな?