Haskell 如何打印类型(任意字符串(IO字符串))?

Haskell 如何打印类型(任意字符串(IO字符串))?,haskell,functional-programming,Haskell,Functional Programming,这是一个非常非常长的故事,我不会让你感到厌烦,但基本上,我设法让自己处于一种需要能够打印类型任意字符串(IO字符串)的情况。有什么帮助吗?解决方案不是一行程序 either print (print =<<) IOmonad不是Show的实例,因此不能只使用print。事实上,必须首先获得IO monad中的值 您可以通过将其放入main中查看x::任意字符串(IO字符串)的值 case x of Left s -> putStrLn ("Left " ++ show

这是一个非常非常长的故事,我不会让你感到厌烦,但基本上,我设法让自己处于一种需要能够打印类型
任意字符串(IO字符串)
的情况。有什么帮助吗?

解决方案不是一行程序

either print (print =<<)
IO
monad不是
Show
的实例,因此不能只使用
print
。事实上,必须首先获得IO monad中的值

您可以通过将其放入main中查看
x::任意字符串(IO字符串)
的值

case x of
    Left s -> putStrLn ("Left " ++ show s)
    Right getVal -> do
             s <- getVal
             putStrLn ("Right (IO " ++ show s ++ ")")
案例x
左s->putStrLn(“左”+显示s)
右getVal->do

这个解决方案是一个线性方程组

either print (print =<<)

earth print(print=为了避免将来出现这种情况,我建议阅读我写的有关Functor的文章,包括“fmap对任何一种东西都有效”和“在IO上使用fmap特别酷”两部分。更简洁的一行是:
sequenceA>=>print