Haskell を使用してデータベースと対話する最良の方法は何ですか? 私はある種の ORM (Django の ORM、休止状態など) を使用することに慣れており、HAppSでアプリを作成するときに似たようなものがいいでしょう。
編集:実際のデータベースに関する限り、Postgresql MySql と SQLite から自由に選択できるようにしたいと思います。
私が考えているライブラリは ORM ではありませんが、それでもあなたが望むことをするかもしれません。
プログラムにうまく統合しながら、データベースへのアクセスを安全にするものが必要な場合は、HaskellDBを試してください。基本的に、スキーマを見て、いくつかのデータ構造を生成し、タイプ セーフなクエリ方法を提供します。それはかなり前から存在しており、コミュニティの意見は、それが優れていて安定しているというものです.
これを使用するには、HSQL のような基本的な Haskell DB ライブラリが必要です。
幸運を!
ORM ライブラリが存在する理由は、C# または Java のオブジェクトと、データベースに格納するものとの間には相対的に大きな違いがあるためです。Haskell では、次の理由から、これはそれほど問題ではありません。
個人的には、「Real World Haskell」で推奨されている Database.HDBCのみを使用しました: http://book.realworldhaskell.org/read/using-databases.html
しかし、より高いレベルの DB アクセス層を使用することは間違いなく理にかなっていることに同意し、将来のプロジェクトではおそらくそのようなモデルに移行しようとします。このトピックについて、Haskell のソリューションの歴史と比較を提供する 2012 年の投稿を見つけました 。
それから、Persistent (ドキュメンテーション) と Groundhog (いくつかのドキュメンテーション、例) がこの分野で最も有望なライブラリであることが分かります。どちらのライブラリも、言及したデータベースをサポートしています。Groundhog については、この投稿には書かれていませんが、この発表では、関心のある DB を正確にサポートしていることがわかります。
Esquelettoが更新操作のより良い選択として言及されているHaskell -beginners のこのスレッドにも注意してください。
Persistent は Yesod と同梱されているため、より多くのフォロワーがいる可能性があることに注意してください。
私は実際、HAppS( HAppS-State )のアプローチが非常に気に入っています。これにより、ORMのマーシャリング/アンマーシャリングのクラッジを通過することを忘れて、Haskellのデータ型を使用することができます。
http://hackage.haskell.org/packages/archive/pkg-list.html#cat:Databaseにあるデータベース マッピングとアクセス パッケージを調べましたか。
私はそれらを使用していないので、特定のものをお勧めすることはできません. また、どのデータベースを使用する予定なのかもわかりません。