packages feed

liquidhaskell-0.4.0.0: tests/pos/monad6.hs

module Foo () where

import Language.Haskell.Liquid.Prelude 

{-@ gpp :: Monad m => m {v:Int|v>=0} -> m {v:Int|v>=0} @-}
gpp :: Monad m => m Int -> m Int
gpp z = do x <- z
           return $ liquidAssert (x >= 0) (x + 1)


xM :: [Int]
xM = gpp [0]