当我测试 GHCi 中的文字类型时,我发现
Prelude> :t 1
1 :: Num p => p
Prelude> :t 'c'
'c' :: Char
Prelude> :t "string"
"string" :: [Char]
Prelude> :t 1.0
1.0 :: Fractional p => p
问题是Haskell如何确定这种文字的类型?我在哪里可以找到相关信息?
此外,是否有任何方法可以改变GHC解释文字类型的方式?
例如:
-- do something
:t 1
1 :: Int -- interprets 1 as Int rather then Num p => p
:t 1.0
1.0 :: Double -- interprets 1.0 as Double rather then Fractional p => p
提前致谢。
最佳答案
您可以要求 ghci 默认类型变量:
$ ghci
λ> let x = 3
λ> :type x
x :: Num p => p
λ> :type +d x
x :: Integer
λ> :type +d 1
1 :: Integer
λ> :type +d 1.0
1.0 :: Double
:type +d
将使 ghci 选择类型变量的默认类型。另外,这是一般的 Haskell 默认规则:
default Num Integer
default Real Integer
default Enum Integer
default Integral Integer
default Fractional Double
default RealFrac Double
default Floating Double
default RealFloat Double
您可以了解更多about it here .
关于haskell - Haskell中如何确定文字的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52771596/