2012-08-03 34 views
2

acid-state tutorial所有的例子都使用Template Haskell。但是,由於some reasons我不太喜歡使用它。沒有模板haskell的酸性便利包裝?

我知道一個可以使用酸性狀態,而模板哈斯克爾,如下所示:
http://mirror.seize.it/acid-state/examples/HelloWorldNoTH.hs

但如果有任何方便的包裝或庫,以幫助利用酸狀態容易的(不,我徘徊使用模板haskell)?

P.S .:我的目的是實現一個Web應用程序的數據庫層。

+1

在這種情況下,TH *是您正在尋找的便利包裝。我通常在限制使用模板Haskell方面(就像Happstack傢伙afaik),但這是一個非常安全和適當的使用它的IMO。 – mightybyte 2012-08-03 15:14:55

+0

TH只是沒有預定義的語法 - 所有這些只是看起來很古怪,難以閱讀(隨處可見神奇的大寫變體)。 – drozzy 2012-08-03 15:24:32

+1

TH的使用有預定義的語法。 Quasiquotes是你沒有預定義語法的地方,但這裏沒有quasiquotes。 – mightybyte 2012-08-04 14:58:03

回答

4

你不能寫一個派生實例的函數,這就是爲什麼Acid-State使用Template Haskell的原因。

酸國家的開發者已經提到過,他們就不需要使用TH如果GHC增加了支持自動派生類(很像data SomeData = Foo | Bar deriving (Show)

許多上市 TH要點發帖你鏈接只適用於特定情況下(例如,你可以很肯定酸性的TH功能不會發射任何導彈)

我真的不認爲你應該太擔心使用TH - 它有時候會有幫助!

+0

謝謝。對於愚蠢的問題抱歉,但派生類做了什麼? – drozzy 2012-08-03 12:14:59

+1

它自動添加一個類的實例。在上面的tazjin示例中,這意味着您不必編寫'Example Show SomeData where showsPrec_Foo = showString「Foo」; showsPrec_Bar = showString「Bar」'; GHC將自動生成該實例。如果你還可以寫'派生(酸)'或類似的東西,那將是很好的。 – dflemstr 2012-08-03 12:31:05

+0

哦,我明白了。另一個愚蠢的問題:爲什麼不能使用語言擴展,例如'{ - ## - }'中的那些東西' – drozzy 2012-08-03 15:23:32