class Lambda
Public Class Methods
new(env, forms, params, *code)
click to toggle source
# File lib/schemerald/Lambda.rb, line 2 def initialize(env, forms, params, *code) @environment = env @forms = forms @parameters = params.arrayify @code = code end
Public Instance Methods
call(*args)
click to toggle source
# File lib/schemerald/Lambda.rb, line 9 def call(*args) raise SchemeError, "arity mismatch: expected #{@parameters.size} arguments" unless args.size == @parameters.size new_env = Environment.new(@environment) @parameters.zip(args).each do |name, value| new_env.define(name, value) end @code.map{|x| x.scheme_eval(new_env, @forms) }.last end