lib/kind/result/monad.rb in kind-5.2.0 vs lib/kind/result/monad.rb in kind-5.3.0
- old
+ new
@@ -2,22 +2,25 @@
module Kind
class Result::Monad
include Result::Abstract
+ require 'kind/empty'
require 'kind/result/monad/wrapper'
attr_reader :type, :value
- def self.[](arg1 = UNDEFINED, arg2 = UNDEFINED, value_must_be_a: nil) # :nodoc:
- type = UNDEFINED == arg2 ? self::DEFAULT_TYPE : KIND.of!(::Symbol, arg1)
+ def self.[](arg1 = UNDEFINED, arg2 = UNDEFINED, opt = Empty::HASH) # :nodoc:
+ value_must_be_a = opt[:value_must_be_a]
+ type = UNDEFINED == arg2 ? self::DEFAULT_TYPE : STRICT.kind_of(::Symbol, arg1)
+
Error.wrong_number_of_args!(given: 0, expected: '1 or 2') if UNDEFINED == arg1
value = UNDEFINED == arg2 ? arg1 : arg2
- new(type, (value_must_be_a ? KIND.of!(value_must_be_a, value) : value))
+ new(type, (value_must_be_a ? STRICT.kind_of(value_must_be_a, value) : value))
end
private_class_method :new
def initialize(type, value)
@@ -27,13 +30,15 @@
def value_or(_method_name = UNDEFINED, &block)
raise NotImplementedError
end
- def map(&_)
+ def map(_ = UNDEFINED, &_fn)
raise NotImplementedError
end
+ alias_method :|, :map
+ alias_method :>>, :map
alias_method :map!, :map
alias_method :then, :map
alias_method :then!, :map
alias_method :and_then, :map
alias_method :and_then!, :map