在 GHCI 中检查时的不同 Maybe 类型
Different Maybe Types When Inspecting in GHCI
我是 Haskell 的新手,正在尝试自学,如果这是一个基本问题,请原谅我。
如果我打开解释器 (ghci),为什么我会得到如下不同的类型:
Just 54
类型是
Just 54 :: Num a => Maybe a
Just 54 :: Maybe Int
类型是
Just 54 :: Maybe Int
Just "Stack"
类型是
Maybe [Char]
我不明白为什么上面的第一个例子产生的类型不是 Maybe Int
因为54
可以是任何数值类型。尝试例如Just 54 :: Maybe Float
.
如果您不指定任何类型,并且编译器无法选择一个精确的类型,它将为其保留最通用的类型 -- Num a => Maybe a
表示它可以是任何形式的类型 Maybe a
,只要 a
是数字。
请注意,当您尝试打印它时,GHCi 会使用一些技巧并为您选择 a
。这叫做"defaulting"。否则输入54
回车,会得到Ambiguous type error: (which numeric type?)
,很不方便。
我是 Haskell 的新手,正在尝试自学,如果这是一个基本问题,请原谅我。
如果我打开解释器 (ghci),为什么我会得到如下不同的类型:
Just 54
类型是
Just 54 :: Num a => Maybe a
Just 54 :: Maybe Int
类型是
Just 54 :: Maybe Int
Just "Stack"
类型是
Maybe [Char]
我不明白为什么上面的第一个例子产生的类型不是 Maybe Int
因为54
可以是任何数值类型。尝试例如Just 54 :: Maybe Float
.
如果您不指定任何类型,并且编译器无法选择一个精确的类型,它将为其保留最通用的类型 -- Num a => Maybe a
表示它可以是任何形式的类型 Maybe a
,只要 a
是数字。
请注意,当您尝试打印它时,GHCi 会使用一些技巧并为您选择 a
。这叫做"defaulting"。否则输入54
回车,会得到Ambiguous type error: (which numeric type?)
,很不方便。