Erweiterte Berechnungsausdrücke ohne for..in..do
Was ich unter erweiterten Rechenausdrücken verstehe, sind Rechenausdrücke mit benutzerdefinierten Schlüsselwörtern, die über definiert wurdenCustomOperation Attribut.
Beim Lesen übererweiterte Rechenausdrücke, Ich stoße auf sehr cooles IL DSL von @kvb:
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
}
Ich frage mich, wie sich die Operationen zusammensetzen, ohne sie zu benutzenfor..in..do
konstruieren. Mein Bauchgefühl ist, dass es mit anfängtx.Zero
Mitglied, aber ich habe keine Referenz gefunden, um das zu überprüfen.
Wenn das obige Beispiel zu technisch ist, ist hier ein ähnliches DSL, in dem Komponenten einer Folie ohne aufgeführt sindfor..in..do
:
page {
title "Happy New Year F# community"
item "May F# continue to shine as it did in 2012"
code @"…"
button (…)
} |> SlideShow.show
Ich habe ein paar eng verwandte Fragen:
Wie definiert oder verwendet man erweiterte Rechenausdrücke ohneFor
Mitglied (d. h. ein kleines vollständiges Beispiel)? Ich mache mir keine Sorgen mehr, wenn sie keine Monaden mehr sind. Ich bin daran interessiert, DSLs zu entwickeln.Können wir erweiterte Rechenausdrücke mit verwenden?let!
undreturn!
? Wenn ja, gibt es einen Grund, dies nicht zu tun? Ich stelle diese Fragen, weil ich kein Beispiel mit gefunden habelet!
undreturn!
.