iface monad { fn bind(fn(A) -> self); } impl monad of monad for [A] { fn bind(f: fn(A) -> [B]) { let mut r = fail; for self.each {|elt| r += f(elt); } //!^ WARNING unreachable expression //!^^ ERROR the type of this value must be known } } fn main() { ["hi"].bind {|x| [x] }; }