使用数字文件内容作为int(Haskell)

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).

Tho*_*son 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"
Run Code Online (Sandbox Code Playgroud)