[Haskell-cafe] How to define an operation in terms of itself (but of different type)?

Miguel Mitrofanov miguelimo38 at yandex.ru
Fri Jan 23 17:30:39 EST 2009


Seems like all telepath are on vacation, so you would have to show the  
code.

On 24 Jan 2009, at 01:15, Olex P wrote:

> Hello Haskellers!
> It's probably a simple question but I can't find a proper solution...
> Suppose we have a class Vector which overloads (+) operation. I'd  
> like to represent a Matrix data type as a set of vectors:
>
> data Matrix3 = M3 !Vector3 !Vector3 !Vector3
>
> In this case (+) for matrices could be implemented as:
>
>  (M3 r11 r12 r13) + (M3 r21 r22 r23) = M3 (r11 + r21) (r12 + r22)  
> (r13 + r23)
>
> But GHC says about ambiguous occurrence. I don't understand why  
> because it's should be pretty clear that rows are vectors and (+)  
> has to be vector type as well. I could use Vector.+ instead but it  
> doesn't look good.
> Probably I'm missing something. Any ideas?
>
> Cheers,
> Oleksandr.
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe



More information about the Haskell-Cafe mailing list