Skip to content

Commit fcedee9

Browse files
committed
Add instances for Maybe type in ToCanonicalCBOR and FromCanonicalCBOR
1 parent dad5f26 commit fcedee9

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

  • libs/cardano-ledger-canonical-state/src/Cardano/Ledger/CanonicalState

libs/cardano-ledger-canonical-state/src/Cardano/Ledger/CanonicalState/BasicTypes.hs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,19 @@ instance FromCanonicalCBOR v CanonicalCoin where
121121
instance ToCanonicalCBOR v CanonicalCoin where
122122
toCanonicalCBOR v (CanonicalCoin (CompactCoin c)) = toCanonicalCBOR v c
123123

124+
instance ToCanonicalCBOR v a => ToCanonicalCBOR v (Maybe a) where
125+
toCanonicalCBOR v Nothing = toCanonicalCBOR v ()
126+
toCanonicalCBOR v (Just x) = toCanonicalCBOR v x
127+
128+
instance FromCanonicalCBOR v a => FromCanonicalCBOR v (Maybe a) where
129+
fromCanonicalCBOR = do
130+
mt <- peekTokenType
131+
case mt of
132+
D.TypeNull -> do
133+
Versioned () <- fromCanonicalCBOR
134+
pure (Versioned Nothing)
135+
_ -> fmap Just <$> fromCanonicalCBOR
136+
124137
instance ToCanonicalCBOR v a => ToCanonicalCBOR v (StrictMaybe a) where
125138
toCanonicalCBOR v SNothing = toCanonicalCBOR v ()
126139
toCanonicalCBOR v (SJust x) = toCanonicalCBOR v x

0 commit comments

Comments
 (0)