begin and module (and toplevel) contain recursive, unique definitions. Runtime effects are forbidden because of the continuation capturing variable initialization trainwreck, but it also makes sense on a higher level to demand purity. The 'dynamically determined implementation of static type' effect should be allowed though. Could even ban expression-statements here is since they are useless anyway.
do contains sequential statements that can have side effects and shadow names.
begin
andmodule
(and toplevel) contain recursive, unique definitions. Runtime effects are forbidden because of the continuation capturing variable initialization trainwreck, but it also makes sense on a higher level to demand purity. The 'dynamically determined implementation of static type' effect should be allowed though. Could even ban expression-statements here is since they are useless anyway.do
contains sequential statements that can have side effects and shadow names.[x] Change
do
->begin
[x] Add sequential
do
[x] Ban effects in recursive contexts