module Foo () where

moo = insert 4 [1, 2, 3]

{-@ insert      :: (Ord a) => x:a -> xs: [a]<{\fld v -> (v >= fld)}> -> {v: [a]<{\fld v -> (v >= fld)}> | len(v) = (1 + len(xs)) } @-}
insert y []                            = [y]
insert y (x : xs) | y > {- <= -} x     = y : x : xs 
                  | otherwise          = x : insert y xs

