[Haskell-cafe] trace output statements
Damien Mattei
damien.mattei at gmail.com
Sat Dec 22 08:52:18 UTC 2018
i have this function:
-- this function will return th N°BD from Sidonie for a given name
-- note: names have been standardized between Sidonie and WDS
getBD :: Connection -> String -> IO Float
getBD conn name = trace "Entering getBD" noBDfp
where qry_head = "select `N° BD` from Coordonnées where Nom = ?" :: Query
bd_rows :: IO [Only Text]
bd_rows = query conn qry_head (Only (name::String))
-- noBDtxt :: [Text]
-- noBDtxt = fromOnly (Prelude.head bd_rows)
-- noBDtxt :: IO [Text]
-- lg = fmap Prelude.length bd_rows
-- lg2 = fmap show lg
noBDtxt :: IO Text
-- noBDtxt = trace "lg " (fmap (fromOnly . Prelude.head) bd_rows)
noBDtxt = trace "assigning noBDtxt" (fmap (fromOnly . Prelude.head)
bd_rows)
-- noBDstr :: String
-- noBDstr = Text.unpack noBDtxt
noBDstr :: IO String
noBDstr = trace "assigning noBDstr" (fmap Text.unpack noBDtxt)
-- noBDfp = read $ noBDstr :: Float
noBDfp :: IO Float
noBDfp = fmap read noBDstr
call by :
let lstBD = Prelude.map (\elem ->
getBD conn (Text.unpack (fst elem)))
rows
it works ok, in fact at some point it fails due to NULL sql value not again
handle correctly , i have inserted trace statement that output variable, i
understand it's not really good becaus it breaks the purity of haskell
function, perheaps for this reason i have strange behavior of output:
...
Entering getBD
assigning noBDstr
assigning noBDtxt
Entering getBD
assigning noBDstr
assigning noBDtxt
Entering getBD
assigning noBDstr
assigning noBDtxt
*** Exception: UnexpectedNull {errSQLType = "VarString", errHaskellType =
"Text", errFieldName = "N\194\176 BD", errMessage = "unexpected null in
table Coordonn\195\169es of database sidonie"}
*Main>
you will notice noBDstr seems to be assigned before noBDtxt, but in the
code i have the statements in this order:
noBDtxt = trace "assigning noBDtxt" (fmap (fromOnly . Prelude.head)
bd_rows)
noBDstr :: IO String
noBDstr = trace "assigning noBDstr" (fmap Text.unpack noBDtxt)
i just want to understand wht's happening, this is not critical for code as
it works...
any idea?
Damien
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20181222/2ab287f7/attachment.html>
More information about the Haskell-Cafe
mailing list