info-gnuprologjava
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Info-gnuprologjava] problems running a simple quicksort example


From: Benjamin Martin Brunzel
Subject: [Info-gnuprologjava] problems running a simple quicksort example
Date: Wed, 10 Nov 2010 14:51:33 +0100 (CET)
User-agent: SquirrelMail/1.4.8-5.el5.centos.10

Hi Folks,

I am currently trying to run a simple quicksort example using gnu prolog
for java. I get an exception every time I  use a prolog file with more
then one rule in it.
I think the problem might be the representation of lists in a CompoundTerm
object.
Does anyone know what is wrong with it?
Is there a simple example program available?

The Java Class:

  1 import gnu.prolog.term.*;
  2 import gnu.prolog.vm.Environment;
  3 import gnu.prolog.vm.Interpreter;
  4 import gnu.prolog.vm.PrologException;
  5
  6
  7 public class Test {
  8
  9         /**
 10          * @param args
 11          * @throws PrologException
 12          */
 13         public static void main(String[] args) throws PrologException {
 14
 15                 Environment e = new Environment();
 16                
e.ensureLoaded(AtomTerm.get("C:\\Path\\to\\prolog\\files\\quicksort.pl"));
 17                 Interpreter i = e.createInterpreter();
 18                 e.runInitialization(i);
 19
 20                 VariableTerm ergebnis = new VariableTerm("ergebnis");
 21                 IntegerTerm[] elemente = new IntegerTerm[5];
 22                 elemente[0] = new IntegerTerm(5);
 23                 elemente[1] = new IntegerTerm(8);
 24                 elemente[2] = new IntegerTerm(1);
 25                 elemente[3] = new IntegerTerm(7);
 26                 elemente[4] = new IntegerTerm(3);
 27
 28                 CompoundTerm liste = new CompoundTerm(".", elemente);
 29
 30                 Term[] argumente = {ergebnis, liste};
 31
 32                 CompoundTerm anfrage = new CompoundTerm("quicksort",
argumente);
 33
 34                 System.out.println(ergebnis);
 35
 36                 Interpreter.Goal goal = i.prepareGoal(anfrage);
 37                 int rc = i.execute(goal);
 38                 System.out.println(rc);
 39
 40                 System.out.println(ergebnis);
 41
 42         }
 43
 44 }

The Prolog File:

quicksort(A, A).
quicksort([Kopf|Rest], SortierteListe):- teilen(Kopf, Rest, Kleiner,
Groesser),quicksort(Kleiner, Kleiner_Sortiert),quicksort(Groesser,
Groesser_Sortiert),append(Kleiner_Sortiert    , [Kopf|Groesser_Sortiert],
SortierteListe).
teilen(_, [], [], []).
teilen(Element, [Kopf|Rest], [Kopf|Kleiner], Groesser):-Kopf < Element,
!,teilen(Element, Rest, Kleiner, Groesser).
teilen(Element, [Kopf|Rset], Kleiner, [Kopf|Groesser]):-teilen(Element,
Rest, Kleiner, Groesser).


I used the version 0.2.5

Please note that I am not on the mailing list so please cc me on your
answers.

Thanks for your support.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]