module Database.Ferry.Compiler.Pipeline (backEndPipeline, backEndPipeline') where
import Database.Ferry.Compiler.Types
import Database.Ferry.Core.Data.Core (CoreExpr)
import qualified Database.Ferry.TypedCore.Data.TypedCore as T (CoreExpr)
import Database.Ferry.Compiler.Stages
backEndPipeline :: CoreExpr -> PhaseResult ()
backEndPipeline c = typeInferPhase c >>=
rewritePhase >>=
boxingPhase >>=
algebraPhase >>=
xmlPhase >>
return ()
backEndPipeline' :: T.CoreExpr -> PhaseResult ()
backEndPipeline' c = rewritePhase c >>=
boxingPhase >>=
algebraPhase >>=
xmlPhase >>
return ()