[Openmcl-devel] pattern matching

Greg Pfeil greg at clozure.com
Sat Dec 4 05:22:20 PST 2010


On 4 Dec 2010, at 8:02, Taoufik Dachraoui wrote:

> Hello
> 
> I wrote a matching pattern function and would like to share in order
> to improve it (remove the compiler warnings for example, see below).
> 
> I started with the destruc function found in onLisp book by Paul Graham.

I don't recall if it has any type restrictions, but I tend to use CL Unification (http://common-lisp.net/project/cl-unification/) for pattern matching stuff.

> Any matching symbol x can be typed  and must be of the form (:type x #'name)
> where name is a boolean function with one argument (eg. numberp, consp, symbolp, 
> atom, ...)

Why not have the form be (:type var typename), like (:type x '(integer 0 9))? Then you get much finer control without having to define unary functions for every type you care about. Should be able to just replace (funcall ,(third pat) (car ,seq)) with (typep (car ,seq) ,(third pat)) and you're golden.


More information about the Openmcl-devel mailing list