Class: LambdaCalculus::Function1::Closure

Inherits:
Object
  • Object
show all
Defined in:
lib/mail/vendor/treetop-1.4.3/examples/lambda_calculus/lambda_calculus.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(function, env) ⇒ Closure

Returns a new instance of Closure.



489
490
491
492
# File 'lib/mail/vendor/treetop-1.4.3/examples/lambda_calculus/lambda_calculus.rb', line 489

def initialize(function, env)
  @function = function
  @env = env
end

Instance Attribute Details

#envObject (readonly)

Returns the value of attribute env.



487
488
489
# File 'lib/mail/vendor/treetop-1.4.3/examples/lambda_calculus/lambda_calculus.rb', line 487

def env
  @env
end

#functionObject (readonly)

Returns the value of attribute function.



487
488
489
# File 'lib/mail/vendor/treetop-1.4.3/examples/lambda_calculus/lambda_calculus.rb', line 487

def function
  @function
end

Instance Method Details

#apply(arg) ⇒ Object



494
495
496
# File 'lib/mail/vendor/treetop-1.4.3/examples/lambda_calculus/lambda_calculus.rb', line 494

def apply(arg)
  function.body.eval(function.param.bind(arg, env))
end

#to_s(other_env = {}) ⇒ Object



498
499
500
# File 'lib/mail/vendor/treetop-1.4.3/examples/lambda_calculus/lambda_calculus.rb', line 498

def to_s(other_env={})
  "\\#{function.param.to_s}(#{function.body.to_s(other_env.merge(env))})"
end