【发布时间】:2019-06-16 03:49:04
【问题描述】:
有什么方法可以使用文件的内容,其中包含一个计数器值(数据库系统的增量 id)作为常规 int?
我们正在尝试在 Haskell 中创建一个小型数据库系统,并且需要跟踪表的增量 id。我们认为唯一“简单”的方法是将它们保存在纯 txt 文件中。但是,在检索它们时,返回类型将为IO Int。不过,我们的数据库表定义需要 Int 作为 id。
有谁知道如何将 txt 文件中的增量 id(或一般的整数值)用于需要 Int 值的类实例?
提前致谢!
编辑:说明问题的代码示例:
data SomeTable = SomeTable { id :: Int, testField :: String }
someRow = SomeTable (generateNextId "SomeTable") "Test"
generateNextId 从文件中读取当前增量 id(因此类型为 IO Int 而不是 Int)。
【问题讨论】:
-
.从文件中读取本质上是一种 I/O 操作 - 因此您需要在返回类型中使用
IO。因此,要么您需要id字段的类型为IO Int,要么(可能更好)someRow的类型为IO SomeTable。
标签: database haskell types io int