liquidhaskell-0.4.0.0: tests/neg/prune0.hs
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Prune where
import Prelude hiding (read, length)
import Control.Monad.Primitive
import Data.Vector.Generic.Mutable
----------------------------------------------------------------------------
-- LIQUID Specifications ---------------------------------------------------
----------------------------------------------------------------------------
-- | Vector Size Measure
{-@ measure vsize :: forall a. a -> Int @-}
-- | Vector Type Aliases
{-@ type OkIdx X = {v:Nat | v < (vsize X)} @-}
-- | Assumed Types for Vector
{-@ unsafeRead
:: (PrimMonad m, MVector v a)
=> xorp:(v (PrimState m) a)
-> (OkIdx xorp)
-> m a
@-}
yuck xanadu i = if (i > 0) then unsafeRead xanadu i else undefined