2

空のリストまたは空でないリストの2つのケースを繰り返すことなく、任意のリストをパターンマッチングする方法はありますか?

次のコードを修正したいと思います。

foo [] = "something else"
foo [_:_] = "something else"

のパーツsomething else は同じなので、一箇所から外したいと思います。

ありがとうございました。

4

1 に答える 1

8

パターン_は、名前にバインドせずに何にでも一致します。たとえば、名前xsも何にでも一致します。したがって、次のいずれかを実行できます。

foo _ = "something else" また foo xs = "something else"

「何か他のもの」が本当に最初の形式の値に依存しない場合はxs、別のプログラマー (およびあなた) がこの特定の方程式では値が無関係であることをすぐに見つけることができるように、最初の形式が優先されます。

残念ながら、最初のケースはすでに 2 番目の形式であるため、すべての可能性に一致します。それ以外の場合は決して到達しません。

于 2013-02-28T14:16:23.437 に答える