
Chris, thank you so much for pointing me into the right direction!
From acid-state package description: "Use regular Haskell data structures as your database..." - exactly what I need! Snap looks very lively too, simple and you can code view in Haskell, which means concentrate on the problem, not on the boilerplate code!
Capital advice, thanks! Chris Smith cdsmith at gmail.com wrote: Thu Jul 7 15:11:10 CEST 2011 Previous message: [Haskell-cafe] Web Framework to Show Experimental Data Next message: [Haskell-cafe] Installation failure crypto-api on MAC Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] On Thu, 2011-07-07 at 13:21 +0400, Dmitri O.Kondratiev wrote:
1) What to use for the Archive? Though input data is in JSON format, data generated from it is binary vectors. Not sure that CouchDB is a good choice in this case. What simple (Haskell lib + DB) combination one may advise that support concurrent read / write access with simple locking (don't need full transactional support)?
I think this might be an excellent place to use Lemmih's acid-state package. If I read you correctly, you basically want to store a small enough amount of data that it's not a concern that it will need to reside in memory, and it's fairly regular so there won't be a lot of value in ad hoc queries? If this is the case, then acid-state will let you store it in Haskell data types, and with a bit of Template Haskell, you can access it in a persistent way.
2) Web framework? Don't need AJAX, just basic stuff but simple and easy to code forms?
Well, I like Snap enough that I became a core developer for the project, but this seems like a place it's particularly well suited. If you just want something really simple and clean and easy to use, Snap is that thing. Snap itself is very lightweight, but if you want some kind of automated form support, then there is a snap backend for digestive-functors. That's a little complex for my taste, but it is one way to do composing of forms by sticking together form handlers, validators, and the like. Personally, I'm a fan of just using getParam to retrieve the data and writing Haskell code to do what you want. -- Chris