haskell - make [(Matrix Double,Vector Double)] an instance of Num -


i defined :

type network = [(matrix double,vector double)] 

where matrix , vector hmatrix library. documentation of hmatrix seems me matrix double , vector double instances of num. since need add , subtract networks quiet lot want network instance of num. tried

instance num network   (+) = zipwith (\(m,v) (n,w) -> (m+n,v+w))   (-) = zipwith (\(m,v) (n,w) -> (m-n,v-w))   (*) = zipwith (\(m,v) (n,w) -> (m*n,v*w)) 

but getting error : illegal instance declaration.

alexis king's comment correct current code compile. however, might better practice make newtype network - way don't need use language extensions @ all.

newtype network = network [(matrix double,vector double)]  instance num network   (network n1) + (network n2) = network $ zipwith (\(m,v) (n,w) -> (m+n,v+w)) n1 n2   (network n1) - (network n2) = network $ zipwith (\(m,v) (n,w) -> (m-n,v-w)) n1 n2   (network n1) * (network n2) = network $ zipwith (\(m,v) (n,w) -> (m*n,v*w)) n1 n2 

Comments