<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  
</head>
<body text="#000000" bgcolor="#ffffff">
Greg,<br>
<br>
This may be of no importance, but: unification is<br>
a very powerful mechanism.  If one is using<br>
cl-unification to do simple things like<br>
what defmacro does, is it reasonably fast?<br>
<br>
-- Dan<br>
<br>
Greg Pfeil wrote:
<blockquote type="cite" cite="mid:3F9E0E9A-265B-40BD-83B1-96362FDF3737@clozure.com">
  <pre wrap="">On 4 Dec 2010, at 8:02, Taoufik Dachraoui wrote:

  </pre>
  <blockquote type="cite">
    <pre wrap="">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.
    </pre>
  </blockquote>
  <pre wrap=""><!---->
I don't recall if it has any type restrictions, but I tend to use CL Unification (<a href="http://common-lisp.net/project/cl-unification/" class="moz-txt-link-freetext">http://common-lisp.net/project/cl-unification/</a>) for pattern matching stuff.

  </pre>
  <blockquote type="cite">
    <pre wrap="">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, ...)
    </pre>
  </blockquote>
  <pre wrap=""><!---->
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.
_______________________________________________
Openmcl-devel mailing list
<a href="mailto:Openmcl-devel@clozure.com" class="moz-txt-link-abbreviated">Openmcl-devel@clozure.com</a>
<a href="http://clozure.com/mailman/listinfo/openmcl-devel" class="moz-txt-link-freetext">http://clozure.com/mailman/listinfo/openmcl-devel</a>
  </pre>
</blockquote>
</body>
</html>