packages feed

ruler-0.4.0.0: src/JdShpGam.chs

-------------------------------------------------------------------------
-- Judgment Gamma
-------------------------------------------------------------------------

%%[1 hs module (JdShpGam)
%%]

%%[1 hs export (JdShpInfo(..), JdShpGam, jdshpgUnionShadow)
%%]

%%[1 hs import (qualified Data.Set as Set, qualified Data.Map as Map, UHC.Util.Pretty, Common, Gam, FmGam)
%%]

-------------------------------------------------------------------------
-- Judgement formats
-------------------------------------------------------------------------

%%[1 hs
data JdShpInfo e
  = JdShpInfo
      { jdshExpr  :: e
      }
  | JdShpDel

instance Show (JdShpInfo e) where
  show _ = "JdShpInfo"

instance PP e => PP (JdShpInfo e) where
  pp (JdShpInfo e) = "Jd" >#< pp e
  pp (JdShpDel   ) = pp "JdShpDel"

type JdShpGam e = FmKdGam (JdShpInfo e)

jdshpgUnionShadow :: JdShpGam e -> JdShpGam e -> JdShpGam e
jdshpgUnionShadow gn g
  = gamFoldWithKey
      (\fk i g
        -> case i of
             JdShpDel -> gamDelete fk g
             _        -> gamInsertShadow fk i g
      )
      g gn

%%]