2014-10-03 32 views
4

Python有這個神奇的shelve它就像一個dict,除了它自動支持一個文件。它允許您在程序運行之間保持大型數據結構。真正令人驚訝的是,它甚至不會在每次運行時從磁盤加載整個內容,而是等待您請求一個密鑰,然後僅給出該密鑰的值。是否存在與透明持久性的Python「shelve」相當的Haskell?

所以,顯而易見的問題:Haskell可以競爭嗎?

+5

Haskell程序員很少想要的東西,尤其是I/O的東西,如保存和加載,透明地(即自動)發生。地道的Haskell代碼解釋I/O。有強大的文件支持商店; 「酸狀態」跳躍在腦海中。但沒有一個是「神奇的」,原因很多。 (其中,慣用的Haskell數據結構通常是無限的!) – 2014-10-03 21:54:23

+2

不僅是無限的,而且是不可變的!當寫入不被允許時,透明直寫緩存對磁盤的價值看起來很蒼白。 – amalloy 2014-10-03 22:22:55

回答

3

Persistent以及其中一個更通用的後端,如map,refs,protobufcereal

+3

鏈接到的「後端」實際上都不是後端。兩個與「持久性」無關;其他人是助手(並過時)。不過,Michael可能對'persistent-sqlite'感興趣。 – 2014-10-03 22:02:24

+0

我玩過Persistent,而我不喜歡的是,您必須定義一個SQL表結構,儘管我認爲您可以付出更多的努力,我認爲您可以創建一個具有Aeson Value值的列表。但是,由於我的使用案例很繁瑣,很少寫,所以我發現Cerial和Map符合我的需求。 – 2014-10-24 21:42:34