空のリストまたは空でないリストの2つのケースを繰り返すことなく、任意のリストをパターンマッチングする方法はありますか?
次のコードを修正したいと思います。
foo [] = "something else"
foo [_:_] = "something else"
のパーツsomething else
は同じなので、一箇所から外したいと思います。
ありがとうございました。
空のリストまたは空でないリストの2つのケースを繰り返すことなく、任意のリストをパターンマッチングする方法はありますか?
次のコードを修正したいと思います。
foo [] = "something else"
foo [_:_] = "something else"
のパーツsomething else
は同じなので、一箇所から外したいと思います。
ありがとうございました。
パターン_
は、名前にバインドせずに何にでも一致します。たとえば、名前xs
も何にでも一致します。したがって、次のいずれかを実行できます。
foo _ = "something else"
また
foo xs = "something else"
「何か他のもの」が本当に最初の形式の値に依存しない場合はxs
、別のプログラマー (およびあなた) がこの特定の方程式では値が無関係であることをすぐに見つけることができるように、最初の形式が優先されます。
残念ながら、最初のケースはすでに 2 番目の形式であるため、すべての可能性に一致します。それ以外の場合は決して到達しません。