我想像这样打印fmap的结果
putStrLn <- fmap (replicate 3) [1,2,3,4]
但是我得到了putStrLn解析错误。 请帮忙。
谢谢。
答案 0 :(得分:5)
这里的正确语法是:
putStrLn $ show $ fmap (replicate 3) [1,2,3,4]
或者更短:
print $ fmap (replicate 3) [1,2,3,4]
答案 1 :(得分:5)
完全不是提问者正在寻找的答案,但幽默地他的语法误解仍然是有效的Haskell代码:
do putStrLn <- fmap (replicate 3) [1,2,3,4]
return putStrLn
以上使用列表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]]