Commit e9114531 authored by's avatar

Type families: T2627b

parent 056dabee
{-# LANGUAGE GADTs, TypeFamilies, EmptyDataDecls #-}
module T2627b where
data R a b
data W a b
data Z
type family Dual a
type instance Dual Z = Z
type instance Dual (R a b) = W a (Dual b)
type instance Dual (W a b) = R a (Dual b)
data Comm a where
Rd :: (a -> Comm b) -> Comm (R a b)
Wr :: a -> Comm b -> Comm (W a b)
Fin :: Int -> Comm Z
conn :: (Dual a ~ b, Dual b ~ a) => Comm a -> Comm b -> (Int, Int)
conn (Rd k) (Wr a r) = conn undefined undefined
Couldn't match expected type `a'
against inferred type `Dual (Dual a)'
In the pattern: Wr a r
In the definition of `conn':
conn (Rd k) (Wr a r) = conn undefined undefined
......@@ -30,6 +30,7 @@ test('T2334', normal, compile_fail, [''])
test('T1900', normal, compile_fail, [''])
test('T2157', normal, compile_fail, [''])
test('T2203a', normal, compile_fail, [''])
test('T2627b', normal, compile_fail, [''])
test('GADTwrong1', normal, compile_fail, [''])
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment