gpt4 book ai didi

haskell - 没有因使用 ‘print’ 而产生 (Show (IO ())) 的实例

转载 作者:行者123 更新时间:2023-12-02 10:34:05 25 4
gpt4 key购买 nike

只是为了学习,我在我的控制台 WinGHCi 上执行了此操作:

let ls = [putChar 'x',putChar 'y']

那么如果这样做:

head ls

输出显然是x (显然是在我理解原因的意义上)

否则如果我这样做:

tail ls

我收到此错误:

No instance for (Show (IO ())) arising from a use of ‘print’

In a stmt of an interactive GHCi command: print it

为什么?不应输出 y[putChar 'y']

最佳答案

此行为已解释 here .

head ls 的类型为 IO (),因此 GCHi 执行操作并且不打印结果 ()

相比之下,tail ls 的类型为[IO ()]。由于这不是一个 IO 操作,GCHi 尝试使用具有以下类型的 print 显示它:

print :: Show a => a -> IO ()

但是,由于 [IO ()] 没有 Show 实例,因此您会收到错误。如果您想评估操作,可以使用sequence_:

sequence_ (tail ls)

关于haskell - 没有因使用 ‘print’ 而产生 (Show (IO ())) 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37119459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com