Optimisation by repeated beta- and eta-reduction
The following post recently showed up on Planet Haskell: Morte: an intermediate language for super-optimising functional programs. From the post:
I am worried about this because the author explicitly wishes to support both folds and unfolds, and, according to Catamorphisms and anamorphisms = general or primitive recursion, folds and unfolds together have the expressive power of general recursion—so that not every term has a normal form (right?). More generally, it seems to me that being able to offer the strong guarantee that the author offers implies in particular a solution to the halting problem, hence a non-Turing-complete language.
Later, the author says:
You can take any recursive data type and mechanically transform the type into a fold and transform functions on the type into functions on folds.I have a similar concern here; it seems to me to be saying that folds can express general recursion, but I thought (though I don't have a reference) that they could express only primitive recursion.
Have I got something badly conceptually wrong?
Active forum topics
New forum topics