我有以下資料型別:
data TestType a = TypeA a
| TypeB a
| TypeC a
如何簡化以下函式的模式匹配:
f (TypeA x) (TypeB y) = "No"
f (TypeA x) (TypeC y) = "No"
f (TypeB x) (TypeA y) = "No"
f (TypeB y) (TypeC x) = "No"
f (TypeC y) (TypeA x) = "No"
f (TypeC y) (TypeB x) = "No"
f (TypeA x) (TypeA y) = "yes!"
總之,我應該只回傳“是的!” 如果我收到兩個 TypeA 資料輸入,否則回傳“否”。
uj5u.com熱心網友回復:
實作兩個TypeAs 的情況,其他情況使用通配符:
f :: TestType a -> TestType b -> String
f (TypeA _) (TypeA _) = "yes!"
f _ _ = "No"
uj5u.com熱心網友回復:
根據 的具體簽名f,您的實作也可能如下所示:
Prelude> data TestType a = TypeA a | TypeB a | TypeC a
Prelude> :{
Prelude| f :: TestType a -> TestType a -> String
Prelude| f (TypeA x) (TypeA y) = "yes"
Prelude| f _ _ = "no"
Prelude| :}
Prelude> f (TypeA 42) (TypeA 21)
"yes"
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/427297.html
標籤:哈斯克尔
