Primitive values in the abstract interpreter are currently just implemented as Scala objects (cf. scalaam.language.scheme.primitives.SchemeLatticePrimitives).
As a result, the same primitive will get a different hash code on different runs of the same analysis, leading to non-deterministic behaviour in the exploration order of the analysis (which is undesirable when trying to reproduce the results of a previous analysis run).
Implementing them as case objects instead would avoid this issue.
Primitive values in the abstract interpreter are currently just implemented as Scala
object
s (cf.scalaam.language.scheme.primitives.SchemeLatticePrimitives
).As a result, the same primitive will get a different hash code on different runs of the same analysis, leading to non-deterministic behaviour in the exploration order of the analysis (which is undesirable when trying to reproduce the results of a previous analysis run).
Implementing them as
case object
s instead would avoid this issue.