Tôi đã cố gán giá trị được nâng lên a
.Trong GHCi, tại sao tôi không thể hiển thị `pure 1` trong REPL?
λ> :m Control.Applicative
λ> let a = pure 1
Khi tôi đánh giá a
trong REPL, nó in 1
.
λ> a
1
Vì vậy, tôi nghĩ rằng có thể có một thực hiện show
cho a
, và cố gắng này:
λ> show a
Nhưng GHCi ném một lỗi:
<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
Có ai có bất kỳ ý tưởng về điều này?
Bạn đã thử kiểm tra ': nhập a' chưa? Điều đó sẽ cho bạn biết điều gì đó, có thể. – AJFarmar
@AJFarmar Thực ra, không nhiều lắm, vì GHCi không mặc định 'm' thành' IO'. – chi
Một chút của giải thích meta là theo thứ tự. Mặc dù bạn có thể nghĩ GHCi là một "thông dịch viên Haskell", nhưng nó thực sự là một loại quái vật khá khác. Đó là một công cụ để phát triển các chương trình Haskell tương tác. Trong khi Haskell lo lắng rất nhiều về việc giữ mọi thứ tốt đẹp và nhất quán, GHCi quan tâm chủ yếu về tiện lợi và tiện ích. – dfeuer