遇到这个任务有些麻烦.
目前我已经尝试了这个,我知道这是错误的,因为我不确定如何将L分为头部和尾部,但这是我想要的那种想法.
second(L,E) :- [H | E | T]
Run Code Online (Sandbox Code Playgroud)
我认为E必须在头部之后才能成为第二个元素.不过我是这门语言的新手,想要一些见解.如何从谓词的编写方式中获得这个头和尾.对此问题的一些见解将非常感激.谢谢.
您可以将统一移动到子句的头部并简单地写:
second([_, Second| _], Second).
Run Code Online (Sandbox Code Playgroud)
列表的表示法是用逗号分隔初始元素,然后用垂直条分隔列表尾部,即包含其余元素的列表.您可以在Prolog顶级解释器上尝试的一些示例应该更清楚:
?- [1, 2, 3] = [Head| Tail].
Head = 1,
Tail = [2, 3].
?- [1, 2, 3] = [First, Second| Tail].
First = 1,
Second = 2,
Tail = [3].
?- [1, 2, 3] = [First, Second, Third| Tail].
First = 1,
Second = 2,
Third = 3,
Tail = [].
Run Code Online (Sandbox Code Playgroud)