Re: pilog: unification in variables that are clauses

2011-07-01 Thread Alexander Burger
Hi Doug,

the following works:

   (be a (3))

   (be foo @C
  (2 - @C) )


   : (? (foo (a @Z)))
@Z=3
   - NIL

I spied what 'call/1' is doing ;-) That number magic with '2' is a bit
tricky, I'm never sure what level to pick. Basically it tells the
interpreter with which level it should unify (here, the level outside of
'foo').


Actually, you could also use

   (be foo (@C)
  (2 cons (- @C)) )

but this needs additional consing for the expression to match, so I
would avoid it. It depends on what else is done with '@C'.

Cheers,
- Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe


Re: pilog: unification in variables that are clauses

2011-07-01 Thread Doug Snead
Thanks Alex!!!

We have golog in pilog.  Er, I think :-)  If not we're pretty dang close.   
Still trying to get the simple elevator example going from Knowledge in 
Action as a test.  http://www.cs.toronto.edu/cogrobo/kia/simpleElevator 
 http://books.google.com/books?q=%22proc%28goFloor%22  etc.

After golog, maybe indigolog ? 

With miniPicoLisp at 100 to 150k (depending on platform, build options, etc.) 
and with pilog + golog loaded, it has to be the smallest footprint golog (with 
a respectable prolog and lisp under the hood), around.  Might be right for 
embedded systems, I'm thinking. 

Cheers,

Doug









--- On Thu, 6/30/11, Alexander Burger a...@software-lab.de wrote:

 From: Alexander Burger a...@software-lab.de
 Subject: Re: pilog: unification in variables that are clauses
 To: picolisp@software-lab.de
 Date: Thursday, June 30, 2011, 11:55 PM
 Hi Doug,
 
 the following works:
 
    (be a (3))
 
    (be foo @C
       (2 - @C) )
 
 
    : (? (foo (a @Z)))
     @Z=3           
     
    - NIL
 
 I spied what 'call/1' is doing ;-) That number magic with
 '2' is a bit
 tricky, I'm never sure what level to pick. Basically it
 tells the
 interpreter with which level it should unify (here, the
 level outside of
 'foo').
 
 
 Actually, you could also use
 
    (be foo (@C)
       (2 cons (- @C)) )
 
 but this needs additional consing for the expression to
 match, so I
 would avoid it. It depends on what else is done with '@C'.
 
 Cheers,
 - Alex
 -- 
 UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

--
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe