;;; -*- Mode: Lisp ; Base: 10 ; Syntax: ANSI-Common-Lisp -*-
;;; Lisp2-style Erlang/ML-like Extensible Pattern-Matcher for Common LISP
-;;; Copyright (c) 2002-2009 Fahree Reedaw <fare@tunes.org>
+;;; Copyright (c) 2002-2011 Fahree Reedaw <fare@tunes.org>
#+xcvb (module (:depends-on ("packages")))
#| "
(defun eql-matcher (val)
"matcher for a given value"
`#'(lambda (,*form) (m%when (eql ,*form ',val))))
+(defun equal-matcher (val)
+ "matcher for a given value"
+ `#'(lambda (,*form) (m%when (equal ,*form ',val))))
(defun pattern-matcher (clause)
(cond
((literalp clause)
- (eql-matcher clause))
+ (equal-matcher clause))
((symbolp clause)
(aif (symbol-matcher clause)
(values it nil)
(define-symbol-matcher _ `#'m%success) ; matches everything
(define-symbol-matcher * `#'m%success) ; matches everything
-(define-macro-matcher quote #'eql-matcher)
+(define-macro-matcher quote #'equal-matcher)
(define-macro-matcher value
#'(lambda (sexp)
- `#'(lambda (,*form) (m%when (eql ,*form ,sexp)))))
+ `#'(lambda (,*form) (m%when (equal ,*form ,sexp)))))
(define-macro-matcher of-type
#'(lambda (type)
`#'(lambda (,*form) (m%when (typep ,*form ',type)))))