MyTetra Share
Делитесь знаниями!
Как происходит передача результатов работы функций в Prolog
Время создания: 14.03.2010 02:08
Текстовые метки: prolog
Раздел: Компьютер - Программирование - Язык Пролог (Prolog)
Запись: xintrea/mytetra_syncro/master/base/0000001453/text.html на raw.github.com

Пролог - язык логического программирования, и тут всё возвращает булевые значения. Либо true, либо false. Передача всего остального идёт через переменные, как например тут:

squared(X, Result) :-

Result is X * X.

Сама функция squared может возвращать только значения false или true. Результат функции возвращается через переменную. В данном случае - через переменную Result.

Что возвращает предложение:

average(A, B, Result) :-

Result is (A + B) / 2.

improve(X, Guess, Result) :-

average(Guess, (X / Guess), Result).

?

Ответ: функция improve вернет булевое значение. Если вы обратитесь к improve с явными аргументами, например improve(1, 2, 3), то получите false, ибо 3 не есть результат усреднения чисел 2 и 0.5. Но используется improve именно для получения среднего арифметического между Guess и (X / Guess), передача этого значения осуществляется через переменную Result.

Это такая фишка Пролога - можно использовать "функции" как для тестирования утверждений, так и для вычислений, смотря как вызывать.

 
MyTetra Share v.0.59
Яндекс индекс цитирования