module ADP.Fusion.Core
( module ADP.Fusion.Core
, module ADP.Fusion.Core.Apply
, module ADP.Fusion.Core.Classes
, module ADP.Fusion.Core.Multi
, module ADP.Fusion.Core.TH
, module ADP.Fusion.Core.TyLvlIx
, module ADP.Fusion.SynVar.Array.Type
, module ADP.Fusion.SynVar.Axiom
, module ADP.Fusion.SynVar.Backtrack
, module ADP.Fusion.SynVar.Fill
, module ADP.Fusion.SynVar.Indices.Classes
, module ADP.Fusion.SynVar.Recursive.Type
, module ADP.Fusion.SynVar.Split.Type
, module ADP.Fusion.SynVar.TableWrap
, module ADP.Fusion.Term.Chr.Type
, module ADP.Fusion.Term.Deletion.Type
, module ADP.Fusion.Term.Edge.Type
, module ADP.Fusion.Term.Epsilon.Type
, module ADP.Fusion.Term.PeekIndex.Type
, module ADP.Fusion.Term.Strng.Type
, module Data.Vector.Fusion.Stream.Monadic
, module Data.Vector.Fusion.Util
) where
import Data.Vector.Fusion.Stream.Monadic (Stream (..))
import Data.Strict.Tuple
import GHC.Exts (inline)
import qualified Data.Vector.Fusion.Stream.Monadic as S
import Data.Vector.Fusion.Util (Id(..))
import Data.PrimitiveArray
import ADP.Fusion.Core.Apply
import ADP.Fusion.Core.Classes hiding (iIx)
import ADP.Fusion.Core.Multi hiding (iIx)
import ADP.Fusion.Core.TH
import ADP.Fusion.Core.TyLvlIx
import ADP.Fusion.SynVar.Array.Type
import ADP.Fusion.SynVar.Axiom
import ADP.Fusion.SynVar.Backtrack
import ADP.Fusion.SynVar.Fill
import ADP.Fusion.SynVar.Indices.Classes
import ADP.Fusion.SynVar.Recursive.Type
import ADP.Fusion.SynVar.Split.Type
import ADP.Fusion.SynVar.TableWrap
import ADP.Fusion.Term.Chr.Type
import ADP.Fusion.Term.Deletion.Type
import ADP.Fusion.Term.Edge.Type
import ADP.Fusion.Term.Epsilon.Type
import ADP.Fusion.Term.PeekIndex.Type
import ADP.Fusion.Term.Strng.Type
infixl 8 <<<
(<<<) f xs = \lu ij -> S.map (apply (inline f) . getArg) . mkStream (build xs) (initialContext ij) lu $ ij
infixl 8 <<#
(<<#) f xs = \lu ij -> S.mapM (apply (inline f) . getArg) . mkStream (build xs) (initialContext ij) lu $ ij
infixl 7 |||
(|||) xs ys = \lu ij -> xs lu ij S.++ ys lu ij
infixl 5 ...
(...) s h = \lu ij -> (inline h) $ s lu ij
infixl 9 ~~
(~~) = (:!:)
infixl 9 %
(%) = (:!:)