
I dont see how to fix this.
There was a thread about statically knowing lots about the shape of matrices using the type system. http://www.haskell.org/pipermail/haskell/2006-April/017845.html I believe they incorporated this (variable size identity matrix, for example) in their approach. (They don't preserve your property of being able to do things with simple list syntax, like [[1,2],[3,4]] * [[5,6],[7,8]] , instead you have to use Template Haskell and some small contructor functions)
Could be better to forget about fromInteger...
Except then you wouldn't have a full instance for Num. How about constructing an infite list of infinite lists of that number: fromInteger x = map repeat (repeat (fromInteger x)) when it gets zipped with smaller matrices, will it terminate? It works with addition but multiplying caused problems: [[1,2],[3,4]] + 10 = [[11,12],[13,14]] [[1,2],[3,4]] * 10 = [[40,60],[40,60],[40,60],[40,60],[40,60], ..... Hmm... Jared.
Atila
Jared Updike wrote:
fromInteger x = [[fromInteger x]]
Wouldn't you want the expression
[[1,0],[0,2]] + 10
to yield
[[11,10],[10,12]]
instead of [[11]] ? I guess you would need some complicated machinery so this is one thing you have to ignore to keep your otherwise nifty instance nice and simple.
Jared.
-- http://www.updike.org/~jared/ reverse ")-:"