2013-08-19 18 views
7

私は暇な時間にハスケルでボキャブラリートレーナーをプログラミングしています。代数的データ型を使用するHaskellデータベースはありますか?

私はエントリが

Word { _frq=1 
    , _fra="le" 
    , _eng="the; him, her, it, them" 
    , _deu="der,die,das; er,sie,es" 
    , _uses=[Determiner [], Pronoun []] 
    , _phrase=" vive la politique, vive l'amour" 
    , _sentence="long live politics, long live love" 
    , _satz="Lang lebe die Politik, lang lebe die Liebe." 
    } 

ほとんどの場合、ドイツ語翻訳_deu=_satz=が最も頻繁に私が更新したいだけの空の文字列であるように見える代数的データ型としてモデル化された単語を使用してファイルを持っていますプログラム内。

私はいくつかの質問があります: 1. haskell用のHaskellデータ型を使用しているデータベースがありますか? 私が見つけたのは、MySQLなどとのHDBCバインディング、その他のxml/JSONのものでした。

  1. データベースを使用する代わりにファイルを更新すると、プログラム全体を再コンパイルする方法があるのですか?少し面倒です。これを並べ替える - 私は、この言葉の知識を示す番号を更新し、各学習段階のように、頻繁に更新する必要があるデータ構造で学んだ語彙を保存したい

と3番目の質問

挿入中またはその後のデータ構造。次に、このデータ構造内の位置に基づいて新しい単語を選びます。リストは、完全なリストのトラバースを行うために非効率的であるように見えます。ソートは、より良い解決策があれば大きな努力です。 最後に私は5000リストエントリしか持っていないので、おそらく間違った場所で速度について心配ですか?

答えて

9

データベースに関しては、Acid-Stateをご覧ください。ハッシュスタッククラッシュコースの一環として、a tutorialもあります。

モデルの型の安全性を維持するという点で、あなたが求めることはありますか?私はherehereを含むいくつかのウェブアプリケーションで使用するようにしました。(その2つ目は、MongoDBに対するHDBCのベンチマーク試行の一部ですAcidStateを使って、HaskellのWebアプリケーションの中でどのように実装方法を比較するかを見ることができます)。

3番目の質問には、5000個の挿入/読み取りで、はパフォーマンスを心配する必要はありません。 those benchmarks I mentionedを見ると、「大きい」ベンチマークでは、(比較的小さい)50,000件のトランザクションが非常に短時間で実行されます。

+1

http://acid-state.seize.it/サーバーは2016-07-17で反応しませんでした。私はGitHubリポジトリへのリンクを変更しました。これが一時的なエラーだった場合は、元のリンクを元に戻してください。 –

7

チェックアウトイェソドからPersistent

永続データへのイェソドの答えでは、Haskellのためのタイプセーフ、ユニバーサルデータストア・インタフェースをstorage-。

[...]まだながら

永続的には、私たちは、非常に異なるデータ・ストレージ・ユースケースのために調整されている既存のデータベースの中から選択する他のプログラミング言語との相互運用性、そして安全かつ生産クエリインターフェイスを使用することができるようになりますHaskellデータ型の型安全性を維持します。

永続性は、型の安全性と簡潔な宣言構文の基本原則に従います。

+3

「Either」のような永続的なハンドルの合計型を使用できますか? –

+0

@GabrielGonzalez私はまだそれを学んでいるので、私は確信していませんが、ないと思います。 –

+3

これはsum型の基本的なサポートを持っていますが、完全に任意のADTを埋め込むことを可能にするのではなく、実際にはデータベースの制約のもとに構築されています。 –

関連する問題