{-# LANGUAGE TypeOperators #-} module BVec (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