packages feed

fir-0.1.0.0: src/FIR/Syntax/Optics.hs-boot

{-# OPTIONS_GHC -fplugin GHC.TypeLits.KnownNat.Solver #-}
{-# OPTIONS_GHC -fplugin GHC.TypeLits.Normalise       #-}

{-# LANGUAGE DataKinds       #-}
{-# LANGUAGE PolyKinds       #-}
{-# LANGUAGE RoleAnnotations #-}

module FIR.Syntax.Optics where

-- base
import Data.Kind
  ( Type )

-- fir
import {-# SOURCE #-} Control.Type.Optic
  ( Optic
  , Indices
  )
import Data.Type.List
  ( KnownLength )

----------------------------------------------------------------------

data SOptic (optic :: Optic i s a) :: Type
type role SOptic nominal

class KnownLength (Indices optic) => KnownOptic optic where
  opticSing :: SOptic optic

showSOptic :: SOptic (o :: Optic is s a) -> String