{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}
module Data.TrieMap.Representation (Repr(..), ReprT(..), Rep, RepT) where

import Data.TrieMap.Rep
import Data.TrieMap.Rep.Instances
import Data.TrieMap.Rep.TH
import Data.TrieMap.Regular.Rep
import Data.TrieMap.Regular.Base
import qualified Data.IntMap as IMap

$(genRepT [d|
   instance ReprT IMap.IntMap where
   	toRepTMap f m = List [(toRep k, f a) | (k, a) <- IMap.assocs m]
	fromRepTMap f (List xs) = IMap.fromDistinctAscList [(fromRep k, f a) | (k, a) <- xs] |])