Hi Masayuki

it looks like the patch is good.

Let me do a few tests and I will check it in.

Apart from that, thanks for using CL-UNIFICATION.

Cheers

Marco





On Apr 16, 2007, at 7:00 PM, Masayuki Onjo wrote:

Hello, Marco.

I'm Masayuki Onjo, CL-UNIFICATION library user. The CL-UNIFICATION is
very cool stuff.
It's works well on AllegroCL's REPL, but COMPILE-FILE cause following error.

-- fib.lisp ---
(defun fib (n)
 (unify:match-case (n)
   (0 1)
   (#T(number n)
      (+ (fib (- n 1)) (fib (- n 2))))))

 CL-USER> (compile-file "fib.lisp")

 Object #<EMPTY UNIFY ENVIRONMENT: 1 frame @ #x22b212d2> cannot be
 written to a compiled file unless an applicable method is defined on
 make-load-form.
    [Condition of type PROGRAM-ERROR]

It seems to be a bug of the MATCH macro expansion.

 [BUG]
  (unify ',template ,object ,substitution))
    substitution := (make-empty-environment)
    => (unify temlate object #<EMPTY UNIFY ENVIRONMENT: 1 frame @ #...>)

 [CORRECT]
  (unify ',template ,object ,substitution))
    substitution := '(make-empty-environment)
    => (unify temlate object (make-empty-environment))

I make following patch, it works for me. I'm very happy to hacking
with pattern-match-based macro.  Thanks for your great work!!

cvs diff: Diffing .
Index: match-block.lisp
===================================================================
RCS file: /project/cl-unification/cvsroot/cl-unification/match-block.lisp,v
retrieving revision 1.6
diff -r1.6 match-block.lisp
13c13
<                            (substitution (make-empty-environment))
---
                           (substitution '(make-empty-environment))
63c63
<                           (default-substitution (make-empty-environment)))
---
                          (default-substitution '(make-empty-environment)))

-- 
Masayuki Onjo <onjo@lispuser.net>

--
Marco Antoniotti