[racket] [racket-users]Is Racklog suitable to learn Prolog? A simple example just fails.
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