[英]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.