Я не совсем уверен, что именно является [(a,b,c,d)]
, но я подозреваю, что оно эквивалентно [ ','(a, ','(b, ','(c, d))) ]
, с использованием оператора запятой infix три раза, поскольку нет функтора, принимающего эти четыре аргумента.
Если вам абсолютно необходимо использовать этот синтаксис, возможно, что-то подобное поможет преобразовать в обычный список:
decomma( List, [Head | TailOut] ) :- List = [','(Head,TailIn)], !,
decomma( [TailIn], TailOut ).
decomma( [Term], [Term] ).