packages feed

casa-reoc-0.1.0.0: src/ReOC/Name/Path.hs

{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeOperators #-}
{-# OPTIONS_GHC -Wall #-}

-- | The name @path@, which targets @[Step]@. It names a field or constructor of @Unfilled@, @Invalid@, @TooMany@.
module ReOC.Name.Path (
  PathLike (..),
) where

import Control.Lens (Optic)
import ReOC.Data.Step (Step)

class PathLike p f x x' where
  path ::
    Optic p f x x' [Step] [Step]

-- | Identity
instance (x' ~ [Step]) => PathLike p f [Step] x' where
  path = id