Sha256: 1b4a7d9bb74097ccabb177c3e3a4fe14fc2dc0f148334d73693509c168ee1a41
Contents?: true
Size: 887 Bytes
Versions: 1
Compression:
Stored size: 887 Bytes
Contents
require_relative 'maybe/base' require_relative 'maybe/just' require_relative 'maybe/nothing' require_relative 'maybe/list' # # Some monkey patching and constructor methods. # module Enumerable def maybe_map Monad::Maybe::List.new(map{ |x| yield(x) }) end end class Object def to_maybe(&blk) j = Monad::Maybe::Just.new(self) blk ? j.maybe(&blk) : j end def maybe? false end def just? false end def nothing? false end end class NilClass def to_maybe(&blk) Monad::Maybe::Nothing.instance end end module Monad module Maybe def self.return(obj) obj.to_maybe end end end def maybe(obj, &blk) m = Monad::Maybe.return(obj) blk ? m.maybe(&blk) : m end def just(o) Monad::Maybe::Just.new(o) end def nothing Monad::Maybe::Nothing.instance end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
monad-maybe-0.9.8 | lib/monad/maybe.rb |