Можно ли собрать компоновщик выражений вычислений, который может выставлять два или более выражения без размещения do!
перед каждым?
Если я правильно прочитал соответствующий раздел руководства, это должно быть возможно с помощью метода builder Combine
. Однако мой метод Combine
не используется; вместо этого я получаю предупреждение о компиляторе, предлагая использовать ignore
для отказа от результата.
Например, учитывая F # State monad, я хотел бы иметь возможность сделать это:
let hello who = State (fun lines -> lines @ [sprintf "hello %s" who])
let m = state {
hello "world"
hello "F#"
}
let l = Execute m []
// l should now contain ["hello world"; "hello F#"]