liquidhaskell-0.9.0.2.1: tests/neg/Monad7.hs
{-@ LIQUID "--expect-any-error" @-}
module Monad7 () where
import Language.Haskell.Liquid.Prelude
{-@ type OList a = [a]<{\fld v -> (v >= fld)}> @-}
{-@ gpp :: (Ord a, Monad m) => [a] -> m (OList a) @-}
gpp :: (Ord a, Monad m) => [a] -> m [a]
gpp ls = return $ reverse $ insertSort ls
{-@ insertSort :: (Ord a) => xs:[a] -> OList a @-}
insertSort :: (Ord a) => [a] -> [a]
insertSort [] = []
insertSort (x:xs) = insert x (insertSort xs)
insert y [] = [y]
insert y (x : xs) | y <= x = y : x : xs
| otherwise = x : insert y xs