import Control.Monad
import Database.TokyoCabinet.FDB
main = do fdb <- new
-- open the database
open fdb "casket.tcf" [OWRITER, OCREAT] >>= err fdb
-- store records
puts fdb [(1, "one"), (12, "twelve"), (144, "one forty four")]
>>= err fdb . (all id)
-- retrieve records
get fdb (1 :: Int) >>= maybe (error "something goes wrong") putStrLn
-- close the database
close fdb >>= err fdb
where
puts :: FDB -> [(Int, String)] -> IO [Bool]
puts fdb = mapM (uncurry $ put fdb)
err :: FDB -> Bool -> IO ()
err fdb = flip unless $ ecode fdb >>= error . show