class NotRegexp def initialize r @rx = r end def match l ! @rx.match( l) end def =~ l ! @rx =~ l end def -@ @rx end end class Regexp def -@ NotRegexp.new self end end class Functional include Enumerable class Base attr_reader :exe attr_accessor :next def initialize &e @exe = e end def call *a @next.call *a end def end @next.end end end class Collect