thr*_*ups 6 haskell types data-structures
这是我使用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
Run Code Online (Sandbox Code Playgroud)
和
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
Run Code Online (Sandbox Code Playgroud)
(这些Point东西只是我测试......这是我的第一个Haskell代码)
这段代码没有编译,但我还没有真正关心 - 最重要的是让我的类型设置得很好.
这是我的问题清单
对基于记录的数据建模的最佳方法是什么?
作为具有可能(Haskell)记录组件的代数数据类型.
简单示例:JSValue数据类型,表示JSON记录.
我如何利用Haskell类型系统?
Haskell中通过类型类的接口是一种有效的方法,尽管使用一种newtype或其他数据类型,而不导出其构造函数提供了同样强大的抽象属性.与使用存在类型或广义代数数据类型(GADT)一样.
示例:查看例如在此示例中如何newtype使用.
示例:newtype用于向PCRE库添加类型安全性和抽象.
这对Haskell来说是一个很好的应用吗?
似乎完全是cromulent.强大的类型,强大的FFI以及Hackage上的大量库帮助意味着您拥有足够的技术来帮助完成工作.
示例:Haskell有许多很多数据库访问器库,例如:
还有很好的高级软件包,用于神奇地持久化Haskell数据.
所以有很多选择,还有很多例子可供选择.