summaryrefslogtreecommitdiff
path: root/testsuite/tests/polykinds/T9574.hs
blob: 3ad0bec9d2d2ba42fbdf59d6a573b9871cd64c62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{-# LANGUAGE PolyKinds, DataKinds, TypeFamilies, ScopedTypeVariables, GADTs, RankNTypes #-}
module T9574 where

import Data.Kind (Type)

data KProxy (t :: Type) = KProxy
data Proxy p

class Funct f where
    type Codomain f :: Type

instance Funct ('KProxy :: KProxy o) where
    type Codomain 'KProxy = NatTr (Proxy :: o -> Type)

data NatTr (c :: o -> Type) where
    M :: (forall (a :: o). Proxy a) -> NatTr (c :: o -> Type)

p :: forall o (c :: o -> Type). NatTr c
p = M t where
    M t = undefined :: Codomain ('KProxy :: KProxy o)