(import (rename (scheme base) (* orig*))) (define * (make-procedure method: (lambda (x ::number y ::number) (orig* x y)) method: (lambda (x ::matrix y ::matrix) (multiply-matrix-matrix x y)) method: (lambda (x ::matrix y ::vector) (multiply-matrix-vector x y)))) is there a way to still have * a n-arity operator with typed methods ? because now i have this error: (* 2 3 4) Argument (null) has wrong type at gnu.mapping.CallContext.matchError(CallContext.java:185) at gnu.expr.GenericProc.applyToConsumerGP(GenericProc.java:132) at gnu.kawa.functions.ApplyToArgs.applyToConsumerA2A(ApplyToArgs.java:132) at gnu.mapping.CallContext.runUntilDone(CallContext.java:586) at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:343) at gnu.expr.ModuleExp.evalModule(ModuleExp.java:211) at kawa.Shell.run(Shell.java:289) at kawa.Shell.run(Shell.java:196) at kawa.Shell.run(Shell.java:183) at kawa.repl.processArgs(repl.java:724) at kawa.repl.main(repl.java:830) the problem is that * is no more n-arity operator now Damien anyway there is perheaps a possibility of using a variable number of args but i did not think it this evening.... perheaps tomorrow...