This is how Objects are built and represented. Objects of almost all Types are called Literals. A Literal is an Object that, when evaluated, results in itself. For example, when you evaluate the number 2020, the result is the number 2020. But there are two very special Types whose instances are not Literals, and these two types are References and Function Calls.
To check that I’m not misunderstanding this: does this mean that the more general AbstractText concept of “evaluator functions” has been abandoned? In AbstractText, if I understood correctly, any type could have an evaluator function which would determine how instances of the type were evaluated; a “literal” would then be when the evaluator function returns the same value (you’ve reached a fixed point).
(I will confess that if my understanding is right, I won’t be sad to see evaluator functions go; I had not yet gotten around to fully understanding them, and I believe in GraalEneyj only references and function calls have special evaluation so far.)
Cheers,
Lucas