我是否可以使用某种方式将文件的内容作为常规int使用,该文件的内容包含一个计数器值(数据库系统的增量ID)?
我们正在尝试在Haskell中创建一个小的数据库系统,并且需要跟踪表的增量ID。我们认为唯一的“简便”方法是将它们保存在纯文本文件中。但是,检索它们时,返回类型将为IO Int
。但是,我们的数据库表定义需要Int
作为ID。
是否有人对需要Int
值的类实例如何使用txt文件中的增量ID(或通常为整数值)?
谢谢!
编辑:说明问题的代码示例:
data SomeTable = SomeTable { id :: Int, testField :: String }
someRow = SomeTable (generateNextId "SomeTable") "Test"
generateNextId
从文件中读取当前的增量ID(因此其类型为IO Int
而不是Int
)。
答案 0 :(得分:8)
好吧IO Int
是一种动作,就像读取击键一样,会导致Int
。因此,执行该操作以获得一个Int:
data SomeTable = SomeTable { id :: Int, testField :: String }
someRow :: IO SomeTable
someRow =
do i <- generateNextId "SomeTable"
return (SomeTable i "Test")
someRowAlternative :: IO SomeTable
someRowAlternative =
SomeTable <$> generateNextId "SomeTable" <*> pure "Test"