packages feed

moonlight-delta-0.1.0.0: src-core/Moonlight/Delta/Normalize.hs

module Moonlight.Delta.Normalize
  ( DeltaNormalize (..),
  )
where

import Data.Bool (Bool)

-- | Delta canonicalization.
--
-- Instances must satisfy:
--
-- * @normalizeDelta (normalizeDelta delta) == normalizeDelta delta@.
-- * @deltaNull (normalizeDelta delta) == deltaNull delta@.
--
-- A null delta may still carry representation-specific data before
-- normalization, but canonical nulls should be stable under
-- 'normalizeDelta'.
class DeltaNormalize delta where
  normalizeDelta :: delta -> delta
  deltaNull :: delta -> Bool