Class: AjLisp::FPrimitiveDefinem

Inherits:
FPrimitive show all
Defined in:
lib/ajlisp/fprimitive_definem.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_definem.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
# File 'lib/ajlisp/fprimitive_definem.rb', line 14

def apply(context, args)
    atom = args[0]
    
    if args.length > 2
      args.shift
      arguments = args.shift
      value = AjLisp::FPrimitiveMacroClosure.new arguments, args
    else
      value = AjLisp::evaluate(context, args[1])
    end

    AjLisp::context.setValue atom.name, value
    return value
end