2015-01-05 2 views
2

У меня это довольно простая программа прологаВыполнение программы пролог

min(P1, P2):- 
(
    atom_number(P1, L1), 
    atom_number(P2, L2), 
    ( L1 > L2 
    -> writeln('L2 id min'), 
     writeln(L2) 
    ; L1 < L2 
    -> writeln('L1 is mean'), 
     writeln(L1) 
) 
) 

Я бегу это как это из командной строки -

swipl -f pro1.pl 

ALS пытались использовать

swipl -f pro1.pro 

, а затем в пролог

min(19,12). 

дает ошибку:

ERROR: toplevel: Undefined procedure: min/2 (DWIM could not correct goal) 

любой помощь>

ответ

1

синтаксический, коду нужна некоторая коррекция. Скажем, я ставлю в x.pl этого кода

min(P1, P2):- 
    atom_number(P1, L1), 
    atom_number(P2, L2), 
    ( L1 > L2 
    -> writeln('L2 id min'), 
     writeln(L2) 
    ; L1 < L2 
    -> writeln('L1 is mean'), 
     writeln(L1) 
) 
. 

, то я могу сделать в командной строке оболочки

swipl x.pl 

и выдавать некоторый запрос

:~$ swipl x.pl 
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.1.28) 
Copyright (c) 1990-2014 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). 

?- min(3,5). 
ERROR: atom_number/2: Type error: `atom' expected, found `3' (an integer) 
?- min('3','5'). 
L1 is mean 
3 
true. 

?- 
+0

спасибо, почему она не работает с 'x.pro'? – puncrazy

+0

только расширение .pl 'верное? – puncrazy

+1

Да, по умолчанию .pl это принятое расширение. Я пробовал, .pro не бросает ошибки, но он не распознает min/2 – CapelliC

Смежные вопросы