パターンマッチ

同じパターン変数による同値判定

各言語で試した結果は以下のとおり Erlangの場合 できる > case [1,1,1] of [X,X,X] -> "same"; _ -> "different" end. "same" > case [1,1,2] of [X,X,X] -> "same"; _ -> "different" end. "different" Pureの場合 できる > case [1,1,1] of [x,x,x] = "sa…

無名関数での複数パターンマッチ

できる言語 MLでは以下のように、無名関数の定義時に|で区切って複数のケースのパターンマッチが書ける http://www.geocities.jp/m_hiroi/func/smlnj05.html fn pat1 => expr1 | pat2 => expr2 | ... | patN => exprNOCamlでは以下のように書ける http://www…

Erlangの場合

Prologに似た文法を見ていたら試したくなってきた。 rm([],_) -> []; rm([X|Xs],X) -> rm(Xs,X); rm([X|Xs],Y) -> [X|rm(Xs,Y)]. >rm:rm([1,2,3],2). [1,3]お、2行目の書き方で第1引数のリストの先頭と第2引数が等しい、という意味になってる。 Haskellみた…