Haskell中的Int和Maybe Int之间有区别吗?

Edd*_*die 4 int haskell

Haskell中的Inta和a 之间有区别Maybe Int吗?如果有,我该如何转换Maybe IntInt

jev*_*jev 6

是的,它们有不同的类型:Maybe Int可能是Nothing或者Just Int,Int总是在哪里Int.

也许是定义Data.Maybe

data Maybe a = Just a | Nothing
     deriving (Eq, Ord)
Run Code Online (Sandbox Code Playgroud)

如果函数可能不返回有效值,则应使用它.看看函数isJust,isNothingfromJust(使用Hoogle,Haskell API搜索引擎).

在你的功能里面你可以例如

case maybeValue of
  Just x     -> ... -- use x as value
  Nothing    -> ... -- erroneous case
Run Code Online (Sandbox Code Playgroud)

或者,使用fromMaybe(也来自Data.Maybe)采用默认值和a Maybe ,如果Maybe是a 则返回默认值Nothing,否则返回实际值.