Написать функцию lookup - Prolog

Узнай цену своей работы

Формулировка задачи:

Есть список R, например R = [x/5, y/7, x/4]. Нужно написать функцию lookup(X,R,V), где x - наш атом, R - окружение, описанное ранее, и V - результат, в котором должны быть числа, которые находятся после / заданного атома. Далее есть еще функция
test(V) :- eval(2*3+4-6/2, V). Функция eval вычисляет значение по правилам естественной семантики(Это аксиоматическая система, определяющая смысл каждой конструкции языка в виде вычисляемого ею значения. )Надо совместить функции eval и lookup так, чтобы цифры из lookup передавались в eval. Помогите пожалуйста.

Решение задачи: «Написать функцию lookup»

textual
Листинг программы
eval(N,_,N) :-
    number(N).
eval(X,R,V) :-
    atom(X),
    member(X/V,R).
eval(E,R,V) :-
    E =.. [Op,E1,E2],
    member(Op,[+,-,*,/]),
    eval(E1,R,V1),
    eval(E2,R,V2),
    Ee =.. [Op,V1,V2],
    V is Ee.

Объяснение кода листинга программы

Код выполняет оценку (eval) выражений в логическом программировании на основе заданного набора правил (R) и базы данных (lookup). Оценка выражения происходит в три этапа:

  1. Проверка, является ли N числом. Если это так, то оценка выражения N просто возвращает N.
  2. Проверка, является ли X атомом. Если это так, то оценка выражения X, R, V происходит путем поиска X/V в R.
  3. Если X не является атомом, то это означает, что X является конструкцией с оператором (E =.. [Op,E1,E2]). Проверка, является ли Op одним из трех операторов +,-,*. Если это так, то оценка выражения E, R, V сначала оценивает E1 и E2, а затем применяет соответствующий оператор к их результатам, чтобы получить V. Вот пример использования функции lookup: lookup('a', 3). Этот запрос вернет 3, потому что 'a' соответствует 3 в базе данных. lookup('b', 3). Этот запрос ничего не вернет, потому что 'b' не соответствует никакому значению в базе данных. lookup('a', 5). Этот запрос также вернет 3, потому что значение 'a' в базе данных не изменилось. lookup('c', 3). Этот запрос вернет ошибку, потому что 'c' не является допустимым термином в базе данных.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы