packages feed

gargamelle-effect-0.1.0.0: src/Gargamelle/Effect.hs

{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeOperators #-}

{-|
Module      : Gargamelle.Effect
Description : Unified effect orchestration layer for Gargamelle powered by Penelope and Polytropos
Copyright   : (c) 2026 The Gargamelle Authors
License     : EUPL-1.2
Maintainer  : nadia.yvette.chambers@ik.me

Umbrella module re-exporting Arrow Rope effect orchestration, O(1) variant routers,
profunctor optics, pipeline fusion, and Penelope's polycategorical effect system.
-}
module Gargamelle.Effect
  ( -- * Core Rope Arrow & Handlers
    module Effect.Rope
  , module Effect.Strand
  , module Effect.Handlers
    -- * Polytropos O(1) Variant Router
  , module Gargamelle.Effect.Router
    -- * Profunctor Optics for Open Records & Variants
  , module Gargamelle.Effect.Optics
    -- * Coyoneda Pipeline Fusion
  , module Gargamelle.Effect.Fusion
    -- * Penelope Polycategorical Engine
  , Penelope(..)
  , PolyEffect
  , PolyHEffect
  , PortSig
  , runPenelopePure
  , elaborateAll
  , interpretAll
  , interpretSub
    -- * Penelope Unary Eff Monad
  , Eff(..)
  , send
  , runEff
  , runEffM
    -- * Penelope Binary Arrow Rope
  , PenelopeRope
  ) where

import Effect.Rope
import Effect.Strand
import Effect.Handlers
import Gargamelle.Effect.Router
import Gargamelle.Effect.Optics
import Gargamelle.Effect.Fusion
import Penelope.Core
import Penelope.Effects.Unary
import qualified Penelope.Effects.Binary as P

-- | Type alias for Penelope's binary arrow projection over polycategorical circuits
type PenelopeRope = P.Rope