Advertisement
Guest User

Untitled

a guest
Jan 18th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. qLog :: String -> String -> IO ()
  2. qLog l msg = log' "" msg where
  3. log' "I" msg = infoM "" msg
  4. log' "D" msg = debugM "" msg
  5. log' "E" msg = errorM "" msg
  6. log' "W" msg = warningM "" msg
  7. log' _ msg = infoM "" msg
  8.  
  9. λ> qlog "D" "Thing!"
  10. [DEBUG::2017-01-18 20:38:19 EST] Thing!
  11.  
  12. λ> qlog "I" "Thing!"
  13. [INFO::2017-01-18 20:38:19 EST] Thing!
  14.  
  15. λ> qlog "Thing!"
  16. [INFO::2017-01-18 20:38:19 EST] Thing!
  17.  
  18. qLog2 :: Maybe String -> String -> IO ()
  19. qLog2 l msg = case l msg of
  20. (Just "D") msg -> debugM "" msg
  21. (Just "I") msg -> infoM "" msg
  22. Nothing msg -> infoM "" msg
  23.  
  24. qLog3 :: Maybe String -> String -> IO ()
  25. qLog3 l msg
  26. | Just "D" msg = debugM "" msg
  27. | Just "I" msg = infoM "" msg
  28. | Nothing msg = infoM "" msg
  29.  
  30. qLog4 "D" msg = debugM "" msg
  31. qLog4 "I" msg = infoM "" msg
  32. qLog4 msg = infoM "" msg
  33.  
  34. Equations for ‘qLog4’ have different numbers of arguments
  35.  
  36. qLog2 :: Maybe String -> String -> IO ()
  37. qLog2 l msg =
  38. case l of
  39. Just "D" -> debugM "" msg
  40. Just "I" -> infoM "" msg
  41. Nothing -> infoM "" msg
  42.  
  43. qLog :: Maybe String -> String -> IO ()
  44. qLog l msg = case l of
  45. Just "D" -> debugM "" msg
  46. Just "I" -> infoM "" msg
  47. -- etc.
  48. Nothing -> infoM "" msg
  49.  
  50. -- Feel free to use less terse names.
  51. data LogLevel = D | I | W | E
  52. deriving (Eq, Show)
  53.  
  54. qLog :: Maybe LogLevel -> String -> IO ()
  55. qLog l msg = case l of
  56. Just D -> debugM "" msg
  57. Just I -> infoM "" msg
  58. Just W -> warningM "" msg
  59. Just E -> errorM "" msg
  60. Nothing -> infoM "" msg
  61.  
  62. -- I added a few superflous parentheses to emphasise what is going on.
  63. qLog :: Maybe LogLevel -> String -> IO ()
  64. qLog ml msg = case ml of
  65. Just l -> (fLog l) "" msg
  66. Nothing -> infoM "" msg
  67. where
  68. fLog :: LogLevel -> (String -> String -> IO ())
  69. fLog l = case l of
  70. D -> debugM
  71. I -> infoM
  72. W -> warningM
  73. E -> errorM
  74.  
  75. GHCi> :t maybe
  76. maybe :: b -> (a -> b) -> Maybe a -> b
  77.  
  78. -- There are also some superflous parentheses here.
  79. qLog :: Maybe LogLevel -> String -> IO ()
  80. qLog ml msg = (maybe infoM fLog ml) "" msg
  81. where
  82. fLog :: LogLevel -> (String -> String -> IO ())
  83. fLog l = case l of
  84. D -> debugM
  85. I -> infoM
  86. W -> warningM
  87. E -> errorM
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement