Haskell中的anInt和a有区别吗?Maybe Int如果有,我如何将 a 转换为Maybe Inta Int?
1627 次
2 回答
6
是的,它们有不同的类型:Maybe Int可能是Nothing或Just Int,Int总是在哪里Int。
也许定义Data.Maybe为
data Maybe a = Just a | Nothing
deriving (Eq, Ord)
如果函数可能无法返回有效值,则应使用。查看函数isJust、isNothing和fromJust(使用Hoogle,Haskell API 搜索引擎)。
在您的功能内,您可以例如
case maybeValue of
Just x -> ... -- use x as value
Nothing -> ... -- erroneous case
或者,使用fromMaybe(也来自Data.Maybe),它采用默认值和 a并在 a为 aMaybe
时返回默认值,否则返回实际值。MaybeNothing
于 2013-10-09T20:57:08.207 回答
3
数据类型表示一个可以为 null的Maybe值,通常用作函数的返回值,该函数可以只用一个值成功,也可以不带值失败。它有两个构造函数:Nothing并且Just a,a你返回的值在哪里。你可以像这样使用它:
safeHead :: [a] -> Maybe a
safeHead [] = Nothing
safeHead (x:xs) = Just x
您可以使用模式匹配或使用Data.Maybe. 我通常更喜欢前者,所以类似:
main = do
let xs :: [Int]
xs = someComputation 1 2 3
xHead = safeHead xs
case xHead of
Nothing -> putStrLn "someComputation returned an empty list!"
Just h -> putStrLn $ "The first value is " ++ show h
-- Here `h` in an `Int`, `xHead` is a `Maybe Int`
于 2013-10-09T21:02:36.620 回答