
6 Dec
2006
6 Dec
'06
4:03 p.m.
On Thursday 07 December 2006 09:44, S. Alexander Jacobson wrote:
I guess I'm also not sure what belongs in a GADT and what belongs in a typeclass e.g. here is an Arrow GADT
data Arrow b c where Arr::(b->c) -> Arrow b c Compose::Arrow b c -> Arrow c d -> Arrow b d First::Arrow a b -> Arrow (a,c) (b,c)
When Arrow is defined like this, rather than write instances you just various evaluation functions for the Arrow GADT.
How would the GADT solution handle the behaviours captured in the other Arrow classes, eg ArrowIf, ArrowLoop etc? It doesn't seem right to just add constructors for all those extra functions. Daniel