As a follow-up to my post on computing the Levenshtein distance in ATS, I figured I'd write up some of the actual benchmark results, as well as some of the subtleties involved in benchmarking various ecosystems.
Though it does not often get mentioned in the Haskell community, simply
bumping to a new version of GHC can drastically improve the performance of your
code. Here, I have several examples from my
fast-arithmetic
package, which will hopefully give an idea of just how much work has gone into
optimizing code produced by GHC.
Initially, I had written
hackage-fetch to see if there was
any use of
coelgot
anywhere on Hackage. At the time, there was not, but this has changed due
to my gmpint package. As of
writing, it is not surprisingly the only use of co-(Elgot algebra)s on the entirety of Hackage.
Inspired by a tweet, I decided to write an Old English name generator in Madlang. This would help my indecision (picking a favorite color is hard!), and it would unearth some limitations of Madlang.
You may have seen my post on co-(Elgot algebras),
in which I mentioned I had been using some exotic recursion schemes for my
gmpint package. I came across a similar example, this time for Mendler-style
recursion schemes. To my knowledge, it is the only published example of
a Mendler-style catamorphism.