Evgenii Akentev
·
2021-01-09
HandleRec.hs
1{-# LANGUAGE TypeApplications #-}
2{-# LANGUAGE DataKinds #-}
3{-# LANGUAGE RankNTypes #-}
4{-# LANGUAGE ScopedTypeVariables #-}
5{-# LANGUAGE FlexibleContexts #-}
6{-# LANGUAGE GADTs #-}
7{-# LANGUAGE AllowAmbiguousTypes #-}
8
9module HandleRec where
10
11import Data.Vinyl
12
13type HandleRec rs = Rec ElField rs
14
15getMethod
16 :: forall l us v record . (HasField record l us us v v, RecElemFCtx record ElField)
17 => record ElField us -> v
18getMethod = getField . rgetf (Label @l)