RULES and type classes
Mike Hamburg
haskell at shiftleft.org
Thu Mar 29 05:38:20 EDT 2007
Is there any way to use RULES substitutions with type classes?
I'm writing a reactive programming arrow (same idea as Yampa, different
design goals), and it would help performance (and not just in the speed
sense) to be able to tell when a value derived with arr hasn't changed.
So I'd like to be able to specialize arr to functions whose result is an
instance of Eq.
I tried
{-# RULES "reactiveArr/Eq" reactiveArr = reactiveArrEq #-}
but got the message
Control/Arrow/Reactive/Reactive.hs:89:41:
No instance for (Eq b)
arising from instantiating a type signature
at Control/Arrow/Reactive/Reactive.hs:89:41-89
Possible fix: add (Eq b) to the tcRule
When checking the transformation rule "reactiveArr/Eq"
I tried adding various sorts of type signatures, but I couldn't find any
way around this... is it a restriction in the RULES rewrite engine? Is
there a workaround, or some mechanism other than RULES that I should be
using? I could write a special "arrEq" function, but I'd like to
minimize the number of extraneous operations outside the Arrow class.
Thanks,
Mike Hamburg
More information about the Glasgow-haskell-users
mailing list