Skip to content

Instantly share code, notes, and snippets.

View adamgundry's full-sized avatar

Adam Gundry adamgundry

View GitHub Profile
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE TypeInType #-}
{-# LANGUAGE ViewPatterns #-}
module RuntimeTypes where
{-# LANGUAGE AllowAmbiguousTypes
, DataKinds
, DeriveGeneric
, DuplicateRecordFields
, FlexibleContexts
, FlexibleInstances
, KindSignatures
, MultiParamTypeClasses
, ScopedTypeVariables
, TypeApplications
{-# LANGUAGE DataKinds, FlexibleInstances, FunctionalDependencies,
KindSignatures, MagicHash, MultiParamTypeClasses #-}
import GHC.TypeLits
import GHC.Exts
class HasField (x :: Symbol) r a | x r -> a where
getField :: Proxy# x -> r -> a
data Record2 (n1 :: Symbol) v1 (n2 :: Symbol) v2 =