这是我使用Haskell的第一个程序。我正在编写它以实现我所读到的关于FP的所有内容。我想弄清楚的第一件事是如何建模我将从数据库中提取的数据(最终我也将写入数据库)。我从我的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代码。
这段代码没有编译,但我还没有真正关心 - 最重要的是让我的类型设置得很好。
以下是我提出的问题清单
答案 0 :(得分:9)
基于记录的数据建模的最佳方法是什么?
作为具有可能(Haskell)记录组件的代数数据类型。
简单示例:the JSValue data type,表示JSON记录。
如何利用Haskell类型系统?
Haskell中的接口通过类型类是一种有效的方法,尽管使用newtype
或其他数据类型,而不导出其构造函数提供同样强大的抽象属性。与使用存在类型或广义代数数据类型(GADT)一样。
示例:查看例如如何newtype
使用{{1}}。
示例:in this example用于向PCRE库添加类型安全性和抽象。
这对Haskell来说是否是一个很好的应用程序?
似乎完全是cromulent。强大的类型,强大的FFI和大量newtype
帮助意味着您拥有足够的技术来帮助完成工作。
示例:Haskell有许多很多数据库访问器库,例如:
also documented in RWH的高级别包。
所以有很多选择,还有很多例子可供选择。