Dan*_*l O 1 haskell types pattern-matching
我有:
data Color = Blue | Green | Red | White | Yellow deriving (Eq,Ord)
Run Code Online (Sandbox Code Playgroud)
然后
data Term = Color | ...
data Bag = Bag {
color :: Color
...
}
Run Code Online (Sandbox Code Playgroud)
现在我希望能够模式匹配以确保给定的术语是一个颜色,如果是这样,检查它的"值"(蓝色/绿色...).像这样的东西:
func :: Term -> Bag -> Bool
func (c :: Color) bag = (color bag) == c
Run Code Online (Sandbox Code Playgroud)
但是(c :: Color)似乎不起作用.
data Color = Blue | Green | Red | White | Yellow deriving (Eq,Ord)
data Term = Color Color | Trash
data Bag = Bag {
color :: Color
}
func (Color x) bag = (color bag) == x
-- With the above, a call of func Trash something will fail.
-- (unexhastive pattern match). You can add
func Trash bag = False
-- or
func _ _ = False
-- and it will work all time.
Run Code Online (Sandbox Code Playgroud)