我有一个任务,我们不应该使用任何高阶函数,一个列表理解能被归类为高阶函数吗?
发布于 2015-03-15 00:43:11
Haskell中的列表理解只是句法上的糖。它在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,它的范围超过限定符(可以包括函数)。所以答案是肯定的,一个列表理解是更高级的。
发布于 2015-03-15 05:19:13
“高阶”有一个特定的含义。如果一个函数接受一个参数,它是一个函数(或返回一个函数),则前者被称为高阶(例如:map)。
列表理解是表示列表值的表达式,而不是函数。所以答案是:不。
https://stackoverflow.com/questions/29055913
复制相似问题