This post was inspired by a curious question on Twitter: is curry or uncurry more common in Haskell code?

To answer this, we first use Jacinda to download every package on Hackage, viz.

cabal list --simple | ja '~.$1' | xargs cabal get

This will gives us a large sample with many authors.

To find uses of uncurry, we use ripgrep with the following incantation:

rg '[ \(\)]uncurry[ \(\)]' hackage/ --stats

This doesn't actually find every instance of uncurry on Hackage, but it's good enough for our purposes.


rg '[ \(\)]uncurry[ \(\)]' hackage/ --stats ...

7966 matched lines 4346 files contained matches 289306 files searched 2.879 seconds


rg '[ \(\)]curry[ \(\)]' hackage/ --stats ...

1154 matched lines 525 files contained matches 289306 files searched 2.572 seconds

As we can see, uncurry is nearly eight times more common than curry! I have no explanation for why this is the case, but I think it's quite an interesting result.