Скажем, я хотел создать оболочку для UTCTime :
data CustomDateStamp = CustomDateStamp
{
stampValue :: UTCTime
} deriving (Show, Eq, Ord, Typeable)
Теперь скажите, что я хочу создать для этого значение по умолчанию "сейчас", например
instance Default CustomDateStamp where
def = CustomDateStamp getCurrentTime def
Это (очевидно) завершается с:
• Couldn't match expected type ‘UTCTime’
with actual type ‘IO UTCTime’
• In the first argument of ‘CustomDateStamp’, namely ‘getCurrentTime’
In the expression: CustomDateStamp getCurrentTime def
In an equation for ‘def’: def = CustomDateStamp getCurrentTime def
|
98 | def = CustomDateStamp getCurrentTime def
| ^^^^^^^^^^^^^^
Мой вопрос: как я могу использовать побочные эффекты в определениях экземпляров?Это вообще возможно?Какой предпочтительный подход к такой ситуации?