8
我试图分配一个提升值到a
。在GHCi中,为什么我不能在REPL中显示'纯1'?
λ> :m Control.Applicative
λ> let a = pure 1
当我在REPL评估a
,它打印1
。
λ> a
1
因此,我认为有可能是show
的实施a
,并试图这样:
λ> show a
但GHCI抛出一个错误:
<interactive>:70:1-4:
No instance for (Show (f0 a0)) arising from a use of ‘show’
The type variables ‘f0’, ‘a0’ are ambiguous
Note: there are several potential instances:
instance (Integral a, Show a) => Show (GHC.Real.Ratio a)
-- Defined in ‘GHC.Real’
instance (Show a, Show b) => Show (a, b) -- Defined in ‘GHC.Show’
instance (Show a, Show b, Show c) => Show (a, b, c)
-- Defined in ‘GHC.Show’
...plus 32 others
In the expression: show a
In an equation for ‘it’: it = show a
没有人有任何关于这个的想法?
你试过检查':type a'吗?那可能会告诉你一些事情。 – AJFarmar
@AJFarmar其实,并没有那么多,因为GHCi并没有将'm'默认为'IO'。 – chi
元解释的一点是为了。虽然你可能认为GHCi是一个“Haskell解释器”,但它实际上是一种非常不同的野兽。它是交互式开发Haskell程序的工具。尽管Haskell对保持良好和一致性很担心,但GHCi主要关心便利性和实用性。 – dfeuer