liquidhaskell-0.8.2.0: tests/todo/T1126.hs
{-# LANGUAGE FlexibleInstances #-}
module Instances where
class OptEq a where
(==.) :: a -> a -> a
instance OptEq a where
{-@ instance OptEq a where
==. :: x:a -> y:{a| x == y} -> a
@-}
(==.) x _ = x
class OptEq2 a where
cmp :: a -> a -> a
instance OptEq2 a where
{-@ instance OptEq2 a where
cmp :: x:a -> y:{a| x == y} -> a
@-}
cmp x _ = x
-- This is unsoundly UNSAFE
unsound x y = x ==. y
ok x y = x `cmp` y