{-# OPTIONS_GHC -Wno-orphans #-} {- | This module contains an instance for labels, that causes labels to be interpreted as strings, with @_@ replaced with @-@. It is useful for shells, since it's easier to type arguments with labels. NB: @_@ is replaced with @-@. -} module Procex.Shell.Labels () where import Data.Functor import Data.Proxy (Proxy (..)) import GHC.OverloadedLabels (IsLabel (..)) import GHC.TypeLits (KnownSymbol, symbolVal) instance (a ~ String, KnownSymbol l) => IsLabel l a where fromLabel = symbolVal (Proxy :: Proxy l) <&> \case '_' -> '-' x -> x