Changeset trunk,24
- Timestamp:
- 06/24/2007 01:48:00 AM (19 years ago)
- revision id:
- svn-v3-trunk0:2948df59-2b31-0410-8e06-c40c0b09d5b6:trunk:24
- Location:
- trunk
- Files:
-
- 2 edited
-
matching.lisp (modified) (1 diff)
-
util.lisp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/matching.lisp
r21 r24 234 234 (list 235 235 (destructuring-bind (head . tail) rule 236 ( case head236 (symcase head 237 237 (^ (destructuring-bind (regex) tail 238 238 `(if-matches-regex ,input ,regex (,next ,match) ,then ,else))) -
trunk/util.lisp
r21 r24 40 40 ((not ,cond)) 41 41 ,@body)) 42 43 (defmacro symcase (symvar &body clauses) 44 (flet ((is-default (clause) 45 (string= (symbol-name (first clause)) #.(symbol-name 't)))) 46 (let ((symname (gensym)) 47 (default-clause (find-if #'is-default clauses))) 48 `(let ((,symname (symbol-name ,symvar))) 49 (cond 50 ,@(mapcar (lambda (clause) 51 (destructuring-bind (sym form) clause 52 `((string= ,symname ,(symbol-name sym)) ,form))) 53 (remove-if #'is-default clauses)) 54 ,@(when default-clause 55 (destructuring-bind (sym form) default-clause 56 `((,sym ,form)))))))))
Note: See TracChangeset
for help on using the changeset viewer.
