Make logging lazy in the string

Make the logging functions accept a Lazy String so we don't pay
formatting costs when we don't need to
This commit is contained in:
Nathan McCarty 2025-01-08 10:44:52 -05:00
parent 2c012c57db
commit fb2f643efa
2 changed files with 5 additions and 5 deletions

View file

@ -250,7 +250,7 @@ Putting this in its own function makes dealing with the potential error returned
```idris ```idris
-- print to standard error -- print to standard error
ePutStrLn : String -> IO () ePutStrLn : Lazy String -> IO ()
ePutStrLn str = do ePutStrLn str = do
_ <- fPutStrLn stderr str _ <- fPutStrLn stderr str
pure () pure ()
@ -274,7 +274,7 @@ This function uses the provided `String -> IO ()` to remove the `Writer` from th
-- Lowers logging into IO within the effect using the given IO function -- Lowers logging into IO within the effect using the given IO function
handleLog : handleLog :
Has (WriterL "log" String) fs => Has IO (fs - WriterL "log" String) => Has (WriterL "log" String) fs => Has IO (fs - WriterL "log" String) =>
(tell : String -> IO ()) -> Eff fs a -> Eff (fs - (WriterL "log" String)) a (tell : Lazy String -> IO ()) -> Eff fs a -> Eff (fs - (WriterL "log" String)) a
handleLog tell x = handleLog tell x =
handle handle
(\msg, f => (\msg, f =>

View file

@ -20,19 +20,19 @@ namespace Logging
--> -->
```idris ```idris
export export
info : Has (WriterL "log" String) fs => String -> Eff fs () info : Has (WriterL "log" String) fs => Lazy String -> Eff fs ()
info str = info str =
let tag = show . bolden . show . colored Green $ "[INFO]" let tag = show . bolden . show . colored Green $ "[INFO]"
in tellAt "log" (tag ++ ": " ++ str ++ "\n") in tellAt "log" (tag ++ ": " ++ str ++ "\n")
export export
debug : Has (WriterL "log" String) fs => String -> Eff fs () debug : Has (WriterL "log" String) fs => Lazy String -> Eff fs ()
debug str = debug str =
let tag = show . bolden . show . colored BrightWhite $ "[DEBUG]" let tag = show . bolden . show . colored BrightWhite $ "[DEBUG]"
in tellAt "log" (tag ++ ": " ++ str ++ "\n") in tellAt "log" (tag ++ ": " ++ str ++ "\n")
export export
warn : Has (WriterL "log" String) fs => String -> Eff fs () warn : Has (WriterL "log" String) fs => Lazy String -> Eff fs ()
warn str = warn str =
let tag = show . bolden . show . colored Yellow $ "[WARN]" let tag = show . bolden . show . colored Yellow $ "[WARN]"
in tellAt "log" (tag ++ ": " ++ str ++ "\n") in tellAt "log" (tag ++ ": " ++ str ++ "\n")