impl 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] }; }