packages feed

z3-4.0.0: examples/Examples.hs

module Main where

import qualified Example.Monad.Queens4
import qualified Example.Monad.Queens4All
import qualified Example.Monad.DataTypes
import qualified Example.Monad.FuncModel
import qualified Example.Monad.ToSMTLib
import qualified Example.Monad.Tuple

import System.Environment

examples =
  [ ("4queens"
    , Example.Monad.Queens4.run
    )
  , ("all4queens"
     , Example.Monad.Queens4All.run
     )
  , ("datatypes"
    , Example.Monad.DataTypes.run
    )
  , ("funcmodel"
    , Example.Monad.FuncModel.run
    )
  , ("smtlib"
    , Example.Monad.ToSMTLib.run
    )
  , ("tuple"
    , Example.Monad.Tuple.run
    )
  ]

runExample :: String -> IO ()
runExample x = case lookup x examples of
                    Just x  -> x
                    Nothing -> error "Example not found"

listExamples :: IO ()
listExamples = mapM_ (putStrLn . fst) examples

main = do
  args <- getArgs
  if null args
    then listExamples
    else case args !! 0 of
              x      -> runExample x