Структура программы - Простая командная строка To Do List App - Что такое Haskell?

Справочная информация: Я работаю над своей первой полной программой на Haskell, простым приложением-списком на командная строка.

Мой вопрос касается структуры и имеет два уровня: (1) Как лучше всего это сделать? и (2) Какой (функциональный) способ сделать это в Haskell? Я так сформулировал это потому, что подозреваю, что может быть более быстрый или простой способ сделать это, игнорирующий принципы функционального программирования. Я хотел бы сделать это более элегантным и понятным способом, поскольку это скорее обучающее упражнение, чем что-либо еще.

Имейте в виду, что я (очевидно) хотел бы, чтобы приложение было несколько устойчивым. Прямо сейчас в таблице есть два варианта: хранить информацию в простом текстовом файле или, поочередно, в базе данных Sqlite.

Первая структура, которая пришла на ум, была примерно такой, где объект типа ToDoList представляет собой просто список ToDo items:

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, которые я пытаюсь применить в этом проекте?

7
задан Pygmalion 8 December 2010 в 02:35
поделиться