比如说,我在单独的 DB.hs 文件中有一个随机 DB 函数。像这样的东西:
savePerson :: Person -> IO ()
savePerson p = do
c <- connect
run c "INSERT INTO persons (name, age) \
\VALUES (?, ?)"
[toSql (personName p), toSql (personAge p)]
commit c
disconnect c
return ()
现在,如果我导入 DB.hs,如何在 Site.hs 中的处理程序中执行这些函数?
如果我像这样简单地将它粘贴在我的处理程序中(这只是一个示例):
insertPerson = do
par <- getPostParams
let p = toPerson par
savePerson p
return ()
where
toPerson m =
Person {personName = head (m ! (B.pack "name"))
,personAge = read (B.unpack (head (m ! (B.pack "age")))) :: Int
}
这不起作用。我不希望处理程序返回任何东西,我只希望它保存 Person 而不返回/渲染任何东西。
正确的做法是什么?
谢谢。