Loading article…
コンピュータプログラミングにおいて、述語ディスパッチは多重ディスパッチ(「マルチメソッド」)の一般化であり、メソッド宣言に付加された任意の決定可能な論理述語やパターンマッチングに基づいて、実行時に呼び出すメソッドを選択できるようにします。 [1] [2]
Rakuは、任意の関数またはメソッドパラメータに対して任意のコードを実行できる「where」句を使用した述語ディスパッチをサポートしています。[3]
Julia にはPatternDispatch.jlを含むパッケージがありますが、それ以外はネイティブで複数のディスパッチをサポートしています。
Common LISP [ 4 ] [5]およびJava (JPred [2] )用の実験的な実装が作成されています。
以前に宣言されたメソッドを細かいレベルでオープンに拡張できますが、異なる開発者によって作成された、述語が同一または重複する複数の拡張が、予期しない方法で相互に干渉する可能性があります。この点では、アスペクト指向プログラミングに似ています。
参考文献
- ^ Millstein, T. 実用的な述語ディスパッチ(PDF) . OOPSLA '05.
- ^ ab Millstein, T.; Frost, C.; Ryder, J.; Warth, A. (2009). 「Java の表現力豊かでモジュール化された述語ディスパッチ」. ACM Transactions on Programming Languages and Systems . 31 (2): 1. CiteSeerX 10.1.1.212.4268 . doi :10.1145/1462166.1462168. S2CID 2150617.
- ^ 「クラス Signature」 。2020年 7 月 7 日閲覧。
- ^ 「Common Lisp オブジェクト システムにおける述語ディスパッチ」(PDF)。
- ^ "pcostanza/filtered-functions". GitHub . 2016年4月7日閲覧。
外部リンク
- C2 wiki: 述語ディスパッチ
