[Haskell-cafe] Free theorems for dependent types?

David Menendez dave at zednenem.com
Wed May 20 13:47:30 EDT 2009


On Sun, May 17, 2009 at 11:52 PM, Ryan Ingram <ryani.spam at gmail.com> wrote:
> Free theorem's are theorems about functions that rely only on parametricity.
>
> For example, consider any function f with the type
>   forall a. a -> a
>
> >From its type, I can tell you directly that this theorem holds:
>  forall g :: A -> B, x :: A,
>      f (g  x) = g (f x)
>
> (Note that the f on the left is B -> B, the f on the right is A -> A).

Note also that the theorem only holds in a strict language (i.e., not Haskell).

data A = A deriving Show
data B = B deriving Show

f :: a -> a
f = const undefined

g :: A -> B
g = const B

*Main> f (g A)
*** Exception: Prelude.undefined
*Main> g (f A)
B

-- 
Dave Menendez <dave at zednenem.com>
<http://www.eyrie.org/~zednenem/>


More information about the Haskell-Cafe mailing list