forall a (Ord a => a-> a) -> Int is an illegal type???
John Meacham
john at repetae.net
Sun Feb 12 21:24:55 EST 2006
On Fri, Feb 10, 2006 at 01:41:03AM -0500, David Menendez wrote:
> are very different. The first essentially takes two arguments, a type
> |a| and a value of type |a -> a|. The second takes a single argument of
> type |forall a. a -> a|.
>
> There are some type systems (like JHC core, IIRC) which treat "forall"
> and "->" as special cases of the dependent product. That is, "T -> U" is
> short for "Pi _:T. U" and "forall a. T" is short for "Pi a:*. T". Using
> that syntax, the types above become:
>
> Pi a:*. Pi _:(Pi _:a. a). Int
>
> and
>
> Pi _:(Pi a:*. Pi _:a. a). Int
Yup. that is exactly right. when pretty printing I show the pi's in a
more human digestable form (foralls and function arrows), but internally
they are all represented as Pi's.
John
--
John Meacham - ⑆repetae.net⑆john⑈
More information about the Glasgow-haskell-users
mailing list