我很新的Haskell,我正在写一个程序,我想创建一个日志消息的时间,并有可能appand文本到当前味精,这样只有信息会改变,但时间会保持创作的时间。 我试图执行以下操作:写我自己的日志数据类型haskell
data Msg = MNothing | MJust UTCTime String
M
是Message,并为MNothing
的原因是为了将有一个空消息的可能性。
我还写道:
instance Monoid Msg where
mempty = MNothing
(MJust t s) `mappend` (MJust t' s') = MJust (minimum (t,t')) (s++s')
这样我可以使用mappend
了两条消息,这将需要时间最早从消息。
我的问题是:
随着消息类型,我无法创建一个
MJust
变量,原因是调用getCurrentTime
回报IO UTCTime
,我想有UTCTime
。我该如何解决这个问题?我只能
concat
2短信息,但它是一种毫无意义的话,是有可能能够Concat的Msg
正常String
(或[Char]
)?
我是新来的Haskell所以也许我失去了一些东西?谢谢。
看来你尚未涵盖Haskell中的一些基本主题,特别是单子。我建议避免使用'IO',直到你至少读过[学习你的Haskell章节](http://learnyouahaskell.com/input-and-output),或者甚至是[关于monads的章节]( http://learnyouahaskell.com/a-fistful-of-monads)。 – AJFarmar