
On Wed, Sep 08, 2010 at 03:31:19PM +0200, Lorenzo Isella wrote:
Now, my intended pipeline could be
read file as string--> convert to list of integers-->pass it to hmatrix (or try to convert it into a matrix/array). Leaving aside the last step, I can easily do something like
let dat=readFile "mydata.dat"
in the interactive shell and get a string, but I am having problems
Note, this may be a bit misleading! The interactive shell does some special handling of things involving I/O. The type of readFile "mydata.dat" is readFile "mydata.dat" :: IO String That is, an *I/O operation which, when performed*, will yield a String. This is not at all the same thing as having a String! In order to get your hands on the String, you will want to do something like this: do dat <- readFile "mydata.dat" -- dat :: String let mat = parseMat dat ... do other stuff with mat ... parseMat :: String -> [[Integer]] parseMat = ... You may want to read http://www.haskell.org/haskellwiki/Introduction_to_IO or, really, any good Haskell tutorial (e.g. LYAH [1] or RWH [2]) will cover this. -Brent [1] http://learnyouahaskell.com/ [2] http://book.realworldhaskell.org/