diff options
Diffstat (limited to 'Math/LinProg/Compile.hs')
-rw-r--r-- | Math/LinProg/Compile.hs | 37 |
1 files changed, 0 insertions, 37 deletions
diff --git a/Math/LinProg/Compile.hs b/Math/LinProg/Compile.hs deleted file mode 100644 index c14d45b..0000000 --- a/Math/LinProg/Compile.hs +++ /dev/null @@ -1,37 +0,0 @@ -{-# LANGUAGE TemplateHaskell, FlexibleInstances, ScopedTypeVariables #-} - -module Math.LinProg.Compile ( - compile - ,Equation - ,CompilerS(..) - ,objective - ,equals - ,leqs -) where - -import Math.LinProg.Types -import Control.Lens -import Control.Monad.Free - -type Equation t v = (LinExpr t v, t) -- LHS and RHS - -data CompilerS t v = CompilerS { - _objective :: LinExpr t v - ,_equals :: [Equation t v] - ,_leqs :: [Equation t v] -} deriving (Eq) - -$(makeLenses ''CompilerS) - -compile :: (Num t, Show t, Ord t, Eq v) => LinProg t v () -> CompilerS t v -compile ast = compile' ast initCompilerS where - compile' (Free (Objective a c)) state = compile' c $ state & objective +~ a - compile' (Free (EqConstraint a b c)) state = compile' c $ state & equals %~ (split (a-b):) - compile' (Free (LeqConstraint a b c)) state = compile' c $ state & leqs %~ (split (a-b):) - compile' _ state = state - - initCompilerS = CompilerS - 0 - [] - [] - |