Class: Nydp::Builtin::Plus

Inherits:
Object
  • Object
show all
Defined in:
lib/nydp/builtin/plus.rb

Instance Method Summary collapse

Instance Method Details

#invoke(vm, args) ⇒ Object



2
3
4
# File 'lib/nydp/builtin/plus.rb', line 2

def invoke vm, args
  vm.push_arg sum(args, origin(args.car))
end

#origin(obj) ⇒ Object



14
15
16
17
18
19
20
21
22
23
# File 'lib/nydp/builtin/plus.rb', line 14

def origin obj
  case obj
  when Fixnum
    0
  when Nydp::Pair
    Nydp.NIL
  when String, Nydp::StringAtom
    Nydp::StringAtom.new ""
  end
end

#sum(args, accum) ⇒ Object



6
7
8
9
10
11
12
# File 'lib/nydp/builtin/plus.rb', line 6

def sum args, accum
  if Nydp.NIL.is? args
    accum
  else
    sum(args.cdr, (accum + args.car))
  end
end

#to_sObject



25
26
27
# File 'lib/nydp/builtin/plus.rb', line 25

def to_s
  "Builtin:+"
end