Memoize the hashCode, but notice that Expr is not recursive on itself (only via the Id graph) so it does not have the DAG-exponential-equality-and-hashcode issue that Literal and other DAGs have.
Memoize the hashCode, but notice that Expr is not recursive on itself (only via the Id graph) so it does not have the DAG-exponential-equality-and-hashcode issue that Literal and other DAGs have.
We use a lazy val instead of a val for binary compatibility.
(Since version ) see corresponding Javadoc for more information.