【发布时间】:2020-07-07 11:49:08
【问题描述】:
我想从 F# 中的任务中编写 SelectMany 单子绑定。我将如何编写以下在 F# 中使用 language-ext 的 C# 代码?
Task<int> result = from task in Task.Run<int>(() => 40) select task + 2;
【问题讨论】:
-
你想做什么?这不会在 C# 中编译,即使这样做也会很奇怪。也不是
SelectMany,只是Select。 -
如果你有一个异步产生值的迭代器,你应该在 C# 中使用
IAsyncEnumerable。 F# 中的等价物由AsyncSeq 库提供 -
@PanagiotisKanavos 你是对的!我使用的示例 C# 代码甚至都不正确!
-
更改了描述,说明它适用于 C# 的语言扩展。如果您是读者,在这里发现自己并不了解单子绑定是什么,这是一个很好的例子adit.io/posts/…(它使用 Haskell,但我认为这是我见过的最好的例子之一)。
标签: f# c#-to-f# language-ext