我还只是学习Haskell的基础知识,我试图找到一个答案,这个简单的问题,所以我提前道歉,因为我敢肯定,这很简单.
鉴于:
data Fruit = Fruit| Apple | Orange
deriving (Show, Eq)
a = Apple
Run Code Online (Sandbox Code Playgroud)
如何检查某些水果是否合适?
Joe*_*ams 13
假设你真的意味着类型比较,简单的答案是"你不能".Haskell是静态类型的,因此检查在编译时完成,而不是在运行时完成.所以,如果你有这样的功能:
foo :: Fruit -> Bool
foo Apple = True
foo x = False
Run Code Online (Sandbox Code Playgroud)
是否x是水果的答案总是"是".
您可能要做的是找出构造给定值的数据构造函数.为此,请使用模式匹配:
fruitName :: Fruit -> String
fruitName Fruit = "Fruit"
fruitName Apple = "Apple"
fruitName Orange = "Orange"
Run Code Online (Sandbox Code Playgroud)
顺便说一下,如果你正在使用GHCi,而你想知道某种类型,请使用 :t
> let a = 123
> :t a
a :: Integer
>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5826 次 |
| 最近记录: |