module Data.Fixpoint.Instances ()
where

import Data.Fixpoint.Base

import Data.Foldable
import Data.Monoid

instance Fixpoint [a] where
#ifndef __HADDOCK__
  data Pre [a] s = Nil | Cons a s deriving(Show)
#endif

  project []     = Nil
  project (x:xs) = Cons x xs

  inject Nil         = []
  inject (Cons x xs) = x : xs

instance Functor (Pre [a]) where
  fmap _ Nil        = Nil
  fmap f (Cons x s) = Cons x (f s)

instance Foldable (Pre [a]) where
  foldMap _ Nil        = mempty
  foldMap f (Cons _ s) = f s