On 2/28/11 6:01 AM, Yves Parès wrote:
  takeC :: Int ->  Compoz a b ->  (exists c. Compoz a c)
  dropC :: Int ->  Compoz a b ->  (exists c. Compoz c b)

What does 'exists' means? To create a rank-2 type can't you use:

takeC :: Int ->  Compoz a b ->  (forall c. Compoz a c)

??

For any A and T,

    foo :: A -> (forall b. T b)

is identical to

    foo :: forall b. (A -> T b)

More technically, they're isomorphic--- in System F or any other gritty language that makes you explicitly pass types around. Since Haskell handles type passing implicitly, the isomorphism looks like identity.

--
Live well,
~wren

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to