打印原子序言的首字母

时间:2019-03-21 04:18:01

标签: prolog

打印列表中两个原子的第一个字母。我什至无法获取列表中两个原子之一的第一个字母。

grab_letter([],[]).
grab_letter([A],[B]) :- A = [First|_], B = [Second|_]. 

?- grab_letter([apple,pie]).

true ? 

我如何打印“ a”?

1 个答案:

答案 0 :(得分:3)

ISO Prolog标准指定了sub_atom/5内置谓词,这些谓词可以将原子分解为子原子。第一个参数是原子,第二个参数是子原子之前的字符数,第三个参数是子原子的长度,第四个参数是子原子之后的字符数,第五个参数是子原子。例如:

| ?- sub_atom(apple, 0, 1, _, First).

First = a
yes

| ?- sub_atom(pie, 0, 1, _, First).  

First = p
yes

您可以从处理包含原子的列表的代码中调用此谓词。您可以尝试使用更新的代码来编辑问题吗?

在注释中建议使用替代的标准atom_chars/2谓词也不是一个好主意,因为它导致创建一个临时列表(最终将被垃圾收集)以访问第一个字符