Структуры данных Haskell для приложений, поддерживаемых БД

Это моя первая программа, использующая Haskell. Я пишу его, чтобы применить на практике все, что я читал о ФП. Первым делом я Я пытаюсь понять, как моделировать данные, которые я буду извлекать из своей БД (в конце концов, я также буду писать в БД). Я начал со своей таблицы users и написал что-то вроде этого

module Model (User) where

class Audited a where  
  creationDate :: a -> Integer
  lastUpdatedDate :: a -> Integer
  creationUser :: a -> User
  lastUpdatedUser :: a -> User

class Identified a where
  id :: a -> Integer

data User = User {userId :: Integer}

instance Identified User where
  id u = userId u

и

module Main (main) where
import Model (User)

data Point = Pt {pointx, pointy :: Float}

instance Show Point where
  show (Pt x y) = "(" ++ show x ++ ", " ++ show y ++ ")"

main :: IO ()
main = do 
  print $ Pt 1 2

(материал Point - это только я тестирую ... это мой самый первый код на Haskell)

Этот код не компилируется, но меня это пока не особо беспокоит - главное - правильно настроить мои типы.

Вот список вопросов, которые у меня есть

  • Как лучше всего моделировать данные на основе записей в Haskell?
  • Большинство моих таблиц содержат информацию аудита и непрозрачные идентификаторы. Как я могу воспользоваться этим, используя систему типов Haskell? Как видите, я создал классы Audited и Identified. Это хороший подход?
  • Это вообще хорошее приложение для Haskell? Я подумывал об использовании Clojure, поскольку он мог бы взаимодействовать с Java (это приложение в настоящее время написано на Java).
6
задан Don Stewart 23 April 2011 в 16:04
поделиться