module Feldspar
( module Prelude.EDSL
, module Control.Monad
, Data
, Syntax
, Comp
, module Data.Int
, module Data.Word
, Complex (..)
, PrimType'
, PrimType
, Type
, Length
, Index
, Ref, DRef
, Arr, DArr
, IArr, DIArr
, Inhabited
, Syntactic
, Domain
, Internal
, eval
, showAST
, drawAST
, module Feldspar.Frontend
, Bits
, FiniteBits
, Integral
, Ord
, RealFloat
, RealFrac
, Border (..)
, IxRange
, AssertionLabel (..)
) where
import Prelude.EDSL
import Control.Monad hiding (foldM)
import Data.Bits (Bits, FiniteBits)
import Data.Complex (Complex (..))
import Data.Int
import Data.Word
import Language.Syntactic (Syntactic, Domain, Internal)
import qualified Language.Syntactic as Syntactic
import Language.Embedded.Imperative (Border (..), IxRange)
import Data.Inhabited
import Feldspar.Primitive.Representation
import Feldspar.Representation
import Feldspar.Frontend
import Feldspar.Optimize
showAST :: (Syntactic a, Domain a ~ FeldDomain) => a -> String
showAST :: a -> String
showAST = ASTF FeldDomain (Internal a) -> String
forall (sym :: * -> *) a. StringTree sym => ASTF sym a -> String
Syntactic.showAST (ASTF FeldDomain (Internal a) -> String)
-> (a -> ASTF FeldDomain (Internal a)) -> a -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. OptEnv
-> ASTF FeldDomain (Internal a) -> ASTF FeldDomain (Internal a)
forall a. OptEnv -> ASTF FeldDomain a -> ASTF FeldDomain a
optimize OptEnv
onlyUserAssertions (ASTF FeldDomain (Internal a) -> ASTF FeldDomain (Internal a))
-> (a -> ASTF FeldDomain (Internal a))
-> a
-> ASTF FeldDomain (Internal a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> ASTF FeldDomain (Internal a)
forall a. Syntactic a => a -> ASTF (Domain a) (Internal a)
Syntactic.desugar
drawAST :: (Syntactic a, Domain a ~ FeldDomain) => a -> IO ()
drawAST :: a -> IO ()
drawAST = ASTF FeldDomain (Internal a) -> IO ()
forall (sym :: * -> *) a. StringTree sym => ASTF sym a -> IO ()
Syntactic.drawAST (ASTF FeldDomain (Internal a) -> IO ())
-> (a -> ASTF FeldDomain (Internal a)) -> a -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. OptEnv
-> ASTF FeldDomain (Internal a) -> ASTF FeldDomain (Internal a)
forall a. OptEnv -> ASTF FeldDomain a -> ASTF FeldDomain a
optimize OptEnv
onlyUserAssertions (ASTF FeldDomain (Internal a) -> ASTF FeldDomain (Internal a))
-> (a -> ASTF FeldDomain (Internal a))
-> a
-> ASTF FeldDomain (Internal a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> ASTF FeldDomain (Internal a)
forall a. Syntactic a => a -> ASTF (Domain a) (Internal a)
Syntactic.desugar