Infinite types
Jeremy Shaw
jeremy.shaw at lindows.com
Sun Dec 7 13:39:28 EST 2003
Hello,
There is a thread on comp.lang.functional that talks about why haskell
does not support recursive types:
http://groups.google.com/groups?q=ocaml+rectypes&hl=en&lr=lang_en&ie=UTF-8&oe=UTF-8&safe=off&selm=8giqpt%24oee%241%40rivesaltes.inria.fr&rnum=1
(searching for 'ocaml rectypes' on google groups turns up a number of
useful threads about the joys and dangers of allowing recursive types).
Jeremy Shaw.
At Wed, 3 Dec 2003 14:07:03 -0800,
Jeffrey A. Scofield <jeff at dhitechnologies.com> wrote:
>
> Greetings.
>
> Say I have the following function, adapted from Pierce, Types and
> Programming languages:
>
> f n () = (n, f (n + 1))
>
> Now, this function fails to typecheck in ghc 6.0.1 because the
> subexpression f (n + 1) has the infinite type t = () -> (t1, t)
> And so I assume (perhaps wrongly?) that f is ill-typed in Haskell 98.
>
> I have two questions:
>
> 1. How can I tell from the Haskell 98 Revised Report that this
> function isn't allowed? The discussions of typing in the Report
> generally defer to the ``standard Hindley-Milner analysis.''
> Is this really enough to tell that the function isn't well-typed
> in Haskell? I concede that I haven't read the cited Hindley and
> Damas/Milner papers, but it seems like there might be more to
> say about what is and isn't allowed.
>
> 2. Is there by chance a compiler option for ghc that causes the
> restriction to be dropped?
>
> I don't need this kind of function for anything practical (and I
> realize I can get an equivalent effect with an algebraic datatype).
> I'm just trying to figure out what typing restrictions (if any) are
> implicitly assumed in the Report. (Generally, this is the kind of
> stuff I don't know, as a relative newcomer to fp.)
>
> Regards,
>
> Jeff Scofield (PhD)
> Seattle
More information about the Haskell-Cafe
mailing list