繁体   English   中英

Haskell:列表理解是高阶函数吗?

[英]Haskell: Are list comprehensions higher order functions?

我有一个我们不应该使用任何更高阶函数的赋值,列表理解是否可以归类为更高阶函数?

Haskell中的列表理解只是语法糖。 它在哈斯克尔报告2010定义在这里 ,像这样:

[ e | True ]          = [e]
[ e | q ]             = [ e | q, True ]
[ e | b, Q  ]         = if b then [ e | Q ] else []
[ e | p <- l, Q ]     = let ok p = [ e | Q ]
                            ok _ = []
                        in concatMap ok  l
[ e | let decls, Q ]  = let decls in [ e | Q ]

注意Q的使用,它在模式中的限定符(可以包括函数)范围内。 所以答案是肯定的,列表理解是高阶的。

“高阶”具有特定的含义。如果函数接受一个函数的参数(或返回一个函数),则前者被称为更高阶。(例如:map。)

列表推导是表示列表值而不是函数的表达式。 所以答案是:不。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM