blob: 8ea7f5eb50ac00abe947cc87c369277892730d70 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
{-# LANGUAGE FlexibleInstances, FlexibleContexts, UndecidableInstances,
DataKinds, TypeFamilies, KindSignatures, PolyKinds, FunctionalDependencies #-}
{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
module T10564 where
import Data.Kind (Type)
class HasFieldM (l :: k) r (v :: Maybe Type)
| l r -> v
class HasFieldM1 (b :: Maybe [Type]) (l :: k) r v
| b l r -> v
class HMemberM (e1 :: k) (l :: [k]) (r :: Maybe [k])
| e1 l -> r
data Label a
type family LabelsOf (a :: [Type]) :: [Type]
instance (HMemberM (Label (l::k)) (LabelsOf xs) b,
HasFieldM1 b l (r xs) v)
=> HasFieldM l (r xs) v where
|