爲什麼匹配的模式在此代碼重複: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