2012-01-09 2 views
2

persistentのより強力なコンパイルとして、haskelldbを調べ始めました。データベースを照会するにはより強力なツールが必要です。ほぼすぐに私はデータ型で問題に遭遇しました。特に、私はData.Textかなり広く、UTCTimeもいくつかのカスタムデータ型を使用しています。残念ながら、HDBCはこれらのデータ型を非常にうまくサポートしているようですが、haskelldbはこれをすべて隠しており、Stringから始まる独自のコンバージョンを作成する必要があります。実際にhaskelldbを使用したデータ型(テキスト、UTCTime)

私はすでにHDBCの作業を複製したくありません。この場合、あなたは何をするべきですか?

というクラスをGetInstancesクラスに追加して、単純なGetValueというインスタンスを作成して、HDBCインフラストラクチャを活用できるようにすると思います。良いアイデアはありますか?私は明白な何かを欠いていますか

(ところで:このライブラリがあるように私には思える - 多分歴史的な理由から - 少し過剰一般化、それだけでHDBCをサポートしていませんでした..?)

+0

は永続本当に限られますか?私はYesodの人々がすべてのためにそれを使用すると思うので、HaskellDBがそれをすることができないことが多くあるならば、私は驚くだろう。もちろん、HaskellDBは永続的なものよりも簡単な方法でいくつかのことを行うことができます。 – ehird

+3

はい。 Persistentは実際にはデータベースに依存しないはずですが、haskelldbはSQLを中心としています。 Persistentは、DB関数、カスタム演算子、さらに少し複雑な結合をサポートしていません。私は永続的な責任を負いません、ほとんどのORMフレームワークはそのような機能をサポートしていませんが、DBにアクセスするほとんどの私のアプリケーションで私はそれらを必要とします。 – ondra

+0

あなたはesqueletoを評価しましたか? –

答えて

2

私は本当にPostgreSQLとその豊富な種類を愛しコレクション、特に配列。 Haskell以外のプロジェクトで余分なPGの型のほとんどは、intの典型的な配列である[int4]です。 HaskellDBへのサポートをもたらすことは、Haskellを理解するための私の道、特にタイプレベルのプログラミング(とTH/QQも)の中で最もエキサイティングな課題の1つになりました。 HDBCがサポートしている限り、サポートに新しいタイプを追加するのは簡単です。

この小さなパッチは、新しいタイプのサポートを追加する方法を示してくれるはずです。ここではそのためのプル要求、ここでは説明に必要なほぼすべての変更は、(残っていることすべてがFlexibleInstancesです)です:

Pull Request

Main Changeset

+1

「プルリクエスト」リンクは404を返します。 –

+0

固定リンク、ありがとう – Orca

関連する問題