Module: Klam::CompilationStages::MakeAbstractionsVariadic
- Included in:
- Klam::Compiler
- Defined in:
- lib/klam/compilation_stages/make_abstractions_variadic.rb
Overview
Make Abstractions Variadic
Kl’s lambda special form only accepts a single parameter for the abstraction. It is useful internally, however, to allow abstractions to have zero or more parameters.
Instance Method Summary collapse
Instance Method Details
#make_abstractions_variadic(sexp) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/klam/compilation_stages/make_abstractions_variadic.rb', line 9 def make_abstractions_variadic(sexp) if sexp.instance_of?(Array) if sexp[0] == :lambda rator, param, form = sexp [rator, [param], make_abstractions_variadic(form)] else sexp.map { |form| make_abstractions_variadic(form) } end else sexp end end |