Data structures 数据库支持应用程序的Haskell数据结构

Data structures 数据库支持应用程序的Haskell数据结构,data-structures,haskell,types,Data Structures,Haskell,Types,这是我第一个使用Haskell的程序。我写这篇文章是为了将我读到的关于FP的所有内容付诸实践。我试图弄清楚的第一件事是如何对我将从数据库中提取的数据建模(最终我也将写入数据库)。我从我的users表开始写了这样的东西 module Model (User) where class Audited a where creationDate :: a -> Integer lastUpdatedDate :: a -> Integer creationUser :: a

这是我第一个使用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

(点东西只是我在测试…这是我有史以来第一个Haskell代码)

这段代码不会编译,但我并不真正关心这一点——重要的是以一种好的方式设置我的类型

这是我的问题清单

  • 在Haskell中对基于记录的数据建模的最佳方法是什么
  • 我的大多数表都有审计信息和不透明的ID。如何使用Haskell类型的系统利用这一点?您可以看到,我创建了经过审核和标识的类。这是一个好方法吗
  • 这对Haskell来说是一个很好的应用程序吗?我正在考虑使用Clojure,因为它可以与Java进行互操作(这个应用程序目前是用Java编写的)

对基于记录的数据建模的最佳方法是什么?

作为可能包含(Haskell)记录组件的代数数据类型

简单示例:,表示JSON记录

如何利用Haskell型系统?

Haskell中通过类型类的接口是一种有效的方法,尽管使用
newtype
或其他数据类型,而不导出其构造函数提供了同样强大的抽象属性。就像使用存在类型或广义代数数据类型(GADT)一样

例如:查看如何使用
newtype

示例:用于向PCRE库添加类型安全性和抽象

这是Haskell的一个好应用程序吗?

看起来非常棒。强大的类型、强大的外国金融机构和大量的帮助意味着你有大量的技术来帮助完成工作

示例:Haskell有很多数据库访问器库,例如:

还有那尊尊者,那就是

和不错的高级软件包


因此有很多选择,也有很多例子可以开始学习。

谢谢你的回答。我是哈斯克尔·努贝。如果你能举几个简短的例子来说明你在说什么,那就太棒了。顺便说一句,定义一个函数
id
,不是一个好主意。通常,
id
是定义为
id x=x
的标识函数,因此非常重要。您好。我看到您正在将Haskell与DB一起使用,并且还在Scala中编写代码。你能看看我的问题吗?当您拥有不可变对象时,如我们在FP中通常所做的那样,如何处理数据库?您是否使用可变类进行数据访问?
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