1

このような fmap の結果を出力したい

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

しかし、putStrLn 解析エラーが発生しました。助けてください。

ありがとうございました。

4

2 に答える 2

5

ここでの正しい構文は次のとおりです。

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

または、さらに短く:

print $ fmap (replicate 3) [1,2,3,4]
于 2013-10-25T02:45:21.410 に答える
5

質問者が探している答えとはまったく異なりますが、ユーモラスなことに、彼の構文の誤解は依然として有効な Haskell コードです。

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

上記は list モナドを使用しており、値putStrLnは単なる変数です (期待される IO アクションではありません)。リストモナドを使用する代わりにリスト内包表記として表現すると、人々にとってより意味のあるものになるかもしれません:

> [ putStrLn | putStrLn <- map (replicate 3) [1,2,3,4]]
[[1,1,1],[2,2,2],[3,3,3],[4,4,4]]
于 2013-10-25T04:33:41.487 に答える