&gt; it looks like leaving exceptions does not make a language simpler.<p>I don&#x27;t think that this ever was the claim. Rust leaves exceptions out because they make code hard to work with and because it prefers errors be acknowledged. I don&#x27;t think monadic errors are &quot;simpler&quot; than exceptions.<p>(Though I suspect they are simpler to teach than exceptions to people who have learned neither)<p>Once `?` lands in Rust I expect these &quot;gyrations&quot;  become much simpler.<p>&gt; Are we going to see
&gt;
&gt;    date.if_weekday(|day| { ... }) 
&gt;
&gt; and similar cruft for every type? I hope not.<p>Not sure where this comes from. As the others have mentioned, closures are pretty cheap, but anyway you don&#x27;t need to use the control flow primitives. There are many ways of dealing with errors, including using `if let`, `match`, `unwrap_or_else`, `try!`, and the upcoming `?`.