Expresiones de cálculo extendidas sin for..in..do

Lo que quiero decir con expresiones de cálculo extendidas es expresiones de cálculo con palabras clave personalizadas definidas a través deOperación personalizada atributo.

Al leer sobreexpresiones de computación extendidasMe he encontrado con IL DSL muy bueno por @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
    }

Me pregunto cómo se componen las operaciones sin usarlas.for..in..do construir. Mi intuición es que comienza conx.Zero miembro, pero no he encontrado ninguna referencia para verificar eso.

Si el ejemplo anterior es demasiado técnico, aquí hay un DSL similar donde se enumeran los componentes de una diapositiva sinfor..in..do:

page {
      title "Happy New Year F# community"
      item "May F# continue to shine as it did in 2012"
      code @"…"
      button (…)
} |> SlideShow.show

Tengo algunas preguntas estrechamente relacionadas:

¿Cómo se define o usa una expresión computacional extendida sinFor miembro (es decir, proporcionar un pequeño ejemplo completo)? No me preocupo mucho si ya no son mónadas, estoy interesado en desarrollar DSL.¿Podemos usar expresiones de cálculo extendidas conlet! yreturn!? En caso afirmativo, ¿hay alguna razón para no hacerlo? Hago estas preguntas porque no he encontrado ningún ejemplo usandolet! yreturn!.

Respuestas a la pregunta(2)

Su respuesta a la pregunta