packages feed

parsley-garnish-1.0.0.0: src/Parsley/Internal/Bridge.hs

{-|
Module      : Parsley.Internal.Bridge
Description : Stable and package independent names for portions of the @parsley-core@ API
License     : BSD-3-CLAUSE
Maintainer  : Jamie Willis
Stability   : stable

The plugins in this package depend on internals defined in @parsley-core@. This
is fine, but we'd prefer our users to not have to explicitly depend on @parsley-core@
to use the plugins. This module is used to provide stable names for the plugins
to latch onto. It should not be imported by users of the plugins!
-}
module Parsley.Internal.Bridge (_code, _val, makeQ, mkVal, mkCode) where

import qualified Parsley.Internal (Quapplicative(..), Code)

{-|
Re-export of `Parsley.Internal._code`
-}
_code :: Parsley.Internal.Quapplicative q => q a -> Parsley.Internal.Code a
_code = Parsley.Internal._code

{-|
Re-export of `Parsley.Internal._val`
-}
_val :: Parsley.Internal.Quapplicative q => q a -> a
_val  = Parsley.Internal._val

{-|
Re-export of `Parsley.Internal.makeQ`
-}
makeQ :: Parsley.Internal.Quapplicative q => a -> Parsley.Internal.Code a -> q a
makeQ = Parsley.Internal.makeQ

{-|
Produces `Parsley.Internal.Quapplicative` values without code (unsafe!)
-}
mkVal :: Parsley.Internal.Quapplicative q => a -> q a
mkVal x = Parsley.Internal.makeQ x undefined

{-|
Produces `Parsley.Internal.Quapplicative` values without values (unsafe!)
-}
mkCode :: Parsley.Internal.Quapplicative q => Parsley.Internal.Code a -> q a
mkCode qx = Parsley.Internal.makeQ undefined qx