[Haskell-cafe] Abstraction in data types
stephen.tetley at gmail.com
Thu Mar 18 05:27:11 EDT 2010
On 18 March 2010 05:48, Brandon S. Allbery KF8NH <allbery at ece.cmu.edu> wrote:
> They can be mixed only with significant effort. And you can't really
> prevent it once your users know the magic of existential quantification;
> *but* those lists won't typecheck when passed to your routines expecting a
> Polygon, because you will be expecting a (Point a => Polygon [a]) but they
> will be passing a (Polygon [forall a. Point a => a]) or something similar.
If you can live without constructors, an ADT view is another possibility...
Jeremy Gibbons gives a clear explanation of using an ADT to implement
complex numbers with polar and cartesian representations. Both
representations share the same type, so can be stored together in
lists - figuratively speaking the the existential type has been moved
"further down" inside the type.
See section 2:
More information about the Haskell-Cafe