Sha256: 3a64a1d919f714442c3400273a0c68534f53c70c186fe8f9a9164538f31934ad

Contents?: true

Size: 911 Bytes

Versions: 1

Compression:

Stored size: 911 Bytes

Contents

require_relative 'maybe/base'
require_relative 'maybe/just'
require_relative 'maybe/nothing'
require_relative 'maybe/list'

module Monad
  module Maybe
    module Enumerable
      def to_maybe
        first.maybe
      end
  
      def maybe_map
        List.new(map{ |x| yield(x) })
      end
    end
  
    class ::Array; include Enumerable end
    class ::Range; include Enumerable end
  
    class ::Object
      def maybe
        Just.new(self)
      end
  
      def maybe?
        false
      end
  
      def just?
        false
      end
  
      def nothing?
        false
      end
    end

    class ::NilClass
      def maybe
        Nothing.instance.freeze
      end
    end

    def maybe(o)
      o.maybe
    end

    def just(o)
      Just.new(o)
    end

    def nothing
      Nothing.instance
    end
  end
end

include Monad::Maybe

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
monad-maybe-0.8.0 lib/monad/maybe.rb