背景:我正在我的第一個完整的程序Haskell,一個簡單的命令行列表應用程序的命令行上工作。程序結構 - 簡單的命令行列表應用程序 - Haskell的方式是什麼?
我的問題是一個結構,有兩個層次:(1)最好的方法是什麼?和(2)什麼是Haskell(功能)的方式來做到這一點?我這樣說的原因是因爲我懷疑可能有一種更快或更簡單的方法來忽略功能性編程的原理。我希望以更優雅和清晰的方式來做,因爲它比其他任何事都更像是一次學習練習。
請記住,我會(顯然)像應用程序有點持久。現在桌面上的兩個選項是將信息存儲在一個平面文本文件中或交替存儲在Sqlite數據庫中。
浮現在腦海的第一個結構是這樣的,其中TodoList的類型的對象是一個簡單的待辦事項列表:
import Data.List
import Data.Time
data ToDo = ToDo {
todoId :: Int,
todoDue :: ZonedTime,
todoCreated :: UTCTime,
todoItem :: String,
todoPriority :: Priority,
todoStatus :: Status
}
deriving (Show, Read)
type ToDoList = [ToDo]
data Priority = Low | Medium | High
deriving (Show, Read, Eq, Ord)
data Status = Complete | InProgress | Open
deriving (Show, Read, Eq, Ord)
但後來我開始琢磨如何更好地存儲這種類型的對象。這是否意味着我將它們存儲在平面文件中?有什麼辦法可以將這種高度指定類型的對象與數據庫中的字段/列關聯起來嗎?
當我考慮使用Sqlite數據庫時,似乎所有的工作都將在數據庫調用中完成,而Haskell類型與它的關係相對較小。這看起來很糟糕。
總之,問題是如何最好地模擬我的簡單待辦事項列表應用程序的數據結構,以符合我正在尋求在此項目中實踐的函數式編程和Haskell理想的概念?
什麼是「todoId」字段爲
Ord
實例?除非它有一些用戶可見的含義,否則你可能不需要它。 Haskell不是數據庫,所以你不需要主鍵。 – 2010-12-08 06:31:33