Conversation

Replying to
The key thing seems to be to allow the feedback loop or not, i.e. keep things staged, or let the system self-modify and update its own semantics. This shows up in Erlang hot code loading for instance.
1
Replying to
There is another option: a user-defined, multi-staged semantics. This is the direction I'm taking with my Glas language, for example. When programs are imported as immutable data, the importing module can freely examine, typecheck, rewrite, optimize, etc. the program value.
1
1
Replying to and
Relatedly, if sub-programs are represented as concrete values, then higher-order programs can be distinguished typefully based on whether they directly observe those values vs. just integrate them blindly. Shifts a concern of 'abstraction' from module system to type system.
1
1
Show replies