[racket] Seamless Prolog integration

From: Jukka Tuominen (jukka.tuominen at finndesign.fi)
Date: Mon Sep 19 07:22:09 EDT 2011


inspired by the Datalog discussion, I'd like to understand better what kind
of challenges I could expect when trying to create a proof-of-concept about
integrating prolog-type-of functionality to Liitin. This would also serve as
an example/ stepping stone for others to create something more useful. Since
Prolog is a bit out of this world, I would propably ask wrong questions, so
I hope the following will give enough information to understand the

1) Prolog (type-of) functions should be used as hidden subroutines and you
could call them as racket functions (~ #lang racket notation)

2) No particular prolog engine should be running and waiting for
prolog-specific interactions. If such engine is needed (beyond plain
functions), it should be initiated and terminated automatically to meet 1)

3) The knowledge need to be stored as static/persistent objects (Liitin
objects). Again, rather than keeping them in memory, you could call them as

4) It should be possible to have several, independent knowledge bases saved
in the same (Liitin) database.

You could end-up having functions like:
 (namespace:relationship ns:person-a ns:person-b)
 (ns:can-fly? ns:a-cat)
 (ns:capital-city ns:australia)

ns: prefix refers to Liitin objects rather than local definitions.

I'd appreciate any feedback on A) if each issue is feasible, and 2)
directions on how to achieve this. Feel free to refer to any prolog
extension (or plain racket).

br, jukka

|  J U K K A   T U O M I N E N
|  m a n a g i n g   d i r e c t o r  M. A.
|  Finndesign  Kauppiaankatu 13, FI-00160 Helsinki, Finland
|  mobile +358 50 5666290
|  jukka.tuominen at finndesign.fi  www.finndesign.fi

Posted on the users mailing list.