Простая загрузка факториальной программы на Прологе

Я изучаю Пролог с помощью SWI-Prolog. Вот мой тренировочный код в файле fact.pl:

factorial(N,F) :- N is 0, F is 1;
              N > 0, M is N - 1, factorial(M,G), F is N*G.

Пока я пытался загрузить этот файл с помощью [fact.pl], интерпретатор выдает следующую ошибку:

?- [fact.pl].
ERROR: Syntax error: Operator expected
ERROR: [fact
ERROR: ** here **
ERROR: .pl] .

Я не уверен, как это происходит, и я почти уверен, что я сделал стандартную команду загрузки программы.

Кто-нибудь когда-либо видел это, пожалуйста, помогите, спасибо.


person Allan Jiang    schedule 04.10.2012    source источник


Ответы (3)


либо ?- [fact]., либо ?- ['fact.pl']. должны работать

person CapelliC    schedule 04.10.2012

используйте consult(fact) или consult('fact.pl')

ниже еще одна простая программа

factorial(0,1). 

factorial(N,F) :-  
   N>0, 
   N1 is N-1, 
   factorial(N1,F1), 
   F is N * F1.

the factorial of 0 is 1

the factorial of N is F if N>0 and N1 is N-1 and the factorial of N1 is F1 and F is N*F1

person NIMISHAN    schedule 05.08.2017

Когда я скомпилировал вашу программу, она дала мне следующий ответ.

факториал(5,F). Ф = 120; ложный.

Это означает, что ваша программа работает правильно.

factorial(N,F) :- N is 0, F is 1,**!**;N > 0, M is N - 1, factorial(M,G), F is N*G.

Включите оператор cut (!). Тогда вы сможете избежать ложной части вывода.

person Dinithi    schedule 17.12.2012