diff options
author | Bruno Cichon <ebrasca.ebrasca@gmail.com> | 2015-11-04 16:31:55 +0100 |
---|---|---|
committer | Bruno Cichon <ebrasca.ebrasca@gmail.com> | 2015-11-04 16:31:55 +0100 |
commit | 85ed3c869b52562a5c11a0438d56a304eb409adf (patch) | |
tree | 1ab88d9b57791832045dc8fc4238223199986661 /src/l-system.lisp | |
parent | 00e055406031fab6f4e2e5122c50c4050a1eb253 (diff) |
Add deflsys
Diffstat (limited to 'src/l-system.lisp')
-rw-r--r-- | src/l-system.lisp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/l-system.lisp b/src/l-system.lisp index 0fcf0ce..743e5ea 100644 --- a/src/l-system.lisp +++ b/src/l-system.lisp @@ -25,11 +25,17 @@ (iter (for clause in clauses) (appending (let ((func (gethash (car clause) *l-system-clauses*))) (if (functionp func) - (let ((result (funcall func (rest clause)))) + (let ((result (apply func + (rest clause)))) (when result result)) (list clause)))))) +(defmacro deflsys (symbol vars &body body) + `(def-l-system-clause ',symbol + (lambda ,vars + ,@body))) + (defun def-l-system-clause (symbol lambda) (setf (gethash symbol *l-system-clauses*) lambda)) |