packages feed

liquidhaskell-0.4.0.0: tests/pos/deppair1.hs

module Niki () where

import Language.Haskell.Liquid.Prelude

incr  :: Int -> Int
incr x = x + 1


-- THIS DOES NOT WORK: baz  :: Int -> (y: Int, {v: Int | v > y}) @-}
-- BUT THIS DOES
{-@ baz  :: Int -> (Int, Int)<{\fld v -> fld < v }> @-}
baz x = (x, incr x)


{-@ goo :: Int -> (Int, Int, Int)<{\x v -> x < v}, {\x y v -> true}> @-}
goo x = (x, y, z)
  where 
    y = incr x
    z = incr y