2013-10-25 67 views
1

我想打印FMAP的结果是这样哈斯克尔,打印出结果FMAP

putStrLn <- fmap (replicate 3) [1,2,3,4] 

但我得到putStrLn解析错误。 请帮忙。

谢谢。这里

+0

请注意,您可以用'map'与列表:)(但'fmap'也是正确的) –

回答

5

正确的语法是:

putStrLn $ show $ fmap (replicate 3) [1,2,3,4] 

,或者更短:

提问者正在寻找
print $ fmap (replicate 3) [1,2,3,4] 
+0

谢谢! !,,,,,,,,,,,,,,,,,,, – BufBills

5

完全没有答案,但幽默他的语法误解仍然是有效的Haskell代码:

以上使用的是list monad,其值为putStrLn只是一个变量(不是人们可能期望的IO动作)。如果表达为一个列表的理解,而不是使用列表单子也许更有意义的人:

> [ putStrLn | putStrLn <- map (replicate 3) [1,2,3,4]] 
[[1,1,1],[2,2,2],[3,3,3],[4,4,4]]