[racket] [racket-users]Is Racklog suitable to learn Prolog? A simple example just fails.

From: WarGrey Gyoudmon Ju (juzhenliang at gmail.com)
Date: Thu Jul 3 10:53:37 EDT 2014

Sorry, my example is not correct.
But this one still does not work:

#lang at-exp racket

(require racklog)

(define %edge
  (%rel ()
    [('a 'b)]
    [('b 'c)]
    [('c 'd)]
    [('d 'a)]))

(define %path
  (%rel (X Y Z)
    [(X Y) (%edge X Y)]
    [(X Y) (%edge X Z) (%path Z Y)]))

(let answer ([r (%which (X Y) (%path X Y))])
  (printf "~a --> ~a~n" (cdar r) (cdadr r))
  (answer (%more)))

This version also will not terminate.

On Thu, Jul 3, 2014 at 9:04 PM, Matthias Felleisen <matthias at ccs.neu.edu>
wrote:

>
> If you want to learn Prolog, why not use a free Prolog implementation?


Simply speaking, Modern Prolog seems to cut the illumos-based SunOS off, I
cannot build it without headache and they does not answer me about this
issue.
So I wander if Racklog is a legacy package?


>
> If you want to learn about relational programming, use miniKanren, which
> is available of cKanren. Then you can also get to constraints. Maintainer
> cc-ed.
>
> -- Matthias
>
>
>
> On Jul 3, 2014, at 6:48 AM, WarGrey Gyoudmon Ju wrote:
>
> > This example is rewritten from the datalog version.
> >
> > #lang racket
> >
> > (require racklog)
> >
> > (define %edge
> >   (%rel ()
> >     [('a 'b)]
> >     [('b 'c)]
> >     [('c 'd)]
> >     [('d 'a)]))
> >
> > (define %path
> >   (%rel (X Y)
> >     [(X Y) (%edge X Y)]
> >     [(X Y) (%edge X 'Z)
> >              (%path 'Z Y)]))
> >
> > (%find-all (X Y) (%path X Y))
> >
> > It only gives four results.
> >
> > #lang racklog
> >
> > edge(a, b).
> > edge(b, c).
> > edge(c, d).
> > edge(d, a).
> >
> > path(X, Y) :- edge(X, Y).
> > path(X, Y) :- edge(X, Z), path(Z, Y).
> >
> > path(X, Y)?
> >
> > and this version will not terminate.
> >
> > Thanks in advance.
> > ____________________
> >  Racket Users list:
> >  http://lists.racket-lang.org/users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20140703/c3820a28/attachment.html>

Posted on the users mailing list.