[Haskell-cafe] Type error depending on scope of pattern matching
kane at kane.cx
Mon Aug 3 17:03:15 UTC 2015
I guess that pattern matching on (P f) removes the universal quantification you placed on it and it just defaults to Integer. Seems to be related to https://ghc.haskell.org/trac/ghc/ticket/10450.
On 8/3/2015 6:43 PM, htebalaka wrote:
> I managed to remove the Data.Reflection and Numeric.AD dependency entirely.
> In this case, Reverse is just a newtyped Num with a phantom variable added.
> Still, the same issue occurs. In one case the type gets defaulted to Integer
> if I try to pass a "forall a. Num a => t a -> a" to grad (which has type
> "Num a, Traversable t => (forall s. t (Reverse s a) -> Reverse s a) -> t a
> -> t a"). Then it complains that Integer isn't Reverse s a, and won't
> In the other where I try to specifically pass the a value with type "forall
> s. t (Reverse s a) -> Reverse s a" it think the type variable would escape
> its scope, but I don't see why it should, or how to prevent that in the
> "doesnt3" example.
> I have no idea how to apply the fix used in the first two examples to the
> later two, or why it should even be necessary.
> View this message in context: http://haskell.1045720.n5.nabble.com/Type-error-depending-on-scope-of-pattern-matching-tp5814762p5814897.html
> Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 4291 bytes
Desc: S/MIME Cryptographic Signature
More information about the Haskell-Cafe