module Rus3::Procedure::Arithmetic

This module holds arithmetic operation procedures of Scheme.

Public Instance Methods

add(*args) click to toggle source
# File lib/rus3/procedure/arithmetic.rb, line 10
def add(*args)
  a_calc(:+, *args)
end
div(*args) click to toggle source
# File lib/rus3/procedure/arithmetic.rb, line 22
def div(*args)
  a_calc(:/, *args)
end
mod(*args) click to toggle source
# File lib/rus3/procedure/arithmetic.rb, line 26
def mod(*args)
  a_calc(:%, *args)
end
mul(*args) click to toggle source
# File lib/rus3/procedure/arithmetic.rb, line 18
def mul(*args)
  a_calc(:*, *args)
end
subtract(*args) click to toggle source
# File lib/rus3/procedure/arithmetic.rb, line 14
def subtract(*args)
  a_calc(:-, *args)
end

Private Instance Methods

a_calc(op, *args) click to toggle source
# File lib/rus3/procedure/arithmetic.rb, line 32
def a_calc(op, *args)
  case args.size
  when 0
    0
  when 1
    args[0]
  else
    a_calc(op, args[0].send(op, args[1]), *args[2..-1])
  end
end