Reduce coercion terms to normal form
Sometimes coercion terms in a Core program grow absurdly big, and can readily be simplified to be much more compact. Example:
Big coercion terms have no runtime impact, but they may make compilation slower.
I speculate that it should be possible to use transformations such as those Max suggests in his comment on #2440 (closed), as a confluent, terminating rewriting system that makes coercion terms smaller, or, better still, rewrites them to a normal form. Then we can use "smart constructors" for coercion terms, so that they are always kept in normal form.
Identity coercions occur a lot, but are not so easy to recognise. I've also wondered about having some special representation for the identity.
This ticket is to remind us to look for such a rewrite system. Max, perhaps?
Trac metadata
Trac field | Value |
---|---|
Version | 6.10.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | batterseapower@hotmail.com, chak@cse.unsw.edu.au |
Operating system | |
Architecture |