gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:18:40 25 4
gpt4 key购买 nike

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

这段代码不能编译,但我还不是很担心——重要的是让我的类型以一种好的方式设置。

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

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

    作为可能具有(Haskell)记录组件的代数数据类型。

    简单示例:the JSValue data type ,表示 JSON 记录。

    如何利用 Haskell 类型系统?

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

    示例:查看例如如何newtype使用 in this example .

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

    这对 Haskell 来说甚至是一个很好的应用程序吗?

    看起来很完美。强大的类型、强大的 FFI 和大量 libraries on Hackage帮助意味着您拥有大量技术来帮助完成工作。

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

  • mongo
  • riak
  • berkleydb
  • cassandra
  • couchdb
  • tyrant

  • 和可敬的 hdbc ,即 also documented in RWH .

    magically persistening Haskell data 的高级软件包.

    所以有很多选择,还有很多可以开始的例子。

    关于data-structures - 数据库支持应用程序的 Haskell 数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5765080/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com