liquidhaskell-0.8.0.2: tests/pos/Cat.hs
{-@ LIQUID "--no-totality" @-}
{-# LANGUAGE GADTs #-}
import Control.Category
import Prelude hiding ((.), id)
{-
class Category cat where
id :: cat a a
(.) :: cat b c -> cat a b -> cat a c
-}
data Accum a b where
Accum :: s -> Accum a b
-- | We can pass the outputs of one 'Accum' as the inputs of the next.
instance Category Accum where
Accum i1 . Accum i2 = Accum (i1, i2)