liquidhaskell-0.8.10.7: tests/measure/pos/List01.hs
module List00Lib where
data List yy
= Emp
| Cons yy (List yy)
{-@ measure size @-}
size :: List zoob -> Int
size Emp = 0
size (Cons _ xs) = 1 + size xs
{-@ append :: xs:List a -> ys: List a -> {v:List a | size v = size xs + size ys} @-}
append :: List a -> List a -> List a
append Emp ys = ys
append (Cons x xs) ys = Cons x (append xs ys)