class Result
def fold(success: nil, failure: nil)
def fold(success: nil, failure: nil) fold_result = if success? if success.respond_to?(:call) success.call(@data) else if block_given? yield(@data) else self end end else if failure.respond_to?(:call) failure.call(@error) else self end end unless fold_result.is_a?(Result) raise StandardError, "Fold result must be a Result object, got: #{fold_result.class}" end fold_result end