I slutet av Brian McNamaras artikelserie om katamorfismer (del sju och åtta) formulerar han continuations som en monad med hjälp av F#’s “computation expressions”. Computation expressions är en sorts “monadsyntax” (i stil med Haskells) på något som i F# kallas för “builder objects” eller “monadic builders”.
Builder objects i sin tur kan möjligen förstås som en form av generaliserad “LINQ-provider”. Genom att implementera de fyra funktionerna/metoderna Delay
, Bind
, Let
och Return
kan ett builder object representera monadiska strukturer.
Typsignaturerna för en “monadic builder” (för en monadisk typ M
):
type M-Builder with
member Bind : M<‘a> * (‘a -> M<‘b>) -> M<‘b>
member Return : ‘a -> M<‘a>
member Delay : (unit -> M<‘a>) -> M<‘a>
member Let : ‘a * (‘a -> M<‘b>) -> M<‘b>
Några artiklar i ämnet: