# TIL in Clojure the complement function takes a predicate and # returns a function that is like the original function but negates # the results. # E.g. # def is_greater(a, b); a > b; end # complement(:is_greater)[1, 2] # => true def complement(method_name) lambda do |*args| !method(method_name).call(*args) end end