packages feed

extensible-0.2.9: benchmarks/test.hs

{-# 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)