module Measures where

{-@ measure lllen @-}
llen :: [a] -> Int
llen [] = 0
llen (x:xs) = 1 + llen xs

{-@ llen, llllen :: xs:[a] -> {v:Int| (lllen xs) = v} @-}

lllen :: [a] -> Int	
lllen [] = 0
lllen (x:xs) = 1 + lllen xs

llllen = lllen
