Module: Dry::Monads
- Extended by:
- [ Lazy[ Lazy::Mixin[ Lazy::Mixin::Constructors, Maybe::Mixin::Constructors, Result::Mixin::Constructors, Task::Mixin::Constructors, Try::Mixin::Constructors, Validated::Mixin::Constructors, ].freeze, Lazy::Mixin::Constructors, Maybe::Mixin::Constructors, Result::Mixin::Constructors, Task::Mixin::Constructors, Try::Mixin::Constructors, Validated::Mixin::Constructors
- Defined in:
- lib/dry/monads.rb,
lib/dry/monads/do.rb,
lib/dry/monads/all.rb,
lib/dry/monads/try.rb,
lib/dry/monads/lazy.rb,
lib/dry/monads/list.rb,
lib/dry/monads/task.rb,
lib/dry/monads/unit.rb,
lib/dry/monads/curry.rb,
lib/dry/monads/maybe.rb,
lib/dry/monads/do/all.rb,
lib/dry/monads/either.rb,
lib/dry/monads/errors.rb,
lib/dry/monads/result.rb,
lib/dry/monads/version.rb,
lib/dry/monads/traverse.rb,
lib/dry/monads/undefined.rb,
lib/dry/monads/validated.rb,
lib/dry/monads/transformer.rb,
lib/dry/monads/result/fixed.rb,
lib/dry/monads/right_biased.rb,
lib/json/add/dry/monads/maybe.rb,
lib/dry/monads/conversion_stubs.rb
Overview
Common, idiomatic monads for Ruby
Defined Under Namespace
Modules: ConversionStubs, Curry, Do, RightBiased, Transformer Classes: InvalidFailureTypeError, Lazy, List, Maybe, Result, Task, Try, UnwrapError, Validated
Constant Summary collapse
- CONSTRUCTORS =
List of monad constructors
[ Lazy::Mixin::Constructors, Maybe::Mixin::Constructors, Result::Mixin::Constructors, Task::Mixin::Constructors, Try::Mixin::Constructors, Validated::Mixin::Constructors, ].freeze
- Unit =
Unit is a special object you can use whenever your computations don't return any payload. Previously, if your function ran a side-effect and returned no meaningful value, you had to return things like Success(nil), Success([]), Success({}), Maybe(""), Success(true) and so forth.
You should use Unit if you wish to return an empty monad.
Object.new.tap do |unit| def unit.to_s 'Unit' end def unit.inspect 'Unit' end end
- Some =
Maybe::Some
- None =
Maybe::None
- Either =
Result
- Success =
Result::Success
- Failure =
Result::Failure
- VERSION =
'1.1.0'.freeze
- Traverse =
List of default traverse functions for types. It is implicitly used by List#traverse for making common cases easier to handle.
{ Validated => -> el { el.alt_map(to_list) } }
- Undefined =
Dry::Core::Constants::Undefined
- Valid =
Validated::Valid
- Invalid =
Validated::Invalid
Constants included from Result::Mixin::Constructors
Result::Mixin::Constructors::Left, Result::Mixin::Constructors::Right
Class Method Summary collapse
- .included(base) ⇒ Object
-
.Result(error, **options) ⇒ Module
Creates a module that has two methods:
Success
andFailure
.
Methods included from Try::Mixin::Constructors
Methods included from Lazy::Mixin::Constructors
Methods included from Task::Mixin::Constructors
Methods included from Maybe::Mixin::Constructors
Methods included from Result::Mixin::Constructors
Methods included from Validated::Mixin::Constructors
Class Method Details
.included(base) ⇒ Object
6 7 8 9 10 11 12 |
# File 'lib/dry/monads.rb', line 6 def self.included(base) if const_defined?(:CONSTRUCTORS) base.include(*CONSTRUCTORS) else raise "Load all monads first with require 'dry/monads/all'" end end |
.Result(error, **options) ⇒ Module
Creates a module that has two methods: Success
and Failure
.
Success
is identical to Dry::Monads::Result::Mixin::Constructors#Success and Failure
rejects values that don't conform the value of the error
parameter. This is essentially a Result type with the Failure
part
fixed.
316 317 318 |
# File 'lib/dry/monads/result.rb', line 316 def self.Result(error, **) Result::Fixed[error, **] end |