{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS -Wall #-}
module Uniform.ListForm
( module Uniform.ListForm,
module Uniform.Zero
)
where
import Uniform.Zero ( Zeros )
class (Monoid l, Zeros (LF l)) => ListForms l where
type LF l
prependOne :: LF l -> l -> l
appendOne :: l -> LF l -> l
mkOne :: LF l -> l
appendTwo :: l -> l -> l
prependOne LF l
a l
la = l -> l -> l
forall l. ListForms l => l -> l -> l
appendTwo (LF l -> l
forall l. ListForms l => LF l -> l
mkOne LF l
a) l
la
appendOne l
la LF l
a = l -> l -> l
forall l. ListForms l => l -> l -> l
appendTwo l
la (LF l -> l
forall l. ListForms l => LF l -> l
mkOne LF l
a)
appendTwo = [Char] -> l -> l -> l
forall a. HasCallStack => [Char] -> a
error [Char]
"not implemented appendTwo for ListForm (<>)"