模式匹配冗余

Kyl*_*pse 0 haskell pattern-matching

我怎样才能确定模式

func (2:xs) = expression
Run Code Online (Sandbox Code Playgroud)

其中2:xs是长度为2的列表与模式不匹配

func (2:x:xs) = expression2
Run Code Online (Sandbox Code Playgroud)

其中2:x:xs是长度为3的列表?

chi*_*chi 7

根据需要调整:

func [] = ... -- empty case
func [x] = ... -- length=1 case
func [x,y] = ... -- length=2 case
func (x:y:z:zs) = ... -- length>=3 case
Run Code Online (Sandbox Code Playgroud)


Cha*_*ert 6

用空括号结束列表模式:

func (2:x:[]) = expression
Run Code Online (Sandbox Code Playgroud)

这将确保x列表中的单个元素.