packages feed

imp-ppl-0.1.0.0: src/Imp.hs

-- | Single-import entry point for Imp.
--
--   @
--   {-\# LANGUAGE DataKinds, QualifiedDo, RebindableSyntax, TypeApplications \#-}
--   import Imp
--   @
--
--   The single import provides both:
--
--     * Unqualified access to the Prelude, the DSL combinators, and the inference API.
--     * The @Imp.@ qualifier used by @QualifiedDo@ desugaring (@Imp.do@, @Imp.return@, @Imp.>>=@).
--
--   Driver code that only runs inference should import "Imp.Inference" directly.
module Imp
  ( module Imp.DSL
  , module Imp.DSL.Combinators
  , module Imp.Inference
  , module Imp.Prelude
  ) where

import Imp.Prelude
import Imp.DSL
  ( Imp
  , flip
  , knight
  , interval
  , observe
  , tag
  , IfThenElse(..)
  , IfR
  , Merge
  , Union
  , TagAll
  , return
  , (>>=)
  , (>>)
  , fmap
  , (<$>)
  )
import Imp.DSL.Combinators
  ( GenNames
  , ConcatMapTag
  , MapName(..)
  , intervalMap
  , knightMap
  , intervalN
  , knightN
  , TagFoldM(..)
  , foldMN
  , tagFold
  , tagMap
  , tagScan
  , tagN
  , foldN
  , scanN
  )
import Imp.Inference