我正在阅读关于 exercism.io 的提交,其中有人建议
concat (replicate n str)
也可以表示为:
[1..n] >>= return str
无需深入讨论随后关于该主题的所有辩论:我正在寻找完全外行的解释为什么/如何工作。
特别是,在我试图在脑海中重新塑造这个之后,我认为它可能有点类似于:
fmap (return char) [1..3]
但我不明白为什么
[1..n] >>= return 'M'
是一个错误,其中
[1..n] >>= return "M"
很好。
任何真正了解 Haskell 的人都可以带我了解这一切是如何工作的吗?