The curryn and currynr functions construct a curried version
of f, specialized at x..., that produces a result after
n further applications. Arguments at any stage of application may
include keyword arguments, so long as no keyword is duplicated. These curried
functions obey the following equations:

1.5Parameter Arguments

Constructs a function much like lambda, except that some optional
arguments correspond to the value of a parameter. For each clause of the form
[id#:paramparam-expr], param-expr must evaluate to a value
param satisfying parameter?. The default value of the
argument id is (param); param is bound to id
via parameterize during the function call.