
Alastair Reid wrote:
1. How can I tell from the Haskell 98 Revised Report that [a function with an infinite type] isn't allowed? The discussions of typing in the Report generally defer to the ``standard Hindley-Milner analysis.''
1) The only way to write the recursive type you want in Haskell is using type synonyms. 2) The section describing type synonyms (4.2.2) explicitly rules it out.
This really makes sense, but I had been interpreting 4.2.2 as a limitation on type synonym declarations rather than on types themselves. It says: Although recursive and mutually recursive datatypes are allowed, this is not so for type synonyms, unless an algebraic datatype intervenes. To my (untutored) eye, this looks like a limitation on what can appear in a type synonym declaration, not a limit on what types can appear in a program. Is it a reliable mental model to assume that if there's no way to declare a type in Haskell, the type itself isn't allowed in a program? (Note that this can't be true in every case; according to 4.5.4, the monomorphism restriction introduces types that can't be declared in Haskell.) Thanks very much for the response. Regards, Jeff Scofield Seattle
participants (1)
-
jeff@dhitechnologies.com