EXDR defines the abstract data types Integer, Long, Double, String, List, Nil, Struct and Anonymous Variable. Their mapping to ECLiPSe data types is as follows:
EXDR type ECLiPSe type e.g.
----------------------------------------------
Integer integer 123
Long integer 10000000000
Double float 12.3
String string "abc"
List ./2 [a,b,c]
Nil []/0 []
Struct compound or atom foo(bar,3)
Anon.Variable var _
Not all ECLiPSe terms have an EXDR representation, e.g. integers longer
than 64 bits, rationals, suspensions or attributed variables.
More information about EXDR format, including the specification of the serialised encoding, can be found in the Embedding and Interfacing Manual.
Success:
?- open(queue(""),update,q),
write_exdr(q, foo(12.3,123,["hello",_])),
read_exdr(q, Term),
close(q).
Term = foo(12.3, 123, ["hello", _131])
yes.
Error:
read_exdr(S, a(b,c)). (Error 4).
read_exdr(output, X). (Error 192).
read_exdr(atom, X). (Error 193).