[Haskell-cafe] Use distributivity proof in a simple example
Oliver Charles
ollie at ocharles.org.uk
Tue Dec 2 10:56:59 UTC 2014
Adam Gundry <adam at well-typed.com> writes:
> -- Now it's easy to define wrap
> wrap :: DF xs -> DF (Map [] xs)
> wrap Empty = Empty
> wrap (Single a) = Single [ a ]
> wrap (Cons x y) = case mapDist (toSingleton x) y of
> Refl -> Cons (wrap x) (wrap y)
Am I right in thinking that you can also use
case unsafeCoerce Refl `asTypeOf` mapDist (toSingleton x) of
..
to get the same proof, but without any runtime cost? It seems like this
might be a nice middle ground. Of course there is a risk that the proof
is just wrong, in which case things could awry. Maybe another option is
to switch that line with -XCPP macros depending on whether or not you're
in "production" mode.
- Ollie
More information about the Haskell-Cafe
mailing list