タグ

2018年5月23日のブックマーク (1件)

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

    Clojure は状況ごとに新しいデータ型を定義するような伝統的オブジェクト指向のアプローチを避け、代わりに少ないデータ型に対する関数群からなる巨大なライブラリを構築することを好む。しかしながら、Clojureも柔軟で拡張可能なシステムアーキテクチャを可能にするランタイムポリモーフィズムの価値は認識している。Clojureはタイプ、値、属性と引数のメタデータ、ひとつ以上の引数の関連性によるディスパッチをサポートするマルチメソッドシステムを通して洗練されたランタイムポリモーフィズムを提供する。 Clojureのマルチメソッドは ディスパッチ関数 と一つ以上の メソッド で定義される。 defmulti を使用してマルチメソッドを定義する場合、ディスパッチ関数を与える必要がある。この関数が ディスパッチ値 の生成のためにマルチメソッドの引数に適用される。マルチメソッドはその後ディスパッチ値、も

    ilyaletre
    ilyaletre 2018/05/23
    このkeyword上にsemanticsを集めていく感じ好き。