扩展计算表达式的意思是使用CustomOperation属性定义的自定义关键字的计算表达式.
在阅读扩展计算表达式时,我遇到了@kvb非常酷的IL DSL:
let il = ILBuilder()
// will return 42 when called
// val fortyTwoFn : (unit -> int)
let fortyTwoFn =
il {
ldc_i4 6
ldc_i4_0
ldc_i4 7
add
mul
ret
}
Run Code Online (Sandbox Code Playgroud)
我想知道如何在不使用for..in..do
构造的情况下构成操作.我的直觉是它从x.Zero
成员开始,但我没有找到任何参考来验证.
如果上面的例子太技术性,那么这里是类似的DSL,其中列出了幻灯片的组件而没有for..in..do
:
page {
title "Happy New Year F# community"
item "May F# continue to shine as it did in 2012"
code @"…"
button (…)
} |> SlideShow.show
Run Code Online (Sandbox Code Playgroud)
我有几个密切相关的问题:
For
成员的情况下定义或使用扩展计算表达式(即提供一个小的完整示例)?如果他们不再是monad我不担心,我对他们开发DSL感兴趣.let!
和 …