Class: Nydp::Builtin::Minus

Inherits:
Object show all
Includes:
Base, Singleton
Defined in:
lib/nydp/builtin/minus.rb

Instance Method Summary collapse

Methods included from Base

#builtin_invoke_1, #builtin_invoke_2, #builtin_invoke_3, #builtin_invoke_4, #handle_error, #inspect, #invoke, #nydp_type, #to_s

Methods included from Helper

#cons, #list, #literal?, #pair?, #sig, #sym, #sym?

Methods included from Converter

#n2r, #r2n

Instance Method Details

#builtin_invoke(vm, args) ⇒ Object



9
10
11
# File 'lib/nydp/builtin/minus.rb', line 9

def builtin_invoke vm, args
  vm.push_arg diff(args.cdr, args.car)
end

#diff(args, accum) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/nydp/builtin/minus.rb', line 13

def diff args, accum
  if Nydp::NIL.is? args
    accum
  else
    diff(args.cdr, (accum - args.car))
  end
end

#invoke_1(vm) ⇒ Object



4
# File 'lib/nydp/builtin/minus.rb', line 4

def invoke_1 vm             ; vm.push_arg 0             ; end

#invoke_2(vm, a) ⇒ Object



5
# File 'lib/nydp/builtin/minus.rb', line 5

def invoke_2 vm, a          ; vm.push_arg -a            ; end

#invoke_3(vm, a0, a1) ⇒ Object



6
# File 'lib/nydp/builtin/minus.rb', line 6

def invoke_3 vm, a0, a1     ; vm.push_arg(a0 - a1)      ; end

#invoke_4(vm, a0, a1, a2) ⇒ Object



7
# File 'lib/nydp/builtin/minus.rb', line 7

def invoke_4 vm, a0, a1, a2 ; vm.push_arg(a0 - a1 - a2) ; end

#nameObject



21
# File 'lib/nydp/builtin/minus.rb', line 21

def name ; "-" ; end