早速リストモナド作ってみた。

#light
type ListBuilder () =
  member m.Bind (v,f) = List.concat (List.map f v)
  member m.Return x = [x]
  member m.Let(v,f) = f v (*Functor?*)

let listM = new ListBuilder()

let _ = listM { let x = 100
        return x }
   |> print_any; print_newline();;

=> [100]