glpk-hs-0.8: src/Data/LinearProgram/GLPK/IO.hs
-- | Bindings to the file I/O functions from GLPK, on the CPLEX LP file format.
module Data.LinearProgram.GLPK.IO where
import Data.LinearProgram.Common
import Data.LinearProgram.GLPK.Common
import Data.LinearProgram.GLPK.IO.Internal
{-# SPECIALIZE readLP :: (Ord v, Read v) => FilePath -> IO (LP v Double) #-}
-- | Read a linear program from a file in CPLEX LP format. Warning: this will not necessarily succeed
-- on all files generated by 'writeLP', as variable names may be changed.
readLP :: (Ord v, Read v, Fractional c) => FilePath -> IO (LP v c)
readLP = fmap (mapVals realToFrac . mapVars read) . readLP'
-- | Read a linear program from a file in CPLEX LP format.
readLP' :: FilePath -> IO (LP String Double)
readLP' = runGLPK . readGLPLP
-- | Write a linear program to a file in CPLEX LP format.
writeLP :: (Ord v, Show v, Real c) => FilePath -> LP v c -> IO ()
writeLP file = runGLPK . writeGLPLP file