F# 3.0 beta 包含一个 query {} 计算表达式以及大量新关键字。
如何在计算构建器中定义自己的关键字?
在 F# 3.0 中,您可以使用 CustomOperationAttribute 来实现此目的。
F#计算表达式支持自定义关键字。这允许您在计算表达式中定义自定义命令。 Saturn - F# 中的 Web 框架广泛使用了这一点。
type FooBuilder() =
member t.Yield _ = String.Empty
[<CustomOperation("fooCommand")>]
member _.myFooCommand(state, arg1:string, arg2:string) =
// do something with arg1 and arg2
0
[<CustomOperation("fooRun")>]
member _.myFooRunMethod(state, arg1: float) =
// do something with arg1
0
let foo = FooBuilder()
let _ = foo {
fooCommand "dotnet" "--help"
fooRun 3.14
}
您可以通过调用线程化“状态”。请阅读 Isaac Abraham 关于此主题的文章了解更多信息 -- https://www.compositional-it.com/news-blog/custom-keywords-in-computation-expressions/