#[macro_use] extern crate mdo; fn main() { // exporting the monadic functions for the Iterator monad (similar // to list comprehension) use mdo::iter::{bind, ret, mzero}; // getting the list of (x, y, z) such that // - 1 <= x <= y < z < 11 // - x^2 + y^2 == z^2 let l = bind(1i32..11, move |z| bind(1..z, move |x| bind(x..z, move |y| bind(if x * x + y * y == z * z { ret(()) } else { mzero() }, move

