[Haskell-cafe] Haskell type system and Barendregt's Lambda Cube
classification
Vladimir Ivanov
vladimir.v.ivanov at gmail.com
Fri Dec 25 11:35:38 EST 2009
Dear All,
Recently, I've been playing with self-application and fixed-point
combinators definition in Haskell.
It is possible to type them in Haskell using recursive types.
I took Y & U combinators:
> newtype Rec a = In { out :: Rec a -> a }
> u :: Rec a -> a
> u x = out x x
> y :: (a -> a) -> a
> y f = let uf = f . u in uf (In uf)
Recursive types are part of System F-omega, which corresponds to
lambda omega in Barendregt's Lambda Cube.
For all type systems in Lambda Cube it is proven that they are
strongly normalizing. But using "y" I can easily construct a term even
without a normal form.
So, I got a contradition and conclude that type system implementation
in Haskell contains something, that is absent from System F-omega.
My question is: what's particular feature in Haskell type system, that
breaks strong normalization property? Or am I totally wrong
classifying it in terms of Lambda Cube?
Best regards,
Vladimir Ivanov
More information about the Haskell-Cafe
mailing list