Toon posts:

[PROLOG] Bestanden Consulten

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een database met opzettelijke 'fouten' erin. Misschien moet ik er even bijvertellen dat het over een opdracht van school gaat. Maar oke, de opdracht was dus om constraints te maken over de 'foutieve' opdracht. Dit heb ik allemaal kunnen doen, maar nu wil ik er graag .pl-bestanden van maken, zodat ik ze kan 'consulten' binnen prolog om direct de uitvoer van (alle) constraints te kunnen genereren. Dit moet toch mogelijk zijn?

Echter, als ik bijvoorbeeld één constraint als .pl-bestand opsla met de volgende inhoud, en deze vervolgens via 'file - consult' laadt, dan krijg ik een fout.

De code:
code:
1
2
3
4
5
6
%Primaire sleutel check tabel Speler:
  speler(Speler,_,_,_,_),
  findall(Speler,speler(Speler,_,_,_,_),LijstMetSpelers),
  length(LijstMetSpelers,Aantal), Aantal>1,!,
  write('Uniciteitsprobleem: '),
  write(Speler),write(' komt meer dan 1x voor!'), nl, fail.


De fout:
code:
1
2
3
|    ERROR: (c:/documents and settings/rogier/bureaublad/test.pl:3):
        Full stop in clause-body?  Cannot redefine ,/2
% c:/Documents and Settings/Rogier/Bureaublad/test.pl compiled 0.00 sec, 512 bytes

Wie wee waar dit aan kan liggen?

Verwijderd

Topicstarter
Niemand die mij uit m'n lijden kan verlossen?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

De comma is bij prolog een infix geschreven and-achtige operator. Je zou dit ook prefix als volgt kunnen schrijven:

,(speler(....) ,(findall(...)......).

Zoals je ziet probeer je dus definitie van de and-operator te overriden, en dat vind Prolog niet goed. Verder ben ik niet thuis in de consult van Prolog, dus daar kan ik je niet verdermee helpen.

[ Voor 16% gewijzigd door Alarmnummer op 21-01-2004 10:24 ]


Verwijderd

Topicstarter
Maar heb je enig idee waarom het wel goed gaat als ik de code gewoon 'plak' in Prolog? Wat dan zou dat toch eigenlijk ook niet goed moeten gaan?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Verwijderd schreef op 21 januari 2004 @ 10:37:
Maar heb je enig idee waarom het wel goed gaat als ik de code gewoon 'plak' in Prolog? Wat dan zou dat toch eigenlijk ook niet goed moeten gaan?
Je voegt dan een structure toe:
persoon(jan)
speler(klaas,1990,geel).

En dat is geen probleem omdat je daar geen systeem predikaten mee override. En je moet je ook realiseren hoe je het toevoegt aan Prolog: als query of als rule/fact. Als query ga je kijken of dit klopt en override je verder niets (er komt geen nieuw fact in je rulebase bij). ALs je het als rule gaat toevoegen dan override je in jouw geval dus een systeem predikaat.

[edit]
Overriden is niet helemaal het goeie woord, maar ik hoop dat je snapt wat ik bedoel.

[ Voor 41% gewijzigd door Alarmnummer op 21-01-2004 10:47 ]


Verwijderd

Topicstarter
Oke, ik ga ermee aan de slag. Dankje...
Pagina: 1