Ocamlや関数型言語の一般的な学習を試みる中で、私はパターンマッチングについて検討してきました。"正方形"タプルのOcamlパターンマッチング?
4タプルの各要素が等しいように整数4タプルが入力されたときには、true
と評価される式を作成します。これは、this documentationです。
(4、4、4、4) - >true
(4、2、4、4) - > Iは見つけるfalse
その値の特異性についてパターンマッチングを行います要素は明白ではない。これは私が書いたコードです。もちろん
let sqr x = match x with
(a, a, a, a) -> true
| (_, _, _, _) -> false ;;
、このコードは、次のエラースロー:
Error: Variable a is bound several times in this matching
の他にどのように私は、xが4組であることを強制することができないだけでなく、等しい厳密整数の?
(もちろん、正方形のタプルは正の整数ではないはずですが、今のところ私は上記の問題にもっと関心があります)。 `
OCamlには、それぞれの変数が一度に現れる、いわゆる「線形」パターンしかありません。パターンは、マッチングされた値の異なる部分の間で同等性を強制することはできません。 –
次のように関数の引数にパターンマッチさせることもできます: '' 'let sqr(a、b、c、d)= a = b && b = c && c == d''''より自然に見えるかもしれない – ghilesZ