safe maps within GHC?
Norman Ramsey
nr at cs.tufts.edu
Tue Mar 22 18:10:01 UTC 2022
A blog post of lexi-lambda's recently put me onto Matt Noonan's
technique "Ghosts of Departed Proofs" [1], which appeared in the 2018
Haskell Symposium. One example that intrigued me was a safe `Map`,
which uses the type system to guarantee that lookup does not fail.
Maps are used pretty extensively in Cmm-land; for example, I recently
have been using them to get information like the dominator set or the
reverse postorder number of every node in a `CmmGraph`. In these
maps, every `Label` that appears in the `CmmGraph` is expected to have
an entry. For the moment, I am just using the standard lookup
function; if an entry should be missing, my code calls `panic`.
The idea of eliminating these calls and getting compile-time type
safety is intriguing, but I'm not sure the game is worth the candle.
What do other GHC devs think?
Norman
[1] https://iohk.io/en/research/library/papers/ghosts-of-departed-proofsfunctional-pearls/
More information about the ghc-devs
mailing list