Class: AjLisp::FPrimitiveLet

Inherits:
FPrimitive show all
Defined in:
lib/ajlisp/fprimitive_let.rb

Constant Summary collapse

@@instance =
nil

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from FPrimitive

#evaluate

Class Method Details

.instanceObject



9
10
11
12
# File 'lib/ajlisp/fprimitive_let.rb', line 9

def self.instance
    @@instance = new unless @@instance
    return @@instance
end

Instance Method Details

#apply(context, args) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/ajlisp/fprimitive_let.rb', line 14

def apply(context, args)
    arguments = args[0]
    args.shift
    
    newcontext = AjLisp::Context.new context
    
    while arguments
      pair = arguments.first
      atom = pair.first
      value = AjLisp::evaluate(context, pair.rest.first)
      newcontext.setValue atom.name, value
      arguments = arguments.rest
    end
    
    result = nil
    
    args.each do |arg|
      result = AjLisp::evaluate context, arg
    end

    return result
end