Why is this not working?
?- '.'(a,[]).
ERROR: Unknown procedure: ('.')/2
ERROR: However, there are definitions for:
ERROR: ('.')/3
false.
?- .(a,[]).
ERROR: Unknown procedure: ('.')/2
ERROR: However, there are definitions for:
ERROR: ('.')/3
false.
?- .(a,[]) == [a].
ERROR: Type error: `dict' expected, found `a' (an atom)
ERROR: In:
ERROR: [13] throw(error(type_error(dict,a),_13228))
ERROR: [10] '<meta-call>'(user:user: ...) <foreign>
ERROR: [9] toplevel_call(user:user: ...) at /usr/lib/swi-prolog/boot/toplevel.pl:1158
ERROR:
ERROR: Note: some frames are missing due to last-call optimization.
ERROR: Re-run your program in debug mode (:- debug.) to get more detail.
Not sure how relevant this is practically but according to the literature this should be correct. Does SWI have a different predicate/procedure?
Update
The internal representation is also revealed by means of display:
?- display([1,2,3]).
'[|]'(1,'[|]'(2,'[|]'(3,[])))
As linked in the comments, the SWI Prolog documentation says:
That means the equivalent to your traditional
.(a,.(b,[]))in SWI 7+ is: