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

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Thu Jul 3 09:04:11 EDT 2014

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

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



Posted on the users mailing list.