
Andrew Coppin
Ivan Lazar Miljenovic wrote:
I assume you mean something like this?
,---- | class NextOneUpFD this previous | this -> previous where ... | | instance NextOneUpFD Vector3 Vector4 where ... `----
More like
class NextPrevFD next prev | next -> prev, prev -> next where...
but yeah, that's the general idea.
Oh, I wasn't sure you could do that.
If so, how does this not solve the issue?
,---- | class NextOneUpAT v where | type Next v | ... | | instance NextOneUpAT Vector3 where | type Next Vector3 = Vector4 | ... `----
Can I use that to go both up and down? Would the types be unambiguous? I guess I'll have to go try it out...
Depends on how you use it; it might need to have a "type Previous v" in there as well, but I'm not sure how well that will cope when you get to the "end of the line". One thing to note: GHC does not currently support superclass constraints, so it isn't possible to have something like: class (NextOneUpAT v1, NextOneUpAT v2, Next v1 ~ Next v2) => ... But you _can_ do so in a type signature for a function. -- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com IvanMiljenovic.wordpress.com