summaryrefslogtreecommitdiff
path: root/src/l-system.lisp
diff options
context:
space:
mode:
authorBruno Cichon <ebrasca.ebrasca@gmail.com>2015-11-04 16:31:55 +0100
committerBruno Cichon <ebrasca.ebrasca@gmail.com>2015-11-04 16:31:55 +0100
commit85ed3c869b52562a5c11a0438d56a304eb409adf (patch)
tree1ab88d9b57791832045dc8fc4238223199986661 /src/l-system.lisp
parent00e055406031fab6f4e2e5122c50c4050a1eb253 (diff)
Add deflsys
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))