From 85ed3c869b52562a5c11a0438d56a304eb409adf Mon Sep 17 00:00:00 2001 From: Bruno Cichon Date: Wed, 4 Nov 2015 16:31:55 +0100 Subject: Add deflsys --- src/l-system.lisp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/l-system.lisp') 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)) -- cgit v1.2.3-54-g00ecf