module Dry::Logic::Appliable

def applied?

def applied?
  !result.nil?
end

def failure?

def failure?
  !success?
end

def id

def id
  options[:id]
end

def result

def result
  options[:result]
end

def success?

def success?
  result.equal?(true)
end

def to_ast

def to_ast
  if applied? && id
    [success? ? :success : :failure, [id, ast]]
  else
    ast
  end
end