为什么使用列表推导式而不是更函数式的方法,例如 - map (*2) [1..5](仅举一个例子)?
我认为列表理解语法不是很直接,需要记住,并且是 haskell 中的冗余语法和功能,因为你可以用列表函数做它能做的一切。
我错了吗?有什么你可以用列表理解来做而你不能用函数式方法做的吗?
你没看错,列表理解语法不是需要的。但是
do
符号(BTW 以几乎相同的方式脱糖)、简单的列表文字,甚至字符串文字都不是。而不是写"Hello, World!"
你总是可以写
'H':'e':'l':'l':'o':',':' ':'W':'o':'r':'l':'d':'!':[]
更进一步,您还可以问为什么我们不直接用 lambda 演算/System F 编写程序,而是用实际的编程语言编写程序。
你可能会看到我的意思:
你为什么要使用列表理解
– 因为它们简洁、好看,而且很容易理解它的意思。