class Maybe def initialize(val) @val = val end def fmap return self if @val.nil? self.class.new(yield @val) end def inspect return 'Nothing' if @val.nil? "Just #{@val.inspect}" end end