lib/rumonade/array.rb in rumonade-0.4.0 vs lib/rumonade/array.rb in rumonade-0.4.1
- old
+ new
@@ -16,10 +16,13 @@
module InstanceMethods
# Preserve native +map+ method for performance
METHODS_TO_REPLACE_WITH_MONAD = Monad::DEFAULT_METHODS_TO_REPLACE_WITH_MONAD - [:map]
def bind(lam = nil, &blk)
- inject(self.class.empty) { |arr, elt| arr + (lam || blk).call(elt).to_a }
+ inject(self.class.empty) do |arr, elt|
+ res = (lam || blk).call(elt)
+ arr + (res.respond_to?(:to_a) ? res.to_a : [res])
+ end
end
end
end
end