from的NS型別sop-core創造了一個有趣的難題。在S :: NS f xs -> NS f (x ': xs)wherexs ~ '[]意味著對 the 的論點S存在。然而,Haskell 的案例匹配迫使我進行匹配。這個問題有解決方案嗎?
type T = NS I '[Int, String]
matchT :: T -> String
matchT = \case
Z (I n) -> show n
S (Z (I s)) -> s
S (S _) -> error "FIXME" -- not reachable
如果您洗掉最后一種情況(這確實沒有必要),Haskell 會抱怨“模式匹配不是詳盡無遺的”。
uj5u.com熱心網友回復:
使用EmptyCase!
matchT :: T -> String
matchT = \case
Z (I n) -> show n
S (Z (I s)) -> s
S (S impossible) -> case impossible of {}
真實世界的例子
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/495987.html
