
On Tue, Jun 24, 2014 at 6:42 AM, Mateusz Kowalczyk
If this isn't what you meant then I'd be interested to hear. A much easier way of course is to simply document some example instances. I think pipes does something like this as you can see at [1]. The downside of course is that it's not automated, has to be manually kept up to date and the implementer might not have thought about a particular instance you want to see.
[1]: https://hackage.haskell.org/package/pipes-4.1.2/docs/Pipes.html#v:for
As far as keeping things "manually up to date", it is possible to use doctest to show and confirm things like:
let f x y = (x :: Int) + y :t f f :: Int -> Int -> Int
But different ghc versions print types differently (type variable names change, constraints come out in a different order, etc.), so keeping the output up-to-date might be the same effort as manually checking type signatures like the ones in the Pipes documentation.