関数型プログラミング言語(Haskell/F#/ Caml)のパターンマッチング機能を使って同じ値に対して複数回一致させることができるかどうかは不思議でした。パターン一致の同じ値
ちょうど次の例を考える:機能(a
に格納される)2つの類似の値で呼び出されたとき
plus a a = 2 * a
plus a b = a + b
最初の変異体と呼ばれるであろう。
より有用なアプリケーションはこれです(ASTを単純化する)。
simplify (Add a a) = Mult 2 a
しかし、Haskellはこれらのコードを拒否し、a
ため矛盾の定義を私に警告し - 私はチェックがあれば、代わりに関数が同じ値を持っているかどうかを調べるために/明示的なケースを行う必要があります。一致したい変数が複数回現れることを示すためのトリックはありますか?
FWIWでは、Mathematicaがこれをサポートしています。 –