You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Check for regressions induced by label-sharing; it any, add a Config flag to tweak createLabelsForDuplicatedBranches in hkmc2/shared/src/main/scala/hkmc2/semantics/ucs/Normalization.scala
Transform explicit returns into implicit ones in the top-level blocks
Constrain public fields against no-change strategy
Transform more places
Class methods
Record field initializers
Also, fuse records?
Apply Lumberhack to compiled files
Support customizable list of "see-through" modules such as NofibPrelude: use syntax @seethrough import "..."
Float out lambda binders
Benchmark nofib test suite
Deal with side effects
Deal with curried class parameter lists – by internalizing "virtual" $\eta$ expansions that only get realized/reified when needed for rewriting
Missing Implementation
restParam
multiple parameter lists
Deforestation related to functions and values inside classes/modules
Match blocks with non-Value.Ref scrutinees (like Match(Select(…), …)))
I put this as a missing implementation here because I am not sure how to handle selections inside branches related to non-Value.Ref scrutinees — but maybe this is not strictly a “missing implementation” because it seems that although the definition of Match says that the scrut can be a Path, the scrut currently always seems to be compiled to a Value.Ref.
More todos
Merging of duplicated consumers
After fusion, some duplicated consumers may have identical bodies, they can be merged
Before fusion, duplication of consumers may lead to loss of fusion opportunities
Reification of recursive strategies
Ad-hoc things to generalize
Remove the special-casing of the "force" and "lazy" and use annotations instead
Don't special-case NofibPreluse – instead, allow listing a set of file to optimize with
TODO
Lumberhack mk 4 PR
Configflag to tweakcreateLabelsForDuplicatedBranchesinhkmc2/shared/src/main/scala/hkmc2/semantics/ucs/Normalization.scalaTransform more places
Apply Lumberhack to compiled files
NofibPrelude: use syntax@seethrough import "..."Float out lambda binders
Deal with side effects
Deal with curried class parameter lists – by internalizing "virtual"$\eta$ expansions that only get realized/reified when needed for rewriting
Missing Implementation
restParamMatchblocks with non-Value.Refscrutinees (likeMatch(Select(…), …)))I put this as a missing implementation here because I am not sure how to handle selections inside branches related to non-
Value.Refscrutinees — but maybe this is not strictly a “missing implementation” because it seems that although the definition of Match says that thescrutcan be aPath, the scrut currently always seems to be compiled to aValue.Ref.More todos
Ad-hoc things to generalize