Haskell,打印出fmap结果

Buf*_*lls 1 haskell

我想像这样打印fmap的结果

 putStrLn <- fmap (replicate 3) [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

但是我得到了putStrLn解析错误.请帮忙.

谢谢.

jwo*_*der 5

这里的正确语法是:

putStrLn $ show $ fmap (replicate 3) [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

或者,甚至更短:

print $ fmap (replicate 3) [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)


Tho*_*son 5

完全不是提问者正在寻找的答案,但幽默地他的语法误解仍然是有效的Haskell代码:

do putStrLn <- fmap (replicate 3) [1,2,3,4]
   return putStrLn
Run Code Online (Sandbox Code Playgroud)

上面使用列表monad,值putStrLn只是一个变量(不是人们可能期望的IO操作).如果表达为列表理解而不是使用列表monad,那么对于人们来说可能更有意义:

> [ putStrLn | putStrLn <- map (replicate 3) [1,2,3,4]]
[[1,1,1],[2,2,2],[3,3,3],[4,4,4]]
Run Code Online (Sandbox Code Playgroud)