我还在学习 Haskell 的基础知识,我试图找到这个简单问题的答案,所以我提前道歉,因为我确信它很简单。
Given:
data Fruit = Fruit| Apple | Orange
deriving (Show, Eq)
a = Apple
如何检查某个 a 是否是水果?
假设你真的想说type比较起来,简单的答案是“你不能”。 Haskell 是静态类型的,因此检查是在编译时完成的,而不是运行时。所以,如果你有这样的函数:
foo :: Fruit -> Bool
foo Apple = True
foo x = False
是否的答案x
是一个水果永远是“是”。
您可能想要做的是找出给定值是用什么数据构造函数构造的。为此,请使用模式匹配:
fruitName :: Fruit -> String
fruitName Fruit = "Fruit"
fruitName Apple = "Apple"
fruitName Orange = "Orange"
顺便说一句,如果您正在使用 GHCi,并且您想知道某物的类型,请使用:t
> let a = 123
> :t a
a :: Integer
>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)