In LL, functions can only be defined via `defun` in the following
form:

`(defun function (var var)
. body)`

Optional, keyword, and rest parameters are not directly supported. However, in contrast to COMMON LISP, a function may have - just like a REL procedure - more than one arity. This allows REL procedures to be transformed into LL functions more easily because renaming is not necessary.

This also allows optional and keyword parameters to be simulated. For instance, the COMMON LISP function definition

`(defun f (x y &optional(z 0)) )`

can be expressed in LL as:

`(defun f (x y z) )` `(defun f (x y) (f x y 0))`

Similarly, `finite rests' (e.g. a fixed number, , of arities), can be expressed:

`(defun f () )` `(defun f (x) )` `(defun f (x x) )`