blob: ec04943d6be20c790f941be433f9d541425d6332 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
{-# LANGUAGE TypeFamilies, RankNTypes, FlexibleContexts, ScopedTypeVariables #-}
module T4494 where
type family H s
type family F v
bar :: (forall t. Maybe t -> a) -> H a -> Int
bar = error "urk"
call :: F Bool -> Int
call x = bar (\_ -> x) (undefined :: H (F Bool))
{-
[W] H (F Bool) ~ H alpha
[W] alpha ~ F Bool
-->
F Bool ~ fuv0
H fuv0 ~ fuv1
H alpha ~ fuv2
fuv1 ~ fuv2
alpha ~ fuv0
flatten
~~~~~~~
fuv0 := alpha
fuv1 := fuv2
alpha := F Bool
-}
|