たとえば、別の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を保存するだけで、何も返さない/レンダリングしないようにします。
それを行う正しい方法は何ですか?
ありがとう。