{-# LANGUAGE DerivingVia #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -Wno-orphans #-} module Data.Function.FastMemo.Containers () where import Data.Function.FastMemo.Class (Memoizable (..)) import Data.Function.FastMemo.Int () import Data.Function.FastMemo.List (AsList (..)) import Data.IntMap (IntMap) import Data.IntSet (IntSet) import Data.Map (Map) import Data.Sequence (Seq) import qualified Data.Sequence as Seq import Data.Set (Set) import Data.Tree (Tree) deriving via AsList (Map a b) instance (Ord a, Memoizable a, Memoizable b) => Memoizable (Map a b) deriving via AsList (Set a) instance (Ord a, Memoizable a) => Memoizable (Set a) deriving via AsList (IntMap b) instance (Memoizable b) => Memoizable (IntMap b) deriving via AsList IntSet instance Memoizable IntSet deriving via AsList (Seq a) instance Memoizable a => Memoizable (Seq a) instance Memoizable a => Memoizable (Seq.ViewL a) instance Memoizable a => Memoizable (Seq.ViewR a) instance Memoizable a => Memoizable (Tree a)