{-# LANGUAGE TypeOperators #-}
module DVec (Vec, (++), type (@@@), cons, fromList, snoc) where

import Prelude hiding ((++))

data Vec a

(++) :: Vec a -> Vec a -> Vec a
(++) = undefined

data (@@@) a b

fromList :: [a] -> Vec a
fromList = undefined

cons :: a -> Vec a -> Vec a
cons = undefined

snoc :: Vec a -> a -> Vec a
snoc = undefined
