为什么匹配的模式在此代码重复:Haskell - 模式匹配重叠?
(+) (Roman (_, [])) x = x
(+) x (Roman (_, [])) = x
它将使意义考虑x + y
相同y + x
,但我不认为哈斯克尔需要照顾的是,或不是吗?
为什么匹配的模式在此代码重复:Haskell - 模式匹配重叠?
(+) (Roman (_, [])) x = x
(+) x (Roman (_, [])) = x
它将使意义考虑x + y
相同y + x
,但我不认为哈斯克尔需要照顾的是,或不是吗?
x
可能是任何东西,所以它可能是Roman (_,[])
。
那么我将如何实现这个没有重叠的模式呢?基本上,如果一个参数在元组的第二部分中有一个空列表,我只想返回其他参数 – tolUene
呃,你的代码不会给我任何警告并且工作... –
问题是,x
匹配任何东西。
可以使用在图案,使他们独特:
(+) (Roman (_, [])) [email protected](Roman(_, _:_) = x
(+) [email protected](Roman(_, _:_) (Roman (_, [])) = x
我得到你应该用含半幺群或不便的感觉。 –
'Roman'的定义是什么? – dfeuer