Portál AbcLinuxu, 10. května 2025 07:56

Dotaz: Prolog - začínáme, aneb první chybová hláška

15.12.2013 01:53 asfa
Prolog - začínáme, aneb první chybová hláška
Přečteno: 677×
Odpovědět | Admin
Čau, už přes hodinu si mořím hlavu, jak začít prologovat, nebo spustit funkční soubor... Zde je mně dodaný funkční kód:
muz(martin).
muz(mirek).
zena(zuzana).
zena(lenka).

matka(lenka,martin).
matka(lenka,zuzana).
otec(mirek,martin).
otec(mirek,zuzana).


rodic(R, P):- matka(R,P); otec(R,P).
Naintaloval jsem swi-prolog z repozitáře (Ubuntu 13.04). Zkouším prolog do Terminálu, či swipl a pokaždé mi interpret vrací jinou chybu:
$ prolog
GNU Prolog 1.3.0
By Daniel Diaz
Copyright (C) 1999-2007 Daniel Diaz
| ?- muz(martin).
uncaught exception: error(existence_error(procedure,muz/1),top_level/0)
| ?- 
Nebo:
$ swipl
% library(swi_hooks) compiled into pce_swi_hooks 0.00 sec, 2,224 bytes
Welcome to SWI-Prolog (Multi-threaded, 32 bits, Version 5.10.4)
Copyright (c) 1990-2011 University of Amsterdam, VU Amsterdam
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.

For help, use ?- help(Topic). or ?- apropos(Word).

?- muz(martin).
ERROR: toplevel: Undefined procedure: muz/1 (DWIM could not correct goal)
?- 

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

15.12.2013 08:20 alias01 | skóre: 4
Rozbalit Rozbalit vše Re: Prolog - začínáme, aneb první chybová hláška
Odpovědět | | Sbalit | Link | Blokovat | Admin
To enter rules from the command line, type this :
[user].
After having entered the knowledge, type CONTROL-D to come back to the mode where you can enter goals (questions).
http://jmvanel.free.fr/ai/prolog-getting-started.html
16.12.2013 02:56 mtmr
Rozbalit Rozbalit vše Re: Prolog - začínáme, aneb první chybová hláška
Odpovědět | | Sbalit | Link | Blokovat | Admin
Celá čáast nad 'rodic(R, P):- matka(R,P); otec(R,P).' je popis programu, ten nejdřív do prologu musíš nahrát (jako zdroják). Až tím 'rodic(R, P):- matka(R,P); otec(R,P).' spoušíš na programu svůj výpočet. Chybu tě to hází, protože ty teď máš ten program vlasně prázný a voláš funkci 'muz/1'. (Syntax tě neporadím, žu jsem pár let prolog neviděl.)
Řešení 1× (mimi.vx)
17.12.2013 02:35 T
Rozbalit Rozbalit vše Re: Prolog - začínáme, aneb první chybová hláška
Odpovědět | | Sbalit | Link | Blokovat | Admin
Prolog říká, že nezná daný predikát. Zdrojový kód ulož do souboru, např. 'example.pro', poté spusť prolog/swipl a zadej
consult('example.pro').
Tím načteš zdrojový kód a volání muz(martin) by mělo vrátit výsledek. Pro opětovné načtení je reconsult, ale nepamatuju se, čím se liší. Myslím, že i šlo spouštět swipl s nějakými parametry, které řekly, že má při startu načíst soubor.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.