type-aligned-0.9.2: Data/TASequence/ConsList.hs
{-# LANGUAGE GADTs #-}
-----------------------------------------------------------------------------
-- |
-- Module : Data.TASequence.ConsList
-- Copyright : (c) Atze van der Ploeg 2014
-- License : BSD-style
-- Maintainer : atzeus@gmail.org
-- Stability : provisional
-- Portability : portable
--
-- A type aligned sequence, a head-tail list, with worst case constant time: '<|', and 'tviewl'.
--
-----------------------------------------------------------------------------
module Data.TASequence.ConsList(module Data.TASequence,ConsList(..)) where
import Data.TASequence
data ConsList c x y where
CNil :: ConsList c x x
Cons :: c x y -> ConsList c y z -> ConsList c x z
instance TASequence ConsList where
tempty = CNil
tsingleton c = Cons c CNil
(<|) = Cons
tviewl CNil = TAEmptyL
tviewl (Cons h t) = h :< t