{- |
Module      :  Control.Monad.Trans.Memo.Vector.Instances
Copyright   :  (c) Eduard Sergeev 2013
License     :  BSD-style (see the file LICENSE)

Maintainer  :  eduard.sergeev@gmail.com
Stability   :  experimental
Portability :  non-portable (multi-param classes, functional dependencies)

Default instances for `VectorMemo` and `UVectorMemo`

-}

{-# LANGUAGE NoImplicitPrelude, MultiParamTypeClasses,
  UndecidableInstances, FlexibleInstances, TypeFamilies #-}

module Control.Monad.Memo.Vector.Instances
(


) where

import Data.Maybe

import Data.MaybeLike
import qualified Control.Monad.Memo.Vector as V
import qualified Control.Monad.Memo.Vector.Expandable as E
import qualified Control.Monad.Memo.Vector.Unsafe as U


instance MaybeLike (Maybe v) v => V.VectorMemo v (Maybe v)

instance MaybeLike v v => V.UVectorMemo v v


instance MaybeLike (Maybe v) v => E.VectorMemo v (Maybe v)

instance MaybeLike v v => E.UVectorMemo v v


instance MaybeLike (Maybe v) v => U.VectorMemo v (Maybe v)

instance MaybeLike v v => U.UVectorMemo v v