blob: d38e5903237509a55c26b49791df07105c8ab730 (
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
|
{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
{-# LANGUAGE ExistentialQuantification, MultiParamTypeClasses,
FunctionalDependencies, RankNTypes #-}
module Q where
class Transformer t a | t -> a where
transform :: t -> l a -> (forall l'. l' a -> b) -> b
data EL a = forall l. EL (l a)
unEL :: EL a -> (forall l. l a -> b) -> b
unEL _ _ = error "unEL"
transform' :: (Transformer t a) => t -> EL a -> EL a
transform' = error "transform'"
data MultiToggleS ts a = MultiToggleS ts
data MultiToggle = MultiToggle
expand :: HList ts a => MultiToggleS ts a -> MultiToggle
expand (MultiToggleS ts) =
resolve ts
(\x mt ->
let g = transform' x in
mt
)
MultiToggle
class HList c a | c -> a where
resolve :: c -> (forall t. (Transformer t a) => t -> b) -> b
|