packages feed

prolog-graph-0.1: Main.hs

module Main where

import Control.Applicative ((<$>))
import Control.Arrow ((>>>),(<<<))
import Language.Prolog (consult, parseQuery)
import ParseArgs (parseArgs)
import GraphViz (resolveTree, resolveTreeToFile)

main = do
   (queryString, files, output) <- parseArgs
   p <- concat <$> mapM ((abortOnError=<<) . consult) files
   q <- abortOnError $ parseQuery queryString
   resolveTreeToFile output p q
   --case output of
   --   Nothing -> resolveTree p q {- FIXME Never shown since thread terminated. -}
   --   Just file -> resolveTreeToFile file p q >> return ()

abortOnError = either (error . show) return