Class: Obfusk::Monads::Maybe

Inherits:
Object
  • Object
show all
Includes:
ADT, Obfusk::Monad, Obfusk::MonadPlus
Defined in:
lib/obfusk/monads.rb

Class Method Summary collapse

Methods included from Obfusk::MonadPlus

included, #plus

Methods included from Obfusk::Monad

#>>, included

Methods included from ADT

#<=>, #==, #__adt_ctor__, #__adt_ctor_keys__, #__adt_ctor_name__, #__adt_data__, #_compare_data, #_eq_data, #clone, #eql?, included, #initialize, #inspect, #match, #to_s

Class Method Details

.bind_pass(m, &b) ⇒ Object



42
43
44
45
# File 'lib/obfusk/monads.rb', line 42

def self.bind_pass(m, &b)
  m.match Nothing:  -> (_) { Nothing()  },
          Just:     -> (x) { b[x.value] }
end

.lazy_plus(m, k) ⇒ Object



49
50
51
52
# File 'lib/obfusk/monads.rb', line 49

def self.lazy_plus(m, k)
  m.match Nothing:  -> (_) { k._ },
          Just:     -> (_) { m   }
end

.mreturn(x) ⇒ Object



39
40
41
# File 'lib/obfusk/monads.rb', line 39

def self.mreturn(x)
  Just(x)
end

.zeroObject



46
47
48
# File 'lib/obfusk/monads.rb', line 46

def self.zero
  Nothing()
end