module Data.AList.NonEmpty where
import Prelude hiding (sum)
import Data.Semigroup

data AListNonEmpty a = AListNonEmptyAppend (AListNonEmpty a) (AListNonEmpty a)
                     | AListNonEmptySingle a
  deriving (Read,Show)

instance Foldable AListNonEmpty where
   foldMap f (AListNonEmptySingle a) = f a
   foldMap f (AListNonEmptyAppend a b) = foldMap f a `mappend` foldMap f b

append = AListNonEmptyAppend

instance Semigroup (AListNonEmpty a) where
 (<>) = append