Что делает этот предикат? - PullRequest
0 голосов
/ 31 марта 2020

Этот предикат Пролога, я полагаю, предназначен для того, чтобы взять строку, которая выражается в виде списка, перевести ее на принимающий язык ФСМ. Это мой курс ИИ, который делает все на Прологе, языке, с которым я не слишком опытен:

str2fsm( [], [], [q0]).
str2fsm( [H|T], Trans, [Last]) :-
  mTL( T, [H], [[q0, H, [H]]], Trans, Last).

/* mTL( +More, +LastSoFar, +TransSoFar, ?Trans, ?Last) */

mTL( [], L, Trans, Trans, L).
mTL( [H|T], L, TransSoFar, Trans, Last) :-
  mTL( T, [H|L], [ [L,H,[H|L]] | TransSoFar], Trans, Last).

Как я уже сказал, я довольно новичок в Прологе и, несмотря на мои попытки выучить Как программировать с этим, я просто не привык к декларативному программированию, и понимание причин, лежащих в основе кода, для меня действительно сложно. Любая идея о том, как этот код работает шаг за шагом, будет принята с благодарностью (или даже более общий обзор того, как я должен думать о кодировании в Прологе). Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...