
Ah, so is the idea, then, to use *op()* when `n` wasn't actually constructed formally, but rather "assembled" by the user, so as to match the type of the accessor function normally supplied as the argument to the constructor? On 6/7/2013 4:51 PM, Tom Ellis wrote:
The phantom parameter solves the same problem as scoped type variables. Granted, if you find yourself in that kind of polymorphic soup you have deeper problems... I don't understand this. Scoped type variables are used when you want to use a type variable from the top level within the body of a function. If you use "op" and specify a particular constructor then you don't have a variable but a concrete instance of a type. But maybe I'm missing some more
On Fri, Jun 07, 2013 at 04:05:09PM -0400, Joe Q wrote: powerful way this can be used ...
Tom
You can use scoped type variables to correct an ambiguous type error. You can think of op as a variation on asTypeOf, as documented here on http://www.haskell.org/haskellwiki/Scoped_type_variables#Avoiding_Scoped_Typ... . If I tried to come up with an example that's specific to op, it would only be horribly contrived.