Most of the translation from Prolog data to JavaScript is the reverse
of the translation described in section
13.2.2.1. In some cases however reverse translation is ambiguous.
For example, both
42 and 42n (a JavaScript BigInt)
translate to a simple Prolog integer. The other way around, as
JavaScript
Number is a float, both Prolog 42 and 42.0
translate to 42 in JavaScript.
Prolog.Variable instance where
the identifier is a unique number of each unique variable.Number when possible or
BigInt otherwise. Currently JavaScript Number
can represent integers upto 2^53 precisely.Prolog.Rational instance.Number.String.Prolog.String instance.Array,
otherwise create a JavaScript Prolog.List instance.Prolog.Compound instance.Object with the same keys. If the
dict has a non-var tag, add a $tag property.