packages feed

liquidhaskell-0.8.0.2: tests/neg/GADTs.hs

{-# LANGUAGE GADTs          #-}
{-# LANGUAGE KindSignatures #-}

{-@ LIQUID "--prune-unsorted" @-}

module Blank where

data Some :: * -> * where
  SomeBool  :: Bool -> Some Int
  SomeInt   :: Int  -> Some Int

{-@ measure isBool @-}
isBool :: Some Int -> Bool
isBool (SomeBool  _) = True
isBool (SomeInt   _) = False

{-@ type SomeBool = { v: Some Int | isBool v } @-}

{-@ a :: SomeBool @-}
a = SomeBool True

{-@ b :: SomeBool @-}
b = SomeInt 5