Module: Klam::CompilationStages::SimplifyBooleanOperations
- Included in:
- Klam::Compiler
- Defined in:
- lib/klam/compilation_stages/simplify_boolean_operations.rb
Overview
Simplify Boolean Operations
Kl defines four special forms for boolean operations: if, or, and, and cond. Having if or cond alone is sufficient for implementing the complete set. This compilation stages recasts or, and, and cond in terms of if.
Instance Method Summary collapse
Instance Method Details
#simplify_boolean_operations(sexp) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/klam/compilation_stages/simplify_boolean_operations.rb', line 9 def simplify_boolean_operations(sexp) if sexp.instance_of?(Array) case sexp[0] when :and simplify_and(sexp) when :cond simplify_cond(sexp) when :or simplify_or(sexp) else sexp.map { |form| simplify_boolean_operations(form) } end else sexp end end |