# Arrow Classes

**Raja R Harinath
**
harinath@cs.umn.edu

*Sat, 12 Jul 2003 08:26:54 -0500*

Alastair Reid <alastair@reid-hoffmann.net> writes:
>>* I'm glad to hear there isn't a _serious_ cost (i.e. performance penalty)
*>>* for fine-grained hierarchies.
*>*
*>* One cost which doesn't seem to have been mentioned is the programmer cost.
*>*
*>* With the current Haskell Prelude, a matrix operation (say) might have type:
*>*
*>* invert :: Num a => Matrix a -> Matrix a
*>*
*>* but, if we had one operation per class, the type might be:
*>*
*>* invert :: (Add a, Subtract a, FromInteger a, Eq a, Multiply a)
*>* => Matrix a -> Matrix a
*>*
*>* More flexible but quite unwieldy.
*
IIRC, Clean essentially has this. Though it's more like
invert :: (+ a, - a, FromInteger a, = a, * a) => Matrix a -> Matrix a
(I may be wrong about the syntax and the specifics :-)
- Hari
--
Raja R Harinath ------------------------------ harinath@cs.umn.edu