簡體   English   中英

是否有使用代數數據類型的Haskell數據庫?

[英]Is there a Haskell database using algebraic datatypes?

我在業余時間在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(我真的很喜歡在我的數據庫中輸入安全性)? 我找到的東西是HDBC綁定到MySQL等,以及其他一些xml / JSON的東西。

  1. 如果我更新文件而不是使用數據庫,有沒有辦法重新編譯整個程序 - 這樣做會有點乏味。

和第三個問題

我想將學習的詞匯保存在需要經常更新的數據結構中,因為在每個學習步驟中我更新一個表示該詞知識的數字 - 並在插入/或之后對該數據結構進行排序。 然后我根據它在這個數據結構中的位置選擇一個新單詞。 對於進行完整列表遍歷而言,列表似乎效率低下,如果有更好的解決方案,排序是一項很大的工作。 最后一個注釋我確實只有5000個列表條目,所以也許它擔心速度在錯誤的位置?

數據庫方面,看看酸狀態 作為Happstack Crash Course的一部分,還有一個教程

在維護模型中的類型安全性方面,它可以滿足您的要求。 我不確定這對你有多大幫助,但是我已經把它用在了幾個網絡應用程序中,包括這里這里 (第二個是HDBC對抗MongoDB的基准測試嘗試的一部分) AcidState,因此您可以使用它來查看三者如何在Haskell Web應用程序的上下文中實現比較。

對於你的第三個問題,在5000次插入/讀取時,你真的不應該擔心性能。 如果你看一下我提到的那些基准測試 ,那么“大”基准測試會在非常短的時間內完成(相對較小的)50 000次交易,並且它們比你似乎正在做的更加頻繁。

查看Yesod的Persistent

持久性是Yesod對數據存儲的回答 - 一種用於Haskell的類型安全的通用數據存儲接口。

[...]

Persistent允許我們在現有數據庫中進行選擇,這些數據庫針對不同的數據存儲用例進行了高度調整,可與其他編程語言進行互操作,並使用安全且高效的查詢接口,同時仍保持Haskell數據類型的類型安全性。

Persistent遵循類型安全和簡潔,聲明性語法的指導原則。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM