F# 映射/集合推导式

Li *_*oyi 2 python f# functional-programming list-comprehension

我正在寻找类似于 Python 中的 dict/list/set 推导式的东西。在Python中你可以这样做:

[x+2 for x in list if x > 10]
Run Code Online (Sandbox Code Playgroud)

并在 F# 中

[for x in list do if x > 10 yield x+2]
Run Code Online (Sandbox Code Playgroud)

但在Python中,你也可以这样做:

{x+2 for x in list if x > 10}
Run Code Online (Sandbox Code Playgroud)

生成集合,以及

{k: (v+10)/2 for k, v in list.items() if k > 5}
Run Code Online (Sandbox Code Playgroud)

生成字典。F# 中是否有任何等效的语法(无论是在功能方面还是在整体整洁方面)?

Dan*_*iel 5

有一个set接受的函数seq<_>,所以你可以这样做:

set [for x in list do if x > 10 yield x+2]
Run Code Online (Sandbox Code Playgroud)

与 相同dict。以下是相关文档:

set: http: //msdn.microsoft.com/en-us/library/ee353747.aspx
dicthttp://msdn.microsoft.com/en-us/library/ee353774.aspx