【发布时间】:2020-10-09 09:22:18
【问题描述】:
我是不是很傻? 有些事情在 monad/computation 表达式中看起来更好,我有很多使用 seq 计算表达式的代码,但是每次我点击一个选项我都必须恢复到“Option.map”等。
有点刺耳(当我在 C# 中执行此操作时,我为 IMaybe 类型编写了一个 linq 运算符,这一切看起来都很好且一致)。
我可以,但不是特别想写一个,肯定有一个(或多个),人们使用哪一个?
即
所以而不是
let postCodeMaybe =
personMaybe
|> Option.bind (fun p -> p.AddressMaybe())
|> Option.map (fun -> p.Postcode())
我们可以走了
let postCodeMaybe =
option {
for p in personMaybe do
for a in p.AddressMaybe() do
a.Postcode()
}
我对前一个代码没有任何问题,除了在我的上下文中它存在于许多看起来像后者的“seq”计算表达式中(一些将查看此代码的开发人员将来自 C#/LINQ 背景基本上是后者)。
【问题讨论】:
-
如果您可以分享一段特定的代码,也许会更容易理解您要问的问题是什么。
-
我已经修改了问题
标签: f#