Cats.rb
is a collection of Category Theory libs for Ruby. You'll find it very handy if you familiar with Haskell or scalaz/cats
😹 ➡️ 😼
⬇️
🙀 ➡️ 😻
gem install data.either
require 'data.either'
Right.new(1).flat_map do |x|
if x < 1
Left.new('meh')
else
Right.new(x+1)
end
end
# => #<Right value=2>
Right.new(1) >> Left.new('oops') >> Right.new(1) # => #<Left value=oops>
gem install data.maybe
require 'data.maybe'
Just.new(1).flat_map do |x|
if x < 1
Nothing
else
Just.new(x+1)
end
end
# => #<Just 2>
Maybe.new(1) >> Nothing >> Maybe.new(2) # => #<Nothing>
gem install control.monad.free
Roll.new(Just.new(Return.new(1))).flat_map { |x| Roll.new(Right.new(Return.new(x + 1))) }
# Roll.new(Just.new(Roll.new(Right.new(Return.new(2)))))
- data.validate