Если вы замените объект на «термин», то Prolog сделает это естественным образом (фактически, нет другого способа создать объект).Вот пример с бинарными деревьями:
% find a node in List with a nil left child and call its rightmost grandchild X
member(node(nil,node(_,X)), List).
В Lisp и Scheme также есть несколько замечательных возможностей в этой области, в частности, цитирование и полуквотирование:
;; construct right-leaning binary tree with x as the rightmost grandchild
`(nil . (nil . ,x))
Практически все функциональные языки программирования скопированыэто в какой-то форме.