use*_*349 -4 database io int haskell types
有没有什么方法可以使用文件的内容,它包含一个计数器值(数据库系统的增量id)作为常规int?
我们正在尝试在Haskell中创建一个小型数据库系统,并需要跟踪表的增量ID.我们认为唯一"简单"的方法是将它们保存在普通的txt文件中.但是,在检索它们时,返回类型将是IO Int.我们的数据库表定义需要一个Intid作为id.
有没有人知道如何使用txt文件中的增量id(或一般的整数值)来获取需要Int值的类实例?
提前致谢!
编辑:说明问题的代码示例:
data SomeTable = SomeTable { id :: Int, testField :: String }
someRow = SomeTable (generateNextId "SomeTable") "Test"
Run Code Online (Sandbox Code Playgroud)
where generateNextId从文件中读取当前增量id(因此具有类型IO Int而不是Int).
好吧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"
Run Code Online (Sandbox Code Playgroud)