Справочная информация: Я работаю над своей первой полной программой на Haskell, простом списке приложений в командной строке.
У меня вопрос по структуре и имеет два уровня:(1) Каков наилучший способ сделать это?и (2) Каков Haskell (функциональный) способ сделать это?Причина, по которой я формулирую это так, состоит в том, что я подозреваю, что может быть более быстрый или более простой способ сделать это, игнорирующий принципы функционального программирования.Я хотел бы сделать это более элегантным и понятным способом, так как это больше учебное упражнение, чем что-либо еще.
Имейте в виду, что я (очевидно) хотел бы, чтобы приложение было несколько настойчивым,Прямо сейчас две опции в таблице - хранить информацию в текстовом файле или поочередно в базе данных Sqlite.
Первой структурой, которая пришла в голову, было что-то вроде этого, где объект типа ToDoList - это простоСписок элементов ToDo:
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, которые яищу практику с этим проектом?