purescript/purescript-transformers

Traced law not well-typed?

Thimoteus opened this issue · 2 comments

specifically track s <<= track t x = track (s <> t) x.

I was trying to prove one of my own instances was law-abiding but ran into trouble here:

track s <<= track t x = extend (track s) (track t x), where extend :: (w a -> b) -> w a -> w b and yet the second argument to extend has type track t x :: b and not w b as expected.

paf31 commented

I think it should be (track s =<= track t) x = track (s <> t) x

I believe it, since my instance obeys it. Thanks!