There is no difference between

   f =  let  m1 = Mt [[0]] :: Matrix Int  in  mm m1 m1 m1

and 

   f = (m1 * m1) :: Matrix Int

aside from the convoluted way of providing the type annotation
(and the need in the former case to provide a sample value of the 
intended result type, not a very easy thing to do in most circumstances).
In this case, the single-argument restriction is not buying you anything.

[Sergey, let's take further follow-ups to my message off-line.]


Reply via email to