t3x.org / sketchy / library / times.html
SketchyLISP
Reference
  Copyright (C) 2007
Nils M Holm

*

Conformance: R5RS Scheme

Purpose: Multiply numbers.

Arguments:
A... - numbers

Implementation:

(define (* . a)
  (letrec
    ((_itimes
       (lambda (a b)
         (cond
           ; avoid leading zeroes in result
           ((zero? a) 0)
           ; handle signs
           ((eq? (negative? a) (negative? b))
             (n* (abs a) (abs b)))
           (else (negate (n* (abs a) (abs b)))))))
     (i*
       (lambda (a b)
         (_itimes (integer a) (integer b)))))
    (fold-left i* 1 a)))

Example:

(* 2 3 4) 
=> 24

See also:
digits, +, -, quotient, remainder, n*.