Data.Binary
отлично.У меня есть только один вопрос.Давайте представим, что у меня есть такой тип данных:
import Data.Binary
data Ref = Ref {
refName :: String,
refRefs :: [(String, Ref)]
}
instance Binary Ref where
put a = put (refName a) >> put (refRefs a)
get = liftM2 Ref get get
Легко видеть, что это рекурсивный тип данных, который работает, потому что Haskell ленив.Поскольку язык Haskell не использует ни ссылок, ни указателей, а представляет данные как есть, я не уверен, как они будут сохранены.У меня есть четкое указание на то, что этот наивный упрек приведет к бесконечной проверочной строке ...
Так как же можно безопасно сохранить этот тип?