@@ -442,8 +442,9 @@ chainEncoder cons this rest = Encoder $ do
442442 pure $ EncoderImpl
443443 { _encoderImpl_decode = \v -> do
444444 (here, following) <- _encoderImpl_decode consValid v
445− Some r <- _encoderImpl_decode thisValid here
446− (r :/) <$> _encoderImpl_decode (runIdentity . unEncoder $ rest r) following
445+ _encoderImpl_decode thisValid here >>= \case
446+ Some r ->
447+ (r :/) <$> _encoderImpl_decode (runIdentity . unEncoder $ rest r) following
447448 , _encoderImpl_encode = \(r :/ s) ->
448449 _encoderImpl_encode consValid
449450 ( _encoderImpl_encode thisValid $ Some r
@@ -912,12 +913,12 @@ dmapEncoder keyEncoder' valueEncoderFor = unsafeEncoder $ do
912913 , encode (toEncoder (DMap.findWithDefault (error . keyError $ gshow k') k' valueDecoders)) v'
913914 )
914915 , _encoderImpl_decode = \m -> fmap DMap.fromList . forM (Map.toList m) $ \(k,v) -> do
915− Some (k' :: k' t) <- tryDecode keyEncoder k
916− case DMap.lookup k' valueDecoders of
917− Nothing -> throwError . T.pack . keyError $ gshow k'
918− Just (Decoder e) -> do
919− v' <- tryDecode e v
920− return (k' :=> Identity v')
916+ tryDecode keyEncoder k >>= \case
917+ Some (k' :: k' t) -> case DMap.lookup k' valueDecoders of
918+ Nothing -> throwError . T.pack . keyError $ gshow k'
919+ Just (Decoder e) -> do
920+ v' <- tryDecode e v
921+ return (k' :=> Identity v')
921922 }
922923
923924fieldMapEncoder :: forall check parse r.