case-lambda

[syntax] case-lambda (formals body) ...

SRFI-16, ChezScheme, Chicken, MzScheme, Gauche, STklos

(define plus
   (case-lambda 
     (() 0)
     ((x) x)
     ((x y) (+ x y))
     ((x y z) (+ (+ x y) z))
     (args (apply + args))))

(plus)                     --> 0
(plus 1)                   --> 1
(plus 1 2 3)               --> 6

((case-lambda 
   ((a) a)
   ((a b) (* a b)))
 1 2 3)                    --> error

See also lambda.