packages feed

cookbook-2.0.0.1: Cookbook/Ingredients/Lists/Splice.hs

{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module Cookbook.Ingredients.Lists.Splice(Splicable(..)) where
import qualified Cookbook.Essential.Continuous as Ct
import qualified Cookbook.Essential.Common     as Cm

class Splicable a b where
  splice :: a -> b -> a

instance (Eq a) => Splicable [a] (a,a) where
  splice ls (a,b) = Ct.before ls a ++ Cm.fromLast ((flip Ct.before) b) ls

instance (Eq a) => Splicable [a] ([a],[a]) where
  splice ls (a,b)  = Ct.before ls a ++ Ct.after (Ct.after ls a) b