So i think we can conclude the following
1) things are not perfect currently. But it requires some huge type class changes to have a better story
2) certain types of data types will need to be newtyped to have instances that play nice with Ryans concurrency work. Thats ok. Theres often good reasons for those "illegal" instances. There is no sound and COMPLETE way to enforce having "good" instances, and thats a good thing, though having more libs work correctly is always a good thing
3) as always, people complain about floats, when the real issue is the current numerical type classes, which are wrong in a number of ways. I hope to experiment with my own ideas in that direction soon. Not worth a boring no ideas worth taking seriously cafe thread