模式匹配冗余

时间:2017-08-18 19:07:16

标签: haskell pattern-matching

如何确定模式

func (2:xs) = expression

其中2:xs是长度2列表与模式

不匹配
func (2:x:xs) = expression2

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

2 个答案:

答案 0 :(得分:7)

根据需要进行调整:

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

答案 1 :(得分:6)

用空括号结束列表模式:

func (2:x:[]) = expression

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