簡體   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