打印列表中两个原子的第一个字母。我什至无法获取列表中两个原子之一的第一个字母。
grab_letter([],[]).
grab_letter([A],[B]) :- A = [First|_], B = [Second|_].
?- grab_letter([apple,pie]).
true ?
我如何打印“ a”?
答案 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
谓词也不是一个好主意,因为它导致创建一个临时列表(最终将被垃圾收集)以访问第一个字符