Hi all,

I have some program data that I'd like to persist. I could just use read and show and file I/O to store arrays as files. [1] This works and it is easy and simple (which I like) but it is also inefficient and a little cumbersome.

I imagine that this is a very common task, and I know of utilities in other environments like object databases, embedded databases, XML persistence, etc. that can make this kind of persistence simple *and* relatively efficient and reliable. E.g.) I have found the HSQLDB embedded database [2] to be useful when writing Java applications. What do you do for quick and easy persistence in Haskell? Are there any libraries or techniques that are especially useful for this?

[1]
> type SimpleRecord = (Integer, Integer, Integer)
> type SimpleIndex = Integer
> type SimpleDB = (Array SimpleIndex SimpleRecord, FilePath)

> loadDB :: FilePath -> IO SimpleDB
> loadDB f = do h <- openFile f ReadMode
>               s <- hGetContents h
>               hClose h
>               return $ r s
>  where r :: String -> SimpleDB
>        r = read

> getRecord :: SimpleDB -> SimpleIndex -> SimpleRecord
> getRecord (a, _) = (a !)

> updateRecord :: SimpleDB -> SimpleIndex -> SimpleRecord -> SimpleDB
> updateRecord (a, f) i r = (a//[(i,r)],f)

> storeDB :: SimpleDB -> IO ()
> storeDB sdb@(a,f) = do h <- openFile f WriteMode
>                        hPutStr h (show sdb)
>                        hClose h

> sampleDB = (array (0,10) [(x,(x+1,x*2,42)) | x <- [0..10]],"output/ 1.db.txt")

[2] http://hsqldb.org/

  - Matt Munz
    [EMAIL PROTECTED]


_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to