diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/l-system.lisp | 8 | ||||
-rw-r--r-- | src/package.lisp | 1 |
2 files changed, 8 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)) diff --git a/src/package.lisp b/src/package.lisp index 3388533..346e8a2 100644 --- a/src/package.lisp +++ b/src/package.lisp @@ -6,6 +6,7 @@ #:l-system #:map-l-system #:def-l-system-clause + #:deflsys #:turtle-system #:list-of-vectors->list)) |