It is really counterintuitive! I will study carefully your library and the "Implicit Configurations" paper. Using static dimension checking we can write very solid code for matrix computations...
However, I don't know how to write some definitions. For instance, this is ok: m = $(dAM [[1,2,3]]) but with: x = [[1,2,3]] :: [[Double]] m1 = $(dAM x) m2 = listMat x main = do print m1 print m2 I get: Vector/examples.hs:35:11: GHC stage restriction: `x' is used in a top-level splice, and must be imported, not defined locally In the first argument of `dAM', namely `x' In the definition of `m1': m1 = $[splice](dAM x) Vector/examples.hs:40:10: Inferred type is less polymorphic than expected Quantified type variable `m' escapes Quantified type variable `n' escapes Expected type: (v (L m, L n) -> w) -> t Inferred type: (forall n1 m1. (ReflectNum n1, ReflectNum m1) => v (L m1, L n1) -> w) -> w In the first argument of `print', namely `m2' In the result of a 'do' expression: print m2 I would also like to create a matrix from a data file: main = do let m1 = $(dAM [[1,2],[3,4::Double]]) s <- readFile "data.txt" let list = read s :: [[Double]] --let m2 = $(dAM list) let m2 = listMat list print $ m2 *> trans m1 But I get a similar error. Perhaps I must provide information about the expected dimensions, but I don't know how to do it. -- Alberto On Saturday 15 April 2006 22:09, Frederik Eaton wrote: > Yes, certainly... Otherwise the library would not be much use! If it > seems counterintuitive, as it did to me at first, you should check out > the "Implicit Configurations" paper, which uses modular arithmetic as > an example. My version of their code is in > > http://ofb.net/~frederik/futility/src/Prepose.hs > > The function I mainly use is: > > reifyIntegral :: Integral a => a -> (forall s. ReflectNum s => s -> w) -> w > > which turns an integral value into a type of the ReflectNum class > which represents that value, and calls the provided polymorphic > function with a dummy value (actually 'undefined') of that type; then > returning the function's result. > > Frederik > > On Sat, Apr 15, 2006 at 06:14:44PM +0200, Alberto Ruiz wrote: > > On Friday 14 April 2006 17:02, Frederik Eaton wrote: > > > An index-aware linear algebra library in Haskell > > > > Excellent work! > > > > Is it possible to create a vector or matrix whose size is not known at > > compile time? > > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe