A different syntax for specifying named arguments in Racket
> (require named-arguments/square-brackets)
> (define (kinetic-energy [mass 0] [speed 0])
(* 1/2 mass (* speed speed)))
> (kinetic-energy [mass 1] [speed 1])
1/2
> (kinetic-energy [speed 1] [mass 2])
1
> (kinetic-energy [speed 2] [mass 2])
4
> (require named-arguments/curly-braces)
> (define (kinetic-energy {mass 0} {speed 0})
(* 1/2 mass (* speed speed)))
> (kinetic-energy {mass 1} {speed 1})
1/2
> (kinetic-energy {speed 1} {mass 2})
1
> (kinetic-energy {speed 2} {mass 2})
4