module Dry::Logic
def self.Predicate(block)
def self.Predicate(block) case block when Method then Predicate.new(block.name, &block) when UnboundMethod then Predicate.new(block.name, fn: block) else raise ArgumentError, 'predicate needs an :id' end end
def self.Result(response, rule, input)
def self.Result(response, rule, input) Result[rule].new(response, rule, input) end