module LinearScan.Iso where import Debug.Trace (trace, traceShow) import qualified Prelude import qualified Data.IntMap import qualified Data.IntSet import qualified Data.List import qualified Data.Ord import qualified Data.Functor.Identity import qualified LinearScan.Utils data Isomorphism a b = Build_Isomorphism (a -> b) (b -> a) iso_to :: (Isomorphism a1 a2) -> a1 -> a2 iso_to isomorphism = case isomorphism of { Build_Isomorphism iso_to0 iso_from -> iso_to0}