Talk:Generalized algebraic data type

Phantom type
Why does phantom types redirect here? It is quite possible to use phantom types without using GADTs. 192.38.109.188 (talk) 16:23, 29 June 2009 (UTC)


 * Actually, Phantom types should probably not exist (WP:SINGULAR), but Phantom type can always be written as an article and not redirect here; since it has not been, there is no harm it being a redirect right now (unless its target is seen as misleading). Si Trew (talk) 12:26, 5 April 2011 (UTC)


 * GADTs where initially named "first-class phantom types" by Hinze et al. Phantom type should be a separate article, though. 131.211.84.85 (talk) 12:14, 1 June 2011 (UTC)


 * The redirects Phantom type and Phantom types have now been deleted. See Redirects for discussion/Log/2018 July 13. – Tea2min (talk) 08:27, 25 July 2018 (UTC)

What is the a in (Fix a)?
What is the a in (Fix a)? — Preceding unsigned comment added by 80.177.53.242 (talk) 16:47, 17 January 2012 (UTC)
 * I have no idea what I was thinking when I wrote that. Clearly there is no 'a' in scope. I've fixed the example. —Ruud 18:55, 17 January 2012 (UTC)

Difficult to understand
This article is *extremely* difficult to understand. It really needs work from the perspective of introducing the subject to somebody who is unfamiliar with it. As I read it, it seems clear that it is saying something that ought to be meaningful, but the actual meaning of it remains beyond my grasp - and I say this as someone who ought to be able to understand a topic like this with relative ease, holding as I do a BSc in CS with a good grade from a top-10 university in the UK.

I think mostly the problem is that the example is unclear. That I'm not familiar with Haskell doesn't help, I imagine, but I have used other similar languages (albeit ones that lack this particular feature), so ought to be able to make some sense of it... but I don't see how the declarations work exactly, and the example of how they would be used is too complex to be informative.

Additionally, some contrast with the features offered by traditional ADTs would be helpful. The text describing the example simply states that trying to implement it using ADTs would run into problems, but doesn't say what those problems would be. JulesH (talk) 18:52, 19 February 2015 (UTC)


 * +1 The lede is incomprehensible, as written. 67.198.37.16 (talk) 18:25, 12 January 2016 (UTC)

If Hasklel doesn't support GADTs natively, and OCaml does, shouldn't the example be in OCaml? 2600:8806:3403:BE00:2AB2:BDFF:FE02:3370 (talk) 22:30, 1 April 2019 (UTC)

A parametric ADT that is not a GADT
The code example claims, there is a parametric ADT that is not a GADT. How can this be? If GADTs are a generalisation of parametric ADTs, then every parametric ADT is a GADT by definition. They are trying to say: there are GADTs which are not ADTs and this isn't one of those. A better wording would be "A parametric ADT ". I am not a native speaker and I hope, my thinking isn't off here. If I'm right, this wording makes it more difficult to grasp how the two concepts relate to each other. --2A01:C23:6125:B800:8947:F7CB:54C5:3E6A (talk) 15:00, 21 June 2023 (UTC)