packages feed

liquidhaskell-0.8.0.2: tests/todo/Strings.hs

module DBC where

import GHC.CString  -- This import interprets Strings as constants!


import Data.Set
{-
bar :: () -> String 
{- bar :: () -> {x:String | x = unpack "foo" && len x >= 0} @-}
bar _ = "foo"


{- prop :: {v:Bool | Prop v <=> true} @-}
prop :: Bool
prop = foo1 == foo2 
  where foo1 = "foo"
        foo2 = "foo"
-}


data Foo = FFFF | QQQQ deriving Eq

{-@ prop2 :: {v:Bool | Prop v <=> true} @-}
prop2 :: Bool
prop2 = foo1 /= foo2 
  where foo1 = FFFF
        foo2 = QQQQ


-- one character strings seems to crash....
{-@ prop3 :: {v:[String] | listElts v ~~ Set_sng "x"} @-}
prop3 :: [String]
prop3 = ["x"]

{-@ prop1 :: {v:Bool | Prop v <=> true} @-}
prop1 :: Bool
prop1 = foo1 /= foo2 
  where foo1 = "foo"
        foo2 = "bar"