summaryrefslogtreecommitdiff
path: root/src/l-system.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'src/l-system.lisp')
-rw-r--r--src/l-system.lisp8
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))