4 ms·
> no matter how many layers of indirection you might add the binary size and runtime performance would be unaffected This is an unfortunate glaring false state
by Kutta 8y ago
> no matter how many layers of indirection you might add the binary size and runtime performance would be unaffected
This is an unfortunate glaring false statement in the Morte documentation. Correctness of refactoring and code abstraction is understood to be with respect to semantic (extensional) equivalence, while normalization only works up to beta-eta equivalence. It can't eliminate abstraction in general.
Examples in Morte which suggest otherwise use hand-crafted forms of Church-encoded operations which are known to fuse, but there are many equivalent definitions which don't fuse, and which are actually more natural to write. Converting non-fusing definitions to fusing definitions is equivalent to supercompilation, which is generally undecidable, and thus can be implemented only up to some approximation.