Class: Nydp::Builtin::Minus
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
|
21
|
# File 'lib/nydp/builtin/minus.rb', line 21
def name ; "-" ; end
|