Prolog 打印atom序言的第一个字母
打印列表中两个原子的第一个字母。我甚至无法打印列表中两个原子之一的第一个字母Prolog 打印atom序言的第一个字母,prolog,Prolog,打印列表中两个原子的第一个字母。我甚至无法打印列表中两个原子之一的第一个字母 grab_letter([],[]). grab_letter([A],[B]) :- A = [First|_], B = [Second|_]. ?- grab_letter([apple,pie]). true ? 我怎样才能让它打印一张照片 ISO Prolog标准指定了一个sub_atom/5内置谓词,可以将一个原子分解为一个子原子。第一个参数是原子,第二个参数是子原子之前的字符数,第三个参数是子原
grab_letter([],[]).
grab_letter([A],[B]) :- A = [First|_], B = [Second|_].
?- grab_letter([apple,pie]).
true ?
我怎样才能让它打印一张照片 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谓词,如注释中所建议的,这不是一个好主意,因为它会导致创建一个临时列表,最终只为了访问第一个字符而对其进行垃圾收集。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谓词(如注释中所建议的那样)不是一个好主意,因为它会创建一个临时列表,最终只为了访问第一个字符而对其进行垃圾收集。atom_chars/2是您的朋友!那么...怎么样有一个原子没有第一个字符。atom_chars/2是你的朋友!那么...怎么样有一个原子没有第一个字符。