除以给定列表的长度

xav*_*ava 1 list prolog

我想划分给定列表的长度.我知道如何分割,我知道如何获得List的长度,但使用两个谓词对我来说都不起作用.这是我得到的:

halflength(List,Halflength) :- length([List,Length]), Halflength is Length/2.

[trace]  ?- halflength([a,b,c],Halflength).
   Call: (7) halflength([a, b, c], _G15025) ? creep
   Call: (8) length([[a, b, c], _G15108]) ? creep
ERROR: halflength/2: Undefined procedure: length/1
ERROR:   However, there are definitions for:
ERROR:         length/2
   Exception: (8) length([[a, b, c], _G15108]) ? creep
   Exception: (7) halflength([a, b, c], _G15025) ? creep
Run Code Online (Sandbox Code Playgroud)

cor*_*ump 5

这里:

Undefined procedure: length/1
Run Code Online (Sandbox Code Playgroud)

length只用一个参数调用一个列表:

length([List,Length])
Run Code Online (Sandbox Code Playgroud)

这应该是:

length(List, Length)
Run Code Online (Sandbox Code Playgroud)