{-# LANGUAGE TypeOperators #-} import Data.Extensible import AtoZ import Unsafe.Coerce import Control.Applicative -- | @'views' :: Lens' s a -> (a -> r) -> (s -> r)@ views :: ((a -> Const r a) -> (s -> Const r s)) -> (a -> r) -> s -> r views = unsafeCoerce {-# INLINE views #-} pluck' :: (x ∈ xs) => AllOf xs -> x pluck' = views (sectorAt membership) getK0 {-# INLINE pluck' #-} main = print (pluck' extensible26 :: A)