diff --git a/Definition.md b/Definition.md index 71c16e7..a386a2a 100644 --- a/Definition.md +++ b/Definition.md @@ -55,3 +55,32 @@ The following evaluates to 5: x ``` +## defn + +macro: (defn _sym_ _lambda-list_ . _body_) + +defn defines a new function in the default global environment. + +defn is a shorter way to define functions. It is a macro defined in the standard library. The following code: + +``` +(defn my-add (a b) + (+ a b)) +``` + +... is equivalent to a combination of `def` and `fn`, as seen below: + +``` +(def my-add (fn (a b) + (+ a b))) +``` + +The body may be comprised of many forms. In this case, the entire body code is pasted directly into the `fn` form. +As in `fn`, the entire body of the function will be executed when the declared function is called, and the +value of the last expression executed is returned as the value of the function call. + +## defmacro + +macro: (defmacro _sym_ _lambda-list_ . _body_) + +defmacro is similar to `defn`, with the exception that it defines a new macro in the default global environment. \ No newline at end of file