This (in addition to my comment above for the function) seems to imply that we want 'isCompileTimeEvaluable' and 'isRuntimeEvaluable' as abstract methods of 'Value' as well. Should we superclass all of these?