This library takes a mission of upgrading the experience of dealing with relational databases in Haskell. It’s robust, it’s API is very concise, yet it’s packed with powerful features like the following:
An abstraction over transactions, which provides an automated resolution of conflicts. The API ensures that you’re only able to perform a specific set of actions in the transaction context, which allows Hasql to safely resolve conflicting transactions by automatically retrying them. This is much inspired by STM and ST.
Support for cursors. Allows to fetch virtually limitless result sets in a constant memory using streaming.
Employment of prepared statements. Every statement you emit gets prepared and cached. This raises the performance of the backend.
Automated management of resources related to connections, transactions and cursors.
A built-in connections pool.
Type-level generation of templates. You just can’t write a statement with an incorrect number of placeholders.
Mapping to any types actually supported by the backend.
For a basic tutorial and a demonstration please visit the following link:
https://github.com/nikita-volkov/hasql/blob/master/demo/Main.hs
Also please join the main discussion thread accompanying the release:
http://www.reddit.com/r/haskell/comments/2kkhgo/announce_hasql_a_minimalistic_general_high_level/