私はリストとモナドと完全に混同しているので、おそらく私の質問は正しくないか、非常に素朴です. ここでmapM_ func を使用してそれを行う方法を見てきました:
mapM_ print [1, 2, 3, 4]
しかし、それがどのように機能するのか正確にはわかりません。次のような方法でこれを行う方法を知りたいです:
x <- [1, 2, 3]
print x
または、私がそれを正しく理解していれば:
[1, 2, 3] >>= print
[1, 2, 3] には type が[a]
あり、 print には typeがあることを理解していShow a => a -> IO ()
ます。また、モナド List を使用するList a
には、左側に type が必要であり、右側に func with type が必要であることも理解しa -> List b
ています。私は正しいですか?これで私を助けてもらえますか?
UPD。mapM_ の仕組みを説明してくれた @MathematicalOrchid に感謝します。私の側から説明したいのですが、実際の問題は結果を別の行に出力することではなく、モナド List が提供する方法でいくつかのモナド アクションを実行することです (今は OpenGL のことをぶらぶらしているため)。しかし、誤解の根源はモナドの混合にあることがわかりました。
UPD2。回答ありがとうございます。このようなあいまいな質問で申し訳ありません。必要な答えと質問が何であるかが正確にはわかりません。それは、私がいくつかの基本を理解していなかったからです。そのため、すべての答えには、私が探していたものの小さな平和があるため、「正しい答え」を選択するのは難しいです。私は、私が望んでいたものに最も近いものを選択することにしました (現在は最も有用ではありませんが)。