[Haskell-cafe] Type error depending on scope of pattern matching

htebalaka goodingm at gmail.com
Mon Aug 3 16:43:55 UTC 2015


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
compile.

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.


More information about the Haskell-Cafe mailing list