这个谓词做什么?

时间:2020-03-31 20:06:37

标签: prolog

我相信,该Prolog谓词的目的是采用一个字符串(表示为列表),并将其翻译为fsm的接受语言。这来自我的AI课程,该课程使用Prolog进行所有操作,Prolog是我不太熟悉的语言:

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).

就像我说的那样,我对Prolog还是很陌生,尽管我尝试学习如何使用它进行编码,但我只是不习惯于声明式编程,而理解代码背后的原因对我来说真的很困难。我们将不胜感激关于此代码如何逐步起作用的任何见解(甚至可以更全面地概述我应该如何考虑在Prolog中进行编码)。谢谢!

0 个答案:

没有答案
相关问题