packages feed

lambdabot 4.1 → 4.2.1

raw patch · 363 files changed

+3842/−52927 lines, 363 filesdep +brainfuckdep +haskell-src-extsdep +lambdabot-utilsdep −QuickCheckdep −arrowsdep −pluginsdep ~binarybinary-added

Dependencies added: brainfuck, haskell-src-exts, lambdabot-utils, show, template-haskell, unlambda, utf8-string

Dependencies removed: QuickCheck, arrows, plugins, process, regex-posix, zlib

Dependency ranges changed: binary

Files

− AUTHORS
@@ -1,110 +0,0 @@-Andrew J. Bromage <ajb@spamcop.net> aka Pseudonym on #haskell-    * the 'bot itself-    * @free--Shae M. Erisson <shae@ScannedInAvian.com> aka shapr on #haskell-    * FactModule-    * FortuneModule-    * StateModule-    * SystemModule--Taylor Campbell <riastradh@users.sourceforge.net> aka Riastradh on #haskell-    * KarmaModule--Derek Elkins <ddarius@users.sourceforge.net> aka Darius on #haskell-    * EvalModule--Sven M. Hallberg <pesco@haquebright.de> aka pesco on #haskell-    * TopicModule--Tom Moertel <tom@moertel.com> aka tmoertel on #haskell-    * DictModule--Mats-Ola Persson <polli@users.sourceforge.net> aka polli on #haskell-    * rewrite of the plugin system--Ganesh Sittampalam <ganesh@earth.li> aka Heffalump on #haskell-    * Various restructuring to improve bot robustness-    * Dynamic module loading--Don Stewart <dons@cse.unsw.edu.au> aka dons on #haskell-    * New build system, 6.4 port-    * dynamic module loading with hs-plugins-    * Simplfied module interface-    * @babel, @plugs, @version, @code, @spell, @djinn, @unlambda, @hylo, @freshname, @ft, @src-    * Offline mode-    * General hacking-    * Cabalised build system-    * GHCi build system--Jesper Louis Andersen <jlouis@mongers.org> aka jlouis on #haskell-    * Code/Documentation cleanups--Thomas Jäger <TheHunter2000@web.de> aka TheHunter on #haskell-    * PlModule-    * General hacking/refactoring.--Stefan Wehr <mail@stefanwehr.de> aka stefanw on #haskell-    * DarcsPatchWatch module--Simon Winwood-    * Babel module-    * Log module--Mark Wotton (blackdog)-    * Vixen--Paolo Martini (xerox)-    * @hoogle, @botsnack, work on @karma--Vaclav Haisman-    * Tweaks to textual interface--Joel Koerwer-    * google calculator--Josef Svenningsson-    * @elite--Ketil Malde-    * Improved @seen--Echo Nolan-    * grammar--Samuel Bronson-    * Improved search code. @google--Peter Davis-    * @moos ++--andres@cs.uu.nl-    * line breaks, topics, --Kenneth Hoste-    * @vote--softpro@gmx.net-    * @pretty--tatd2@kent.ac.uk-    * actions / slapping--rizzix <rizzixs@fastmail.fm>-    * Minor fixed and workarounds-    * @gsite--David House <dmhouse@gmail.com>-    * Instances, Tell.--Pete Kazmier <pete-lambdabot@kazmier.com>-    * Url page title chaser-    * Contextual messages--Stefan O'Rear <stefanor@cox.net> aka sorear on #haskell-    * @nazi-on, @nazi-off, @activity-    * Non-flat nick namespace-    * Separation of servers out of base--Spencer Janssen <sjanssen@cse.unl.edu> aka sjanssen on #haskell-    * @undo, @redo
− Boot.hs
@@ -1,99 +0,0 @@------ Copyright (c) 2004-5 Don Stewart - http://www.cse.unsw.edu.au/~dons--- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)---------- | Boot loader for lambdabot.--- This is a small stub that loads the dynamic code, then jumps to it.--- It solves the problem of unnecessary code linking.  As such, we only--- want to do plugin-related stuff here.------ We should have no static dependencies on any other part of lambdabot.------ This is the only module that depends on -package plugins.------ Compile with:---      ghc-6.4 -fglasgow-exts -package plugins -main-is Boot.main Boot.hs-----module Boot ( main ) where--import qualified Shared as S--import System.Plugins.Load--import Data.Map (Map)-import qualified Data.Map    as M hiding (Map)-import Data.IORef-import System.IO.Unsafe       ( unsafePerformIO )-import System.Exit            ( exitFailure )--lambdabotMain :: [Char]-lambdabotMain = lambdaPath ++ "DMain.o" -- entry point into lambdabot lib---- path to plugins-lambdaPath :: String-lambdaPath = "./dist/build/"--mainSym :: Symbol-mainSym  = "dynmain"        -- main entry point---- | get a handle to Main.dynamic_main, and jump to it. 6.2.2 will need posix.------ todo, link statically and dynamically, a module with a Module type we--- can convert hs-plugins type to.----main :: IO ()-main = do-    status  <- load lambdabotMain [lambdaPath] [] mainSym-    dynmain <- case status of-        LoadSuccess _ v -> return (v :: MainType) -- should stick module in ioref-        LoadFailure e   -> do putStrLn "Unable to load Main, exiting"-                              mapM_ putStrLn e-                              exitFailure--    dynmain hsplugins----------------------------------------------------------------------------- Plugin.Loader wrappers passed over to the--type MainType = S.DynLoad -> IO ()---- | should insert m into a local IORef, for unload to work-dLoad :: String -> String -> IO (S.Module,a)-dLoad p s = do-    mm <- load_ (lambdaPath ++ p) [lambdaPath] s-    case mm of-        LoadFailure e   -> error ("dLoad: "++show e)  -- throw this back to DynamicModule-        LoadSuccess m v -> do-            atomicModifyIORef modules $ \fm -> (M.insert (path m) m fm, ())-            return (S.Module (path m),v)---- | Unload a module, given the path to that module-dUnload :: S.Module -> IO ()-dUnload (S.Module p) = do-    mm <- atomicModifyIORef modules $ \fm ->-        case M.lookup p fm of-            Nothing -> (fm,Nothing)    -- fail silently-            Just m  -> (M.delete p fm, Just m)-    case mm of-        Nothing -> return ()-        Just m  -> unload m------- | Dynamic loader package we pass over.----hsplugins :: S.DynLoad-hsplugins = S.DynLoad {-        S.dynload    = dLoad,-        S.unload     = dUnload-    }------- map module paths to hs-plugins' Module type. Saves us linking--- hs-plugins statically and dynamically (code bloat)----modules :: IORef (Map FilePath Module)-modules = unsafePerformIO $ newIORef (M.empty)-{-# NOINLINE modules #-}
− COMMANDS
@@ -1,47 +0,0 @@-babel provides: babel-base has no visible commands-bf provides: bf-check provides: check-compose provides: . compose-dice provides: dice-dict provides: dict dict-help all-dicts devils easton elements foldoc gazetteer hitchcock jargon lojban vera web1913 wn world02-djinn provides: djinn djinn-add djinn-del djinn-env djinn-names djinn-clr djinn-ver-dummy provides: eval choose id read show dummy bug get-shapr faq paste learn map shootout botsnack wiki oldwiki docs source fptools-elite provides: elite-eval provides: run let undefine-fact provides: fact fact-set fact-delete fact-cons fact-snoc fact-update-figlet provides: figlet figlet'-free provides: free-fresh provides: freshname-ft provides: ft-haddock provides: index-help provides: help-hoogle provides: hoogle hoogle+-instances provides: instances instances-importing-karma provides: karma karma+ karma- karma-all-localtime provides: time localtime localtime-reply-log has no visible commands-more provides: more-pl provides: pointless pl-resume pl-pointful provides: pointful pointy repoint unpointless unpl unpf-poll provides: poll-list poll-show poll-add choice-add vote poll-result poll-close poll-remove-pretty provides: pretty-quote provides: quote remember ghc fortune yow arr yarr keal b52s brain palomer girl19 v yhjulwwiefzojcbxybbruweejw protontorpedo-search provides: gwiki google wikipedia gsite-seen provides: users seen-slap provides: slap-small provides: scheck-source provides: src-spell provides: spell spell-all-state has no visible commands-system provides: echo list listchans listmodules uptime-tell provides: tell ask messages messages? clear-messages-todo provides: todo todo-add-topic provides: topic-tell topic-cons topic-snoc topic-tail topic-init topic-null-type provides: type kind-undo provides: undo redo-unlambda provides: unlambda-url provides: url-title tiny-url-version provides: version-vixen provides: vixen-where provides: where url what where+
− COMMENTARY
@@ -1,94 +0,0 @@-                            COMMENTARY ON LAMBDABOT-                            --------------------------Authors: Don Stewart----------------------------------------------------------------------------Current module tree.--(lambdabot : static) -    +- Boot -+- hs-plugins-            -+- Shared-            -+- Map--(plugins : dynamic)-        +-- Main-            IRC-            Shared-            Config-            DeepSeq-            ErrorUtils-            ExceptionError-            MonadException-            Map-            Util-            Modules -+ SystemModule-                       BaseModule-                       DynamicModule ...<dynload>... [*Module.o plugins]-                                                        +Set-                                                        +MiniHTTP ...--The static binary only contains hs-plugins.----------------------------------------------------------------------------Plugins live in Plugins/ and inhabit the Plugins.* namespace.----------------------------------------------------------------------------INOVKING COMMANDS--Each plugin lists the commands it will provide in its Module instance.-Commands to lambdabot are prefixed with certain magic characters,-described in Plugins/Base.hs. --ONLINE/OFFLINE MODES--Lambdabot can run in an offline mode. This is in fact the default mode-now, and invoking lambdabot with --online is the way to connect to an-irc server. Otherwise you just get a prompt, and a chance to interact-with the plugins.--DEVELOPMENT--When testing out a new plugin,-    0) test out the plugin in ghci in isolation. don't both linking the-    rest of the bot.-then try:-    b) don't go online, just use offline mode--GHCI:--    You can quickly develop lambdabot inside ghci.-    See the build details in README.-    It works best if you've already compiled the objects once, then you-    can quickly reload (interpreted) just the modules you're developing.--ADDING A NEW PLUGIN--* Just create the module in Plugins/*-* add a PLUGIN Foo tag-* implements the Module class (see Hello.hs for the bare minimum).-* import Plugin to get most common functions-* Add your plugin's canonical name to Modules.hs--PLUGIN STATE--Plugins may have local state. If a plugin provides an Serialiser (via-the moduleSerialize method), this state will be automatically read and-written to disk on module load/unload, respectively.--A default state may be provided via the `moduleDefState` method.--LIBRARIES--Libraries of common functoins are in Lib, they include code for:-    * munging strings-    * getting random elements-    * serialising data-    * doing regexes on packed strings-read the Lib/README for more info--Most of these libs are available when you import Plugin, some require-explicit imports.
Config.hs view
@@ -15,24 +15,24 @@                                               --   a pair of host and port.          -- | The 'path' component is a string to the location where the fortune files-        --   are located. On some systems, this is /usr/share/games/fortunes, on others-        --   this is /usr/share/games/fortune. Alter this to suit your configuration+        --   are located. On some systems, this is "\/usr\/share\/games\/fortunes", on others+        --   this is "\/usr\/share\/games\/fortune". Alter this to suit your configuration         fortunePath :: FilePath, -        -- | Path to the top of $fptools, used by @code+        -- | Path to the top of "\$fptools", used by "\@code"         fptoolsPath :: FilePath, -        -- which ghci to use (in @type)+        -- | which ghci to use (in "\@type")         ghci        :: FilePath,         outputDir   :: FilePath, -        -- what prefixes to use for commands+        -- | what prefixes to use for commands         commandPrefixes :: [String], -        -- what prefixes to use for Haskell evalution+        -- | what prefixes to use for Haskell evalution         evalPrefixes :: [String], -        -- particular commands we'd like to disable+        -- | Particular commands we'd like to disable         -- (to disable whole plugins, remove them from Modules.hs)         disabledCommands :: [String] }@@ -46,7 +46,7 @@         textwidth       = 350,         proxy           = Nothing, -- Just ("www-proxy",3128), -        fortunePath     = "/home/dons/fortune/",+        fortunePath     = "/usr/share/games/fortunes/",         fptoolsPath     = "/home/dons/fptools",          ghci            = "ghci",
− DMain.hs
@@ -1,10 +0,0 @@-module DMain where--import LMain-import DynModules-import Shared----------------------------------------------------------------------------dynmain :: DynLoad  -> IO ()-dynmain fn = main' (Just fn) modulesInfo
− DynModules.hs
@@ -1,2 +0,0 @@--MODULES Base System Dynamic : Dict Dummy Karma Quote Seen State Topic Type Eval Babel Version More Pl Help Dice Search Vixen Fact Todo Spell Haddock Hoogle Where Elite Localtime Poll Djinn Pretty Compose Lambda Unlambda Log Slap DrHylo Instances Fresh Tell Url Free Undo BF FT Check Small Figlet
+ File.hs view
@@ -0,0 +1,81 @@+module File where++import Control.Monad+import System.Directory+import Paths_lambdabot (getDataFileName)++-- | Constants.+lambdabot, local, state :: String+lambdabot = "/.lambdabot/"+state = lambdabot ++ local+local = "State/"++-- | For a given file, look locally under State/. That is, suppose one is+-- running out of a Lambdabot darcs repository in /home/cale/lambdabot. Then+--+-- > lookLocally "fact" ~> "/home/cale/lambdabot/State/fact"+lookLocally :: FilePath -> IO (Maybe String)+lookLocally f = do b <- doesFileExist (local ++ f)+                   if b then return $ Just (local ++ f) else return Nothing++-- | For a given file, look at the home directory. By default, we stash files in+-- ~/.lambdabot. So, running Lambdabot normally would let us do:+--+-- > lookHome "fact" ~> "/home/cale/lambdabot/State/fact"+--+-- (Note that for convenience we preserve the "State/foo" address pattern.)+lookHome :: FilePath -> IO (Maybe String)+lookHome f = do home <- getHomeDirectory+                let full = home ++ state ++ f+                b <- doesFileExist (full)+                if b then return $ Just full else return Nothing++-- | Do ~/.lambdabot & ~/.lambdabot/State exist?+isHome :: IO Bool+isHome = do home <- getHomeDirectory+            top <- doesDirectoryExist (home ++ lambdabot)+            stat <- doesDirectoryExist (home ++ state)+            return (top && stat)++-- | Create ~/.lambdabot and ~/.lambdabot/State+mkdirL :: IO ()+mkdirL = do home <- getHomeDirectory+            createDirectory (home ++ lambdabot)+            createDirectory (home ++ state)++-- | Ask Cabal for the read-only copy of a file, and copy it into ~/.lambdabot/State.+cpDataToHome :: FilePath -> IO ()+cpDataToHome f = do rofile <- getDataFileName ("State/" ++ f)+                    home <- getHomeDirectory+                    -- cp /.../lambdabot-4.foo/State/foo ~/.lambdabot/State/foo+                    copyFile rofile (home ++ state ++ f)++-- | Complicated. If a file exists locally, we return that. If a file exists in+-- ~/lambdabot/State, we return that. If neither the file nor ~/lambdabot/State+-- exist, we create the directories and then copy the file into it.+-- Note that the return type is simple so we can just do a binding and stuff it+-- into the conventional functions easily; unfortunately, this removes+-- error-checking, as an error is now just \"\".+findFile :: FilePath -> IO String++findFile f = do first <- lookLocally f+                case first of+                  -- With any luck we can exit quickly+                  Just a -> return a+                  Nothing -> do second <- lookHome f+                                case second of+                                  -- OK, we didn't get lucky with local, so+                                  -- hopefully it's in ~/.lambdabot+                                  Just a -> return a+                                  -- Uh oh. We didn't find it locally, nor did we+                                  -- find it in ~/.lambdabot/State. So now we+                                  -- need to make ~/.lambdabot/State and copy it in.+                                  Nothing -> do exists <- isHome+                                                when (not exists) mkdirL+                                                cpDataToHome f+                                                -- With the file copied/created,+                                                -- a second attempt should work.+                                                g <- lookHome f+                                                case g of+                                                  Just a -> return a+                                                  Nothing -> return ""
IRCBase.hs view
@@ -12,8 +12,8 @@                ) where  import Message-import Lib.Util (split, breakOnGlue, clean)-import qualified Lib.Util as Util (concatWith) +import Lambdabot.Util (split, breakOnGlue, clean)+import qualified Lambdabot.Util as Util (concatWith)  import Data.Char (chr,isSpace) @@ -116,7 +116,7 @@ -- the @localtime-reply plugin, which then passes the output to -- the appropriate client. timeReply :: IrcMessage -> IrcMessage-timeReply msg    = +timeReply msg    =    IrcMessage { msgPrefix  = msgPrefix (msg)               , msgServer  = msgServer (msg)               , msgLBName  = msgLBName (msg)
LBState.hs view
@@ -1,6 +1,5 @@------ Support for the LB (LambdaBot) monad---+{-# LANGUAGE ScopedTypeVariables, PatternSignatures #-}+-- | Support for the LB (LambdaBot) monad module LBState (         -- ** Functions to access the module's state         readMS, withMS, modifyMS, writeMS,@@ -15,13 +14,13 @@   ) where  import Lambdabot-import Lib.Util            (withMWriter, timeout)+import Lambdabot.Util            (withMWriter, timeout) -import Control.Concurrent+import Control.Concurrent (forkIO, readMVar, modifyMVar_, newMVar, MVar, ThreadId) import Control.Monad.Reader import Control.Monad.Trans (liftIO) -import Message(Nick)+import Message (Nick)  -- withMWriter :: MVar a -> (a -> (a -> IO ()) -> IO b) -> IO b -- | Update the module's private state.@@ -57,12 +56,12 @@  -- | Write the module's private state. Try to use withMS instead. writeMS :: s -> ModuleT s LB ()-writeMS (x :: s) = modifyMS . const $ x     -- need to help out 6.5 +writeMS (x :: s) = modifyMS . const $ x     -- need to help out 6.5 --- | This datatype allows modules to conviently maintain both global +-- | This datatype allows modules to conviently maintain both global --   (i.e. for all clients they're interacting with) and private state. --   It is implemented on top of readMS\/withMS.--- +-- -- This simple implementation is linear in the number of private states used. data GlobalPrivate g p = GP {   global :: !g,@@ -98,7 +97,7 @@ -- which take an MVar and an action producing a @Nothing@ MVar, respectively. accessPS :: (MVar (Maybe p) -> LB a) -> (LB (MVar (Maybe p)) -> LB a) -> Nick   -> ModuleT (GlobalPrivate g p) LB a-accessPS success failure who = withMS $ \state writer -> +accessPS success failure who = withMS $ \state writer ->   case lookup who $ private state of     Just mvar -> do       let newPrivate = (who,mvar):
LMain.hs view
@@ -5,7 +5,7 @@ import Message import IRCBase -import Lib.Util( listToMaybeAll )+import Lambdabot.Util( listToMaybeAll )  import qualified Data.Map as M 
Lambdabot.hs view
@@ -1,11 +1,11 @@-{-# OPTIONS -cpp #-}---+{-# LANGUAGE CPP, ExistentialQuantification, FlexibleContexts,+  FunctionalDependencies, GeneralizedNewtypeDeriving, MultiParamTypeClasses,+  PatternGuards, RankNTypes, TypeOperators #-} -- | The guts of lambdabot. -- -- The LB/Lambdabot monad -- Generic server connection,disconnection -- The module typeclass, type and operations on modules--- module Lambdabot (         MODULE(..), Module(..),         ModuleT, ModuleLB, ModuleUnit, Mode(..),@@ -33,13 +33,15 @@         checkPrivs, checkIgnore, mkCN, handleIrc, catchIrc, runIrc,   ) where +import File (findFile)+ import qualified Message as Msg import qualified Shared  as S import qualified IRCBase as IRC (IrcMessage, quit, privmsg) -import Lib.Signals-import Lib.Util-import Lib.Serial+import Lambdabot.Signals+import Lambdabot.Util+import Lambdabot.Serial  import Prelude hiding           (mod, catch) @@ -47,6 +49,7 @@  import System.Exit import System.IO+import System.IO.Unsafe  #ifndef mingw32_HOST_OS import System.Posix.Signals@@ -64,16 +67,15 @@ import qualified Data.ByteString.Char8 as P import Data.ByteString (ByteString) -import Control.Concurrent+import Control.Concurrent (myThreadId, newEmptyMVar, newMVar, readMVar, putMVar,+                           takeMVar, threadDelay, MVar, ThreadId) import Control.Exception import Control.Monad.Error (MonadError (..)) import Control.Monad.Reader import Control.Monad.State import Control.Monad.Trans      ( liftIO ) -#if __GLASGOW_HASKELL__ >= 605 import GHC.Err-#endif  #ifdef mingw32_HOST_OS -- compatability shim@@ -132,7 +134,7 @@ -- The virtual chat system sits between the chat drivers and the rest of -- Lambdabot.  It provides a mapping between the String server "tags" and -- functions which are able to handle sending messages.--- +-- -- When a message is recieved, the chat module is expected to call -- `LMain.received'.  This is not ideal. @@ -235,7 +237,7 @@     ref  <- newIORef rws     lb `runReaderT` (rs,ref) --- May wish to add more things to the things caught, or restructure things +-- May wish to add more things to the things caught, or restructure things -- a bit. Can't just catch everything - in particular EOFs from the socket -- loops get thrown to this thread and we musn't just ignore them. handleIrc :: MonadError IRCError m => (IRCError -> m ()) -> m () -> m ()@@ -251,14 +253,12 @@ -- data Mode = Online | Offline deriving Eq --- -- | The Lambdabot entry point. -- Initialise plugins, connect, and run the bot in the LB monad -- -- Also, handle any fatal exceptions (such as non-recoverable signals), -- (i.e. print a message and exit). Non-fatal exceptions should be dealt -- with in the mainLoop or further down.--- runIrc :: [String] -> LB a -> S.DynLoad -> [String] -> IO () runIrc evcmds initialise ld plugins = withSocketsDo $ do     rost <- initRoState@@ -313,9 +313,7 @@         ircOnStartupCmds   = evcmds     } --- -- Actually, this isn't a loop anymore.  FIXME: better name.--- mainLoop :: LB () mainLoop = do @@ -350,7 +348,7 @@ ------------------------------------------------------------------------  -- | The Module type class.--- Minimal complete definition: @moduleHelp@, @moduleCmds@, and +-- Minimal complete definition: @moduleHelp@, @moduleCmds@, and -- either @process@ or @process_@ class Module m s | m -> s where     -- | If the module wants its state to be saved, this function should@@ -362,7 +360,7 @@     -- | If the module maintains state, this method specifies the default state     --   (for example in case the state can't be read from a state).     ---    --   The default implementation returns an error and assumes the state is +    --   The default implementation returns an error and assumes the state is     --   never accessed.     moduleDefState  :: m -> LB s @@ -434,17 +432,16 @@     moduleInit _       = return ()     moduleSticky _     = False     moduleSerialize _  = Nothing-    moduleDefState  _  = return $ error "state not initalized"+    moduleDefState  _  = return $ error "state not initialized"  -- | An existential type holding a module, used to represent modules on -- the value level, for manipluation at runtime by the dynamic linker.--- data MODULE = forall m s. (Module m s) => MODULE m  data ModuleRef = forall m s. (Module m s) => ModuleRef m (MVar s) String  ----- | This transformer encodes the additional information a module might +-- | This transformer encodes the additional information a module might --   need to access its name or its state. -- newtype ModuleT s m a = ModuleT { moduleT :: ReaderT (MVar s, String) m a }@@ -501,13 +498,13 @@         catch (evaluate $ maybe Nothing (Just $!) (deserialize ser =<< state)) -- Monad Maybe)               (\e -> do hPutStrLn stderr $ "Error parsing state file for: "                                         ++ name ++ ": " ++ show e-                        hPutStrLn stderr $ "Try removing: "++show (toFilename name)-                        return Nothing) -- proceed irregardless+                        hPutStrLn stderr $ "Try removing: "++ show (toFilename name)+                        return Nothing) -- proceed regardless     | otherwise = return Nothing  -- | helper toFilename :: String -> String-toFilename = ("State/"++)+toFilename = unsafePerformIO . findFile  ------------------------------------------------------------------------ --@@ -578,7 +575,7 @@ ------------------------------------------------------------------------  ircSignalConnect :: String -> Callback -> ModuleT s LB ()-ircSignalConnect str f = do +ircSignalConnect str f = do     s <- get     let cbs = ircCallbacks s     name <- getName
− Lib/AltTime.hs
@@ -1,97 +0,0 @@------ | Time compatibility layer----module Lib.AltTime (-    ClockTime,-    getClockTime, diffClockTimes, addToClockTime, timeDiffPretty,-    module System.Time-  ) where--import Control.Arrow (first)--import Data.Binary--import Data.List-import System.Time (TimeDiff(..), noTimeDiff)-import qualified System.Time as T---- | Wrapping ClockTime (which doesn't provide a Read instance!) seems--- easier than talking care of the serialization of UserStatus--- ourselves.----newtype ClockTime = ClockTime (T.ClockTime)--instance Eq ClockTime where-    ClockTime (T.TOD x1 y1) == ClockTime (T.TOD x2 y2) = -        x1 == x2 && y1 == y2--instance Show ClockTime where-  showsPrec p (ClockTime (T.TOD x y)) = showsPrec p (x,y)--instance Read ClockTime where-  readsPrec p = map (first $ ClockTime . uncurry T.TOD) . readsPrec p---- | Retrieve the current clocktime-getClockTime :: IO ClockTime-getClockTime = ClockTime `fmap` T.getClockTime---- | Difference of two clock times-diffClockTimes :: ClockTime -> ClockTime -> TimeDiff-diffClockTimes (ClockTime ct1) (ClockTime ct2) =--- This is an ugly hack (we don't care about picoseconds...) to avoid the---   "Time.toClockTime: picoseconds out of range"--- error. I think time arithmetic is broken in GHC.-  (T.diffClockTimes ct1 ct2) { tdPicosec = 0 }---- | @'addToClockTime' d t@ adds a time difference @d@ and a -- clock--- time @t@ to yield a new clock time.-addToClockTime :: TimeDiff -> ClockTime -> ClockTime-addToClockTime td (ClockTime ct) = ClockTime $ T.addToClockTime td ct---- | Pretty-print a TimeDiff. Both positive and negative Timediffs produce---   the same output.------ 14d 17h 8m 53s----timeDiffPretty :: TimeDiff -> String-timeDiffPretty td = concat . intersperse " " $ filter (not . null) [-    prettyP years             "y",-    prettyP (months `mod` 12) "m",-    prettyP (days   `mod` 28) "d",-    prettyP (hours  `mod` 24) "h",-    prettyP (mins   `mod` 60) "m",-    prettyP (secs   `mod` 60) "s"]-  where-    prettyP 0 _ = []-    prettyP i s = show i ++ s--    secs = abs $ tdSec td -- This is a hack, but there wasn't an sane output-                          -- for negative TimeDiffs anyway.-    mins   = secs   `div` 60-    hours  = mins   `div` 60-    days   = hours  `div` 24-    months = days   `div` 28-    years  = months `div` 12----------------------------------------------------------------------------instance Binary ClockTime where-        put (ClockTime (T.TOD i j)) = put i >> put j-        get = do i <- get-                 j <- get-                 return (ClockTime (T.TOD i j))--instance Binary TimeDiff where-        put (TimeDiff ye mo da ho mi se ps) = do-                put ye; put mo; put da; put ho; put mi; put se; put ps-        get = do-                ye <- get-                mo <- get-                da <- get-                ho <- get-                mi <- get-                se <- get-                ps <- get-                return (TimeDiff ye mo da ho mi se ps)--
− Lib/Error.hs
@@ -1,82 +0,0 @@------ | Error utilities----module Lib.Error where--import Control.Monad       (liftM)-import Control.Monad.Error (MonadError (..))---- | 'catchErrorJust' is an error catcher for the Maybe type. As input is given---   a deciding function, a monad and a handler. When an error is caught, the---   decider is executed to decide if the error should be handled or not.---   Then the handler is eventually called to handle the error.-catchErrorJust :: MonadError e m => (e -> Maybe b) -- ^ Decider function-               -> m a -- ^ Monad-               -> (b -> m a) -- ^ Handler function-               -> m a -- ^ Result: A monadic operation on type a-catchErrorJust decide m handler- = catchError m (\e -> case decide e of-                         Just b -> handler b-                         Nothing -> throwError e)---- | 'handleError' is the flipped version of 'catchError'.-handleError :: MonadError e m => (e -> m a) -- ^ Error handler-            -> m a -- ^ Monad-            -> m a -- ^ Resulting monad-handleError = flip catchError---- | 'handleErrorJust' is the flipped version of 'catchErrorJust'.-handleErrorJust :: MonadError e m => (e -> Maybe b) -- ^ Decider-                -> (b -> m a) -- ^ Handler-                -> m a -- ^ Monad-                -> m a -- ^ Resulting Monad-handleErrorJust = flip . catchErrorJust---- | 'tryError' uses Either to explicitly define the outcome of a---   monadic operation. An error is caught and placed into Right,---   whereas successful operation is placed into Left.-tryError :: MonadError e m => m a -- ^ Monad to operate on-         -> m (Either e a) -- ^ Returns: Explicit Either type-tryError m = catchError (liftM Right m) (return . Left)---- | 'tryErrorJust' is the 'catchErrorJust' version of 'tryError'---   given is a decider guarding whether or not the error should be---   handled. The handler will always Right and no errors are Left'ed---   through. If the decider returns Nothing, the error will be thrown---   further up.-tryErrorJust :: MonadError e m => (e -> Maybe b) -- ^ Decider-             -> m a -- ^ Monad-             -> m (Either b a) -- ^ Returns: Explicit Either type-tryErrorJust decide m = catchErrorJust decide (liftM Right m) (return . Left)---- | 'finallyError' is a monadic version of the classic UNWIND-PROTECT of---   lisp fame. Given parameters m and after (both monads) we proceed to---   work on m. If an error is caught, we execute the out-guard, after,---   before rethrowing the error. If m does not fail, after is executed---   and the value of m is returned.-finallyError :: MonadError e m => m a -- ^ Monadic operation-             -> m b -- ^ Guard-             -> m a -- ^ Returns: A new monad.-finallyError m after = do a <- catchError m (\e -> after >> throwError e)-                          after-                          return a---- | 'bracketError' is the monadic version of DYNAMIC-WIND from Scheme---   fame. Parameters are: before, after and m. before is the in-guard---   being executed before m. after is the out-guard and protects fails---   of the m.---   In the Haskell world, this scheme is called a bracket and is often---   seen employed to manage resources.-bracketError :: MonadError e m => m a -- ^ Before (in-guard) monad-             -> (a -> m b) -- ^ After (out-guard) operation. Fed output of before-             -> (a -> m c) -- ^ Monad to work on. Fed with output of before-             -> m c -- ^ Resulting monad.-bracketError before after m = do v <- before; finallyError (m v) (after v)---- | 'bracketError_' is the non-bound version of 'bracketError'. The---   naming scheme follows usual Haskell convention.-bracketError_ :: MonadError e m => m a -- ^ Before (in-guard)-              -> m b -- ^ After (out-guard)-              -> m c -- ^ Monad to work on-              -> m c -- ^ Resulting monad-bracketError_ before after m = bracketError before (\_ -> after) (\_ -> m)
− Lib/FixPrecedence.hs
@@ -1,343 +0,0 @@-module Lib.FixPrecedence (withPrecExp, withPrecDecl, precTable, FixPrecedence(..) ) where--import qualified Data.Map as M-import Language.Haskell.Syntax-import Data.List--{--    PrecedenceData--    This is a data type to hold precedence information.  It simply records,-    for each operator, its precedence level (a number), and associativity-    (one of HsAssocNone, HsAssocLeft, or HsAssocRight).--}-type PrecedenceData = M.Map HsQName (HsAssoc, Int)--{--    findPrec--    Looks up precedence information for a goven operator.  If the operator-    is not in the precedence data, the Haskell report specifies that it-    should be treated as infixl 9.--}-findPrec :: PrecedenceData -> HsQName -> (HsAssoc, Int)-findPrec = flip (M.findWithDefault defaultPrec)-    where defaultPrec = (HsAssocLeft, 9)--{--    precWrong--    This returns True iff the first operator should be a parent of the-    second in the expression tree, when they occur consecutively left to-    right in the input.  This is called "wrong" because the parser in-    Language.Haskell.Parser treats everything as left associative at the-    same precedence, so the right-most operator will be the parent in the-    expression tree in the original input.--    XXX: Currently, this function treats operators with no associativity-         as if they were left associative.  It also looks only at the-         associativity of the left-most operator.  This should work for-         correct code, but it does not report errors for incorrect code.--}-precWrong :: PrecedenceData -> HsQName -> HsQName -> Bool-precWrong pd a b = let (assoc, prec) = findPrec pd a-                       (_, prec')    = findPrec pd b-                   in     (prec < prec')-                       || (prec == prec' && assoc == HsAssocRight)--{--    nameFromQOp--    Extracts the HsQName from an HsQOp.--}-nameFromQOp :: HsQOp -> HsQName-nameFromQOp (HsQVarOp s) = s-nameFromQOp (HsQConOp s) = s--nameFromOp :: HsOp -> HsQName-nameFromOp (HsVarOp n) = UnQual n-nameFromOp (HsConOp n) = UnQual n--{--    withPrecExp--    This routine fixes up an expression by applying precedence data.--}-withPrecExp :: PrecedenceData -> HsExp -> HsExp--{--    This is the heart of the whole thing.  It applies an algorithm-    described by LaLonde and Rivieres in ACM Transactions on Programming-    Languages and Systems, January 1981.  The idea is to take a parse-    tree with a consistent left-associative organization, and rearrange it-    to match a precedence table.--    A few changes have been made.  LaLonde and Rivieres remove parentheses-    from their parse tree, which isn't necessary here; and they work with-    an inherently right-associative grammar, while Language.Haskell.Parser-    produces a left-associative grammar.--}-withPrecExp pd (HsInfixApp k@(HsInfixApp e qop' f) qop g) =-    let g'  = withPrecExp pd g-        op  = nameFromQOp qop-        op' = nameFromQOp qop'-    in  if precWrong pd op' op-        then let e' = withPrecExp pd e-                 f' = withPrecExp pd f-             in  withPrecExp pd (HsInfixApp e' qop' (HsInfixApp f' qop g'))-        else HsInfixApp (withPrecExp pd k) qop g'--withPrecExp pd (HsInfixApp e op f) =-    HsInfixApp (withPrecExp pd e) op (withPrecExp pd f)--{--    The remaining cases simply propogate the correction throughout other-    elements of the grammar.--}-withPrecExp _  (HsVar v)                = HsVar v-withPrecExp _  (HsCon c)                = HsCon c-withPrecExp _  (HsLit l)                = HsLit l-withPrecExp pd (HsApp e f)              =-    HsApp (withPrecExp pd e) (withPrecExp pd f)-withPrecExp pd (HsNegApp e)             =-    HsNegApp (withPrecExp pd e)-withPrecExp pd (HsLambda loc pats e)    =-    let pats' = map (withPrecPat pd) pats-    in  HsLambda loc pats' (withPrecExp pd e)-withPrecExp pd (HsLet decls e)          =-    let (pd', decls') = mapAccumL withPrecDecl pd decls-    in  HsLet decls' (withPrecExp pd' e)-withPrecExp pd (HsIf e f g)             =-    HsIf (withPrecExp pd e) (withPrecExp pd f) (withPrecExp pd g)-withPrecExp pd (HsCase e alts)          =-    let alts' = map (withPrecAlt pd) alts-    in  HsCase (withPrecExp pd e) alts'-withPrecExp pd (HsDo stmts)             =-    let (_, stmts') = mapAccumL withPrecStmt pd stmts-    in  HsDo stmts'-withPrecExp pd (HsTuple exps)           =-    let exps' = map (withPrecExp pd) exps-    in  HsTuple exps'-withPrecExp pd (HsList exps)            =-    let exps' = map (withPrecExp pd) exps-    in  HsList exps'-withPrecExp pd (HsParen e)              =-    HsParen (withPrecExp pd e)-withPrecExp pd (HsLeftSection e op)     =-    HsLeftSection (withPrecExp pd e) op-withPrecExp pd (HsRightSection op e)    =-    HsRightSection op (withPrecExp pd e)-withPrecExp pd (HsRecConstr n upd)      =-    let upd' = map (withPrecUpd pd) upd-    in  HsRecConstr n upd'-withPrecExp pd (HsRecUpdate e upd)      =-    let upd' = map (withPrecUpd pd) upd-    in  HsRecUpdate (withPrecExp pd e) upd'-withPrecExp pd (HsEnumFrom e)           =-    HsEnumFrom (withPrecExp pd e)-withPrecExp pd (HsEnumFromThen e f)     =-    HsEnumFromThen (withPrecExp pd e) (withPrecExp pd f)-withPrecExp pd (HsEnumFromTo e f)       =-    HsEnumFromTo (withPrecExp pd e) (withPrecExp pd f)-withPrecExp pd (HsEnumFromThenTo e f g) =-    HsEnumFromThenTo (withPrecExp pd e) (withPrecExp pd f) (withPrecExp pd g)-withPrecExp pd (HsListComp e stmts)     =-    let (_, stmts') = mapAccumL withPrecStmt pd stmts-    in  HsListComp (withPrecExp pd e) stmts'-withPrecExp pd (HsExpTypeSig l e t)     =-    HsExpTypeSig l (withPrecExp pd e) t-withPrecExp pd (HsAsPat n e)            =-    HsAsPat n (withPrecExp pd e)-withPrecExp _  (HsWildCard)             =-    HsWildCard-withPrecExp pd (HsIrrPat e)             =-    HsIrrPat (withPrecExp pd e)--{--    This function is analogous to withPrec, but operates on patterns instead-    of expressions.--}-withPrecPat :: PrecedenceData -> HsPat -> HsPat--{--    This is the same algorithm based on Lalonde and Rivieres, but designed-    to work with infix data constructors in pattern matching.--}-withPrecPat pd (HsPInfixApp k@(HsPInfixApp e op' f) op g) =-    let g' = withPrecPat pd g-    in  if precWrong pd op' op-        then let e' = withPrecPat pd e-                 f' = withPrecPat pd f-             in  withPrecPat pd (HsPInfixApp e' op' (HsPInfixApp f' op g'))-        else HsPInfixApp (withPrecPat pd k) op g'--withPrecPat pd (HsPInfixApp e op f) =-    HsPInfixApp (withPrecPat pd e) op (withPrecPat pd f)--withPrecPat _  (HsPVar n)           = HsPVar n-withPrecPat _  (HsPLit l)           = HsPLit l-withPrecPat pd (HsPNeg p)           = HsPNeg (withPrecPat pd p)-withPrecPat pd (HsPApp n ps)        = let ps' = map (withPrecPat pd) ps-                                      in  HsPApp n ps'-withPrecPat pd (HsPTuple ps)        = let ps' = map (withPrecPat pd) ps-                                      in  HsPTuple ps'-withPrecPat pd (HsPList ps)         = let ps' = map (withPrecPat pd) ps-                                      in  HsPList ps'-withPrecPat pd (HsPParen p)         = HsPParen (withPrecPat pd p)-withPrecPat pd (HsPRec n pfs)       = let pfs' = map (withPrecPatField pd) pfs-                                      in  HsPRec n pfs'-withPrecPat pd (HsPAsPat n p)       = HsPAsPat n (withPrecPat pd p)-withPrecPat _  (HsPWildCard)        = HsPWildCard-withPrecPat pd (HsPIrrPat p)        = HsPIrrPat (withPrecPat pd p)--{--    Propogates precedence fixing through a pattern "field"--}-withPrecPatField :: PrecedenceData -> HsPatField -> HsPatField-withPrecPatField pd (HsPFieldPat n p) = HsPFieldPat n (withPrecPat pd p)--{--    Propogates precedence fixing through declaration sections.  This-    gets interesting, because declarations can actually change the-    existing precedence, so withPrecDecl returns both the transformed-    tree and an augmented precedence relation.--}-withPrecDecl :: PrecedenceData -> HsDecl -> (PrecedenceData, HsDecl)-withPrecDecl pd d@(HsInfixDecl _ assoc p ops)  =-    let nms      = map nameFromOp ops-        prec     = (assoc, p)-        pd'      = M.union pd $ M.fromList $ map (flip (,) prec) nms-    in  (pd', d)-withPrecDecl pd (HsClassDecl l ctx n ns decls) =-    let (pd', decls') = mapAccumL withPrecDecl pd decls-    in  (pd', HsClassDecl l ctx n ns decls')-withPrecDecl pd (HsInstDecl l ctx n ts decls)  =-    -- The question of what to do with fixity declarations here is-    -- interesting.  The report says they aren't allowed (4.3.2), but-    -- GHC accepts them as of version 6.6 and apparently ignores them.-    -- The best thing is probably to match GHC's behavior.-    let decls' = map snd $ map (withPrecDecl pd) decls-    in  (pd, HsInstDecl l ctx n ts decls')-withPrecDecl pd (HsFunBind ms)                 =-    let ms' = map (withPrecMatch pd) ms-    in  (pd, HsFunBind ms')-withPrecDecl pd (HsPatBind l p rhs decls)      =-    let p'     = withPrecPat pd p-        (pd',decls') = mapAccumL withPrecDecl pd decls-        rhs'   = withPrecRhs pd' rhs-    in  (pd, HsPatBind l p' rhs' decls')-withPrecDecl pd d                              = (pd, d)--{--    Propogates precedence fixing through HsMatch--}-withPrecMatch :: PrecedenceData -> HsMatch -> HsMatch-withPrecMatch pd (HsMatch l n ps rhs decls)           =-    let ps'           = map (withPrecPat pd) ps-        (pd', decls') = mapAccumL withPrecDecl pd decls-        rhs'          = withPrecRhs pd' rhs-    in  HsMatch l n ps' rhs' decls'--{--    Propogates precedence fixing through HsRhs--}-withPrecRhs :: PrecedenceData -> HsRhs -> HsRhs-withPrecRhs pd (HsUnGuardedRhs e)  = HsUnGuardedRhs (withPrecExp pd e)-withPrecRhs pd (HsGuardedRhss grs) = let grs' = map (withPrecGRhs pd) grs-                                     in HsGuardedRhss grs'--withPrecGRhs :: PrecedenceData -> HsGuardedRhs -> HsGuardedRhs-withPrecGRhs pd (HsGuardedRhs l e f) =-    HsGuardedRhs l (withPrecExp pd e) (withPrecExp pd f)--{--    Propogates precedence fixing through case statement alternatives.--}-withPrecAlt :: PrecedenceData -> HsAlt -> HsAlt-withPrecAlt pd (HsAlt l p alts ds) =-    let (pd', ds') = mapAccumL withPrecDecl pd ds-    in HsAlt l (withPrecPat pd p) (withPrecGAlts pd' alts) ds'--withPrecGAlts :: PrecedenceData -> HsGuardedAlts -> HsGuardedAlts-withPrecGAlts pd (HsUnGuardedAlt e) = HsUnGuardedAlt (withPrecExp pd e)-withPrecGAlts pd (HsGuardedAlts alts) = let alts' = map (withPrecGAlt pd) alts-                                        in  HsGuardedAlts alts'--withPrecGAlt :: PrecedenceData -> HsGuardedAlt -> HsGuardedAlt-withPrecGAlt pd (HsGuardedAlt l e f) =-    HsGuardedAlt l (withPrecExp pd e) (withPrecExp pd f)--{--    Propogates precedence fixing through do blocks.  Because let statements-    can change precedence, the result is both the transformed tree and an-    augmented precedence relation, much like in withPrecDecl.--}-withPrecStmt :: PrecedenceData -> HsStmt -> (PrecedenceData, HsStmt)-withPrecStmt pd (HsGenerator l p e) =-    (pd, HsGenerator l (withPrecPat pd p) (withPrecExp pd e))-withPrecStmt pd (HsQualifier e) = (pd, HsQualifier (withPrecExp pd e))-withPrecStmt pd (HsLetStmt ds)  = let (pd', ds') = mapAccumL withPrecDecl pd ds-                                  in  (pd', HsLetStmt ds')--{--    Propogates precedence fixing through record field updates.--}-withPrecUpd :: PrecedenceData -> HsFieldUpdate -> HsFieldUpdate-withPrecUpd pd (HsFieldUpdate n e) = HsFieldUpdate n (withPrecExp pd e)--{--    This is the default precedence table used for parsing expressions.-    It is taken from the precedences of the main operators in the Haskell-    Prelude.--    XXX: It might be a good idea to search the standard library docs for-         other operators.  These are the ones listed in the Haskell Report-         section 4.  For example, one that is not included here is-         Data.Ratio.%--}-precTable :: PrecedenceData-precTable = M.fromList-    [-        (UnQual (HsSymbol "!!"),      (HsAssocLeft,  9)),-        (UnQual (HsSymbol "."),       (HsAssocRight, 9)),-        (UnQual (HsSymbol "^"),       (HsAssocRight, 8)),-        (UnQual (HsSymbol "^^"),      (HsAssocRight, 8)),-        (UnQual (HsSymbol "**"),      (HsAssocLeft,  8)),-        (UnQual (HsSymbol "*"),       (HsAssocLeft,  7)),-        (UnQual (HsSymbol "/"),       (HsAssocLeft,  7)),-        (UnQual (HsIdent  "div"),     (HsAssocLeft,  7)),-        (UnQual (HsIdent  "mod"),     (HsAssocLeft,  7)),-        (UnQual (HsIdent  "rem"),     (HsAssocLeft,  7)),-        (UnQual (HsIdent  "quot"),    (HsAssocLeft,  7)),-        (UnQual (HsSymbol "+"),       (HsAssocLeft,  6)),-        (UnQual (HsSymbol "-"),       (HsAssocLeft,  6)),-        (UnQual (HsSymbol ":"),       (HsAssocRight, 5)),-        (Special HsCons,              (HsAssocRight, 5)),-        (UnQual (HsSymbol "++"),      (HsAssocRight, 5)),-        (UnQual (HsSymbol "=="),      (HsAssocNone,  4)),-        (UnQual (HsSymbol "/="),      (HsAssocNone,  4)),-        (UnQual (HsSymbol "<"),       (HsAssocNone,  4)),-        (UnQual (HsSymbol "<="),      (HsAssocNone,  4)),-        (UnQual (HsSymbol ">"),       (HsAssocNone,  4)),-        (UnQual (HsSymbol ">="),      (HsAssocNone,  4)),-        (UnQual (HsIdent  "elem"),    (HsAssocNone,  4)),-        (UnQual (HsIdent  "notElem"), (HsAssocNone,  4)),-        (UnQual (HsSymbol "&&"),      (HsAssocRight, 3)),-        (UnQual (HsSymbol "||"),      (HsAssocRight, 2)),-        (UnQual (HsSymbol ">>"),      (HsAssocLeft,  1)),-        (UnQual (HsSymbol ">>="),     (HsAssocLeft,  1)),-        (UnQual (HsSymbol "$"),       (HsAssocRight, 0)),-        (UnQual (HsSymbol "$!"),      (HsAssocRight, 0)),-        (UnQual (HsIdent  "seq"),     (HsAssocRight, 0))-    ]---class FixPrecedence a where-    fixPrecedence :: a -> a--instance FixPrecedence HsExp where-    fixPrecedence = withPrecExp precTable--instance FixPrecedence HsDecl where-    fixPrecedence = snd . withPrecDecl precTable-
− Lib/MiniHTTP.hs
@@ -1,115 +0,0 @@------ | HTTP protocol binding.--- <http://homepages.paradise.net.nz/warrickg/haskell/http/>--- <http://www.dtek.chalmers.se/~d00bring/haskell-xml-rpc/http.html>-----module Lib.MiniHTTP (-        Proxy,-        mkPost,-        readPage,-        readNBytes,-        urlEncode,-        urlDecode,-        module Network.URI-    ) where--import Data.Maybe (fromMaybe)-import Data.Bits  ((.&.))-import Data.Char  (ord, chr, digitToInt, intToDigit)--import Control.Monad (liftM2)--import System.IO--import Network-import Network.URI hiding (authority)--authority :: URI -> String-authority = uriRegName . maybe (error "authority") id . uriAuthority--type Proxy = Maybe (String, Integer)---- HTTP specific stuff-mkPost :: URI -> String -> [String]-mkPost uri body = ["POST " ++ url ++ " HTTP/1.0",-                   "Host: " ++ host,-                   "Accept: */*",-                   "Content-Type: application/x-www-form-urlencoded",-                   "Content-Length: " ++ (show $ length body),-                   ""]-    where-    url = show uri-    host = authority uri--hGetLines :: Handle -> IO [String]-hGetLines h = do-  eof <- hIsEOF h-  if eof then return []-     else-     liftM2 (:) (hGetLine h) (hGetLines h)--readPage :: Proxy -> URI -> [String] -> String -> IO [String]-readPage proxy uri headers body = withSocketsDo $ do-      h <- connectTo host (PortNumber (fromInteger port))-      mapM_ (\s -> hPutStr h (s ++ "\r\n")) headers-      hPutStr h body-      hFlush h-      contents <- hGetLines h-      hClose h-      return contents-    where-    (host, port) = fromMaybe (authority uri, 80) proxy------- read lines, up to limit of n bytes. Useful to ensure people don't--- abuse the url plugin----readNBytes :: Int -> Proxy -> URI -> [String] -> String -> IO [String]-readNBytes n proxy uri headers body = withSocketsDo $ do-      h <- connectTo host (PortNumber (fromInteger port))-      mapM_ (\s -> hPutStr h (s ++ "\r\n")) headers-      hPutStr h body-      hFlush h-      contents <- lines `fmap` hGetN n h-      hClose h-      return contents-    where-    (host, port) = fromMaybe (authority uri, 80) proxy--    hGetN :: Int -> Handle -> IO String-    hGetN i h | i `seq` h `seq` False = undefined -- strictify-    hGetN 0 _ = return []-    hGetN i h = do eof <- hIsEOF h-                   if eof then return []-                          else liftM2 (:) (hGetChar h) (hGetN (i-1) h)---- from HTTP.hs-urlEncode, urlDecode :: String -> String--urlDecode ('%':a:b:rest) = chr (16 * digitToInt a + digitToInt b)-                         : urlDecode rest-urlDecode (h:t) = h : urlDecode t-urlDecode [] = []--urlEncode (h:t) =-    let str = if isReservedChar(ord h) then escape h else [h]-    in str ++ urlEncode t-  where-        isReservedChar x-            | x >= ord 'a' && x <= ord 'z' = False-            | x >= ord 'A' && x <= ord 'Z' = False-            | x >= ord '0' && x <= ord '9' = False-            | x <= 0x20 || x >= 0x7F = True-            | otherwise = x `elem` map ord [';','/','?',':','@','&'-                                           ,'=','+',',','$','{','}'-                                           ,'|','\\','^','[',']','`'-                                           ,'<','>','#','%','"']-        -- wouldn't it be nice if the compiler-        -- optimised the above for us?--        escape x =-            let y = ord x-            in [ '%', intToDigit ((y `div` 16) .&. 0xf), intToDigit (y .&. 0xf) ]--urlEncode [] = []
− Lib/OEIS.hs
@@ -1,397 +0,0 @@--- | A Haskell interface to the Online Encyclopedia of Integer--- Sequences (OEIS),  <http://www.research.att.com/~njas/sequences/>.--- Comments, suggestions, or bug reports should be sent to --- Brent Yorgey, byorgey /at/ gmail /dot/ com.------ Modified for lambdabot by Twan van Laarhoven, twanvl /at/ gmail /dot/ com--module Lib.OEIS -  ( -    -- * Example usage-    -- $sample-    -    -- * Lookup functions-    getSequenceByID, lookupSequenceByID, -    extendSequence, lookupSequence,-    searchSequence_IO,-    getSequenceByID_IO, lookupSequenceByID_IO,-    extendSequence_IO, lookupSequence_IO,--    -- * Data structures-    SequenceData,-    Language(..), Keyword(..),-    OEISSequence(..)--  ) where--import Config-import Lib.Url-import Network.URI-import System.IO.Unsafe (unsafePerformIO)-import Data.List (intersperse, isPrefixOf, tails, foldl')-import Data.Char (toUpper, toLower, isSpace)-import Data.Maybe (listToMaybe, fromMaybe)-import Control.Arrow--type SequenceData = [Integer]----- | Look up a sequence in the OEIS using its search function-searchSequence_IO :: String -> IO (Maybe OEISSequence)-searchSequence_IO x = getOEIS (baseSearchURI++) (escapeURIString isAllowedInURI $ x)---- | Look up a sequence in the OEIS by its catalog number.  Generally--- this would be its A-number, but M-numbers (from the /Encyclopedia of--- Integer Sequences/) and N-numbers (from the /Handbook of Integer--- Sequences/) can be used as well.------ Note that the result is not in the 'IO' monad, even though the--- implementation requires looking up information via the--- Internet. There are no side effects to speak of, and from a--- practical point of view the function is referentially transparent--- (OEIS A-numbers could change in theory, but it's extremely--- unlikely).  If you're a nitpicky purist, feel free to use the--- provided 'getSequenceByID_IO' instead.--- --- Examples:--- --- > Prelude Math.OEIS> getSequenceByID "A000040"    -- the prime numbers--- > Just [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47...--- >--- > Prelude Math.OEIS> getSequenceByID "A-1"        -- no such sequence!--- > Nothing--getSequenceByID :: String -> Maybe SequenceData-getSequenceByID = unsafePerformIO . getSequenceByID_IO---- | The same as 'getSequenceByID', but with a result in the 'IO'--- monad.-getSequenceByID_IO :: String -> IO (Maybe SequenceData)-getSequenceByID_IO x = lookupSequenceByID_IO x >>= return . fmap sequenceData---- | Look up a sequence by ID number, returning a data structure--- containing the entirety of the information the OEIS has on the--- sequence.------ The standard disclaimer about not being in the 'IO' monad applies.------ Examples:------ > Prelude Math.OEIS> description `fmap` lookupSequenceByID "A000040"--- > Just "The prime numbers."--- >--- > Prelude Math.OEIS> keywords `fmap` lookupSequenceByID "A000105"--- > Just [Nonn,Hard,Nice,Core]--lookupSequenceByID :: String -> Maybe OEISSequence-lookupSequenceByID = unsafePerformIO . lookupSequenceByID_IO---- | The same as 'lookupSequenceByID', but in the 'IO' monad.-lookupSequenceByID_IO :: String -> IO (Maybe OEISSequence)-lookupSequenceByID_IO = getOEIS idSearchURI---- | Extend a sequence by using it as a lookup to the OEIS, taking --- the first sequence returned as a result, and using it to augment --- the original sequence.------ Note that @xs@ is guaranteed to be a prefix of @extendSequence xs@.--- If the matched OEIS sequence contains any elements prior to those--- matching @xs@, they will be dropped.  In addition, if no matching--- sequences are found, @xs@ will be returned unchanged.------ The result is not in the 'IO' monad even though the implementation--- requires looking up information via the Internet.  There are no--- side effects, and practically speaking this function is--- referentially transparent (technically, results may change from--- time to time when the OEIS database is updated; this is slightly--- more likely than the results of 'getSequenceByID' changing, but still--- unlikely enough to be essentially a non-issue.  Again, purists may--- use 'extendSequence_IO').------ Examples:------ > Prelude Math.OEIS> extendSequence [5,7,11,13,17]--- > [5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71...------ > Prelude Math.OEIS> extendSequence [2,4,8,16,32]--- > [2,4,8,16,32,64,128,256,512,1024,2048,4096,8192...------ > Prelude Math.OEIS> extendSequence [9,8,7,41,562]   -- nothing matches--- > [9,8,7,41,562]--extendSequence :: SequenceData -> SequenceData-extendSequence = unsafePerformIO . extendSequence_IO---- | The same as 'extendSequence', but in the 'IO' monad.-extendSequence_IO :: [Integer] -> IO [Integer]-extendSequence_IO [] = return []-extendSequence_IO xs = do oeis <- lookupSequence_IO xs-                          case oeis of -                            Nothing -> return xs-                            Just s  -> return $ extend xs (sequenceData s)---- | Find a matching sequence in the OEIS database, returning a data--- structure containing the entirety of the information the OEIS has--- on the sequence.------ The standard disclaimer about not being in the 'IO' monad applies.-lookupSequence :: SequenceData -> Maybe OEISSequence-lookupSequence = unsafePerformIO . lookupSequence_IO---- | The same as 'lookupSequence', but in the 'IO' monad.-lookupSequence_IO :: SequenceData -> IO (Maybe OEISSequence)-lookupSequence_IO = getOEIS seqSearchURI---- | @extend xs ext@ returns the maximal suffix of @ext@ of which @xs@ is--- a prefix, or @xs@ if @xs@ is not a prefix of any suffixes of @ext@. It--- is guaranteed that------ > forall xs ext. xs `isPrefixOf` (extend xs ext)-extend :: SequenceData -> SequenceData -> SequenceData-extend xs ext = fromMaybe xs . listToMaybe . filter (xs `isPrefixOf`) $ tails ext--baseSearchURI :: String-baseSearchURI = "http://www.research.att.com/~njas/sequences/?n=1&fmt=3&q="--idSearchURI :: String -> String-idSearchURI n = baseSearchURI ++ "id:" ++ n--seqSearchURI :: SequenceData -> String-seqSearchURI xs = baseSearchURI ++ (concat . intersperse "," . map show $ xs)--data LookupError = LookupError deriving Show--getOEIS :: (a -> String) -> a -> IO (Maybe OEISSequence)-getOEIS toURI key = case parseURI (toURI key) of-                      Nothing  -> return Nothing-                      Just uri -> do content <- get uri-                                     case content of-                                       (Left LookupError) -> return Nothing-                                       (Right text) -> return $ parseOEIS text--get :: URI -> IO (Either LookupError String)-get uri = do-    eresp <- getHtmlPage uri (proxy config)-    case eresp of-      [] -> return (Left LookupError)-      xs -> return (Right $ unlines $ dropWhile (/="\r") xs)------------------------------------------------------------------ | Programming language that some code to generate the sequence is--- written in.  The only languages indicated natively by the OEIS--- database are Mathematica and Maple; any other languages will be--- listed (usually in parentheses) at the beginning of the actual code--- snippet.-data Language = Mathematica | Maple | Other deriving Show---- | OEIS keywords.  For more information on the meaning of each--- keyword, see--- <http://www.research.att.com/~njas/sequences/eishelp2.html#RK>.-data Keyword = Base | Bref | Cofr | Cons | Core | Dead | Dumb | Dupe |-               Easy | Eigen | Fini | Frac | Full | Hard | More | Mult |-               New | Nice | Nonn | Obsc | Sign | Tabf | Tabl | Uned |-               Unkn | Walk | Word -       deriving (Eq,Show,Read)--readKeyword :: String -> Keyword-readKeyword = read . capitalize--capitalize :: String -> String-capitalize ""     = ""-capitalize (c:cs) = toUpper c : map toLower cs---- | Data structure for storing an OEIS entry.  For more information--- on the various components, see--- <http://www.research.att.com/~njas/sequences/eishelp2.html>.--data OEISSequence = -  OEIS { catalogNums  :: [String], -         -- ^ Catalog number(s), e.g. A000040, N1425. (%I)-         sequenceData :: SequenceData, -         -- ^ The actual sequence data (or absolute values of the sequence data in the case of signed sequences).  (%S,T,U)-         signedData   :: SequenceData,    -         -- ^ Signed sequence data (empty for sequences with all positive entries).  (%V,W,X)-         description  :: String,-         -- ^ Short description of the sequence. (%N)-         references   :: [String],        -         -- ^ List of academic references. (%D)-         links        :: [String],        -         -- ^ List of links to more information on the web. (%H)-         formulas     :: [String],        -         -- ^ Formulas or equations involving the sequence. (%F)-         xrefs        :: [String],        -         -- ^ Cross-references to other sequences. (%Y)-         author       :: String,          -         -- ^ Author who input the sequence into the database. (%A)-         offset       :: Int,             -         -- ^ Subscript\/index of the first term. (%O)-         firstGT1     :: Int,             -         -- ^ Index of the first term \> 1.  (%O)-         programs     :: [(Language,String)],  -         -- ^ Code that can be used to generate the sequence. (%p,t,o)-         extensions   :: [String],        -         -- ^ Corrections, extensions, or edits. (%E)-         examples     :: [String],        -         -- ^ Examples. (%e)-         keywords     :: [Keyword],       -         -- ^ Keywords. (%K)-         comments     :: [String]         -         -- ^ Comments. (%C)-       }  deriving Show--emptyOEIS :: OEISSequence-emptyOEIS = OEIS [] [] [] "" [] [] [] [] "" 0 0 [] [] [] [] []--addElement :: (Char, String) -> (OEISSequence -> OEISSequence)-addElement ('I', x) c = c { catalogNums = words x }-addElement (t, x)   c | t `elem` "STU" = c { sequenceData = nums ++ (sequenceData c) }-    where nums = map read $ csvItems x -addElement (t, x)   c | t `elem` "VWX" = c { signedData = nums ++ (signedData c) }-    where nums = map read $ csvItems x-addElement ('N', x) c = c { description = x                  }-addElement ('D', x) c = c { references  = x : (references c) } -addElement ('H', x) c = c { links       = x : (links c)      }-addElement ('F', x) c = c { formulas    = x : (formulas c)   }-addElement ('Y', x) c = c { xrefs       = x : (xrefs c)      }-addElement ('A', x) c = c { author      = x                  }-addElement ('O', x) c = c { offset      = read o             -                          , firstGT1    = read f }-  where (o,f) = second tail . span (/=',') $ x-addElement ('p', x) c = c { programs    = (Mathematica, x) :-                                            (programs c)     }-addElement ('t', x) c = c { programs    = (Maple, x) :-                                            (programs c)     }-addElement ('o', x) c = c { programs    = (Other, x) : -                                            (programs c)     }-addElement ('E', x) c = c { extensions  = x : (extensions c) }-addElement ('e', x) c = c { examples    = x : (examples c)   }-addElement ('K', x) c = c { keywords    = parseKeywords x    }-addElement ('C', x) c = c { comments    = x : (comments c)   }--parseOEIS :: String -> Maybe OEISSequence-parseOEIS x = if "no match" `isPrefixOf` (ls!!1) -                then Nothing-                else Just . foldl' (flip addElement) emptyOEIS . reverse . parseRawOEIS $ ls'-    where ls = lines x-          ls' = init . dropWhile ((/= "%") . take 1) $ ls--parseRawOEIS :: [String] -> [(Char, String)]-parseRawOEIS = map parseItem . combineConts--parseKeywords :: String -> [Keyword]-parseKeywords = map readKeyword . csvItems--csvItems :: String -> [String]-csvItems "" = []-csvItems x = item : others-    where (item, rest) = span (/=',') x-          others = csvItems $ del ',' rest--del :: Char -> String -> String-del _ ""     = ""-del c (x:xs) | c==x      = xs-             | otherwise = (x:xs)--parseItem :: String -> (Char, String)-parseItem s = (c, str) -    where ( '%':c:_ , rest) = splitWord s-          ( _idNum, str )   = if (c == 'I') then ("", rest)-                                            else splitWord rest-                           -combineConts :: [String] -> [String]-combineConts [] = []-combineConts [x] = [x]-combineConts (s@('%':_:_) : ss) = -  uncurry (:) . (joinConts s *** combineConts) . break isItem $ ss--splitWord :: String -> (String, String)-splitWord = second trimLeft . break isSpace--isItem :: String -> Bool-isItem x = not (null x) && '%' == head x--joinConts :: String -> [String] -> String-joinConts s conts = s ++ (concat . map trimLeft $ conts)--trimLeft :: String -> String-trimLeft = dropWhile isSpace--{- $sample--Suppose we are interested in answering the question, \"how many-distinct binary trees are there with exactly 20 nodes?\" Some naive-code to answer this question might be as follows:--> import Data.List (genericLength)->-> -- data-less binary trees.-> data BTree = Empty | Fork BTree BTree  deriving Show->-> -- A list of all the binary trees with exactly n nodes.-> listTrees :: Int -> [BTree]-> listTrees 0 = [Empty]-> listTrees n = [Fork left right | ->                k <- [0..n-1],->                left <- listTrees k,->                right <- listTrees (n-1-k) ]-> -> countTrees :: Int -> Integer-> countTrees = genericLength . listTrees--The problem, of course, is that @countTrees@ is horribly inefficient:--@-*Main> :set +s-*Main> countTrees 5-42-(0.00 secs, 0 bytes)-*Main> countTrees 10-16796-(0.47 secs, 27513240 bytes)-*Main> countTrees 12-208012-(7.32 secs, 357487720 bytes)-*Main> countTrees 13-*** Exception: stack overflow-@--There's really no way we can evaluate @countTrees 20@.  The solution? Cheat!--> import Math.OEIS->-> -- countTrees works ok up to 10 nodes.-> smallTreeCounts = map countTrees [0..10]-> -> -- now, extend the sequence via the OEIS!-> treeCounts = extendSequence smallTreeCounts--Now we can answer the question:--> *Main> treeCounts !! 20-> 6564120420--Sweet.  Of course, to have any sort of confidence in our answer, more-research is required!  Let's see what combinatorial goodness we have-stumbled across.--@-*Main> description \`fmap\` lookupSequence smallTreeCounts-Just \"Catalan numbers: C(n) = binomial(2n,n)\/(n+1) = (2n)!\/(n!(n+1)!). Also called Segner numbers.\"-@--Catalan numbers, interesting.  And a nice formula we could use to code-up a /real/ solution!  Hmm, where can we read more about these-so-called \'Catalan numbers\'?--@-*Main> (head . references) \`fmap\` lookupSequence smallTreeCounts-Just [\"A. Bernini, F. Disanto, R. Pinzani and S. Rinaldi, Permutations defining convex permutominoes, preprint, 2007.\"]-*Main> (head . links) \`fmap\` lookupSequence smallTreeCounts-Just [\"N. J. A. Sloane, \<a href=\\\"http:\/\/www.research.att.com\/~njas\/sequences\/b000108.txt\\\"\>The first 200 Catalan numbers\<\/a\>\"]-@--And so on.  Reams of collected mathematical knowledge at your-fingertips!  You must promise only to use this power for Good.  --}
− Lib/Parser.hs
@@ -1,84 +0,0 @@--- Haskell expression parser.  Big hack, but only uses documented APIs so it--- should be more robust than the previous hack.-module Lib.Parser (parseExpr, parseDecl, withParsed, prettyPrintInLine) where--import Control.Monad.Error () -- Monad Either instance-import Data.Char-import Data.Generics-import Language.Haskell.Syntax-import Language.Haskell.Parser-import Language.Haskell.Pretty-import Lib.FixPrecedence--parseExpr :: String -> Either String HsExp-parseExpr s-    | not (balanced 0 ' ' s) = Left "Unbalanced parentheses"-    | otherwise          = case parseModule wrapped of-        ParseOk (HsModule _ _ _ _ [HsPatBind _ _ (HsUnGuardedRhs e) _])-            -> Right $ fixPrecedence $ unparen e-        ParseFailed (SrcLoc _ _ col) msg-            -> Left $ showParseError msg (col - length prefix) s-  where-    prefix  = "module Main where { main = ("-    wrapped = prefix ++ s ++ "\n)}"-    -    unparen (HsParen e) = e-    unparen e           = e-    -    -- balanced (open-parentheses) (previous-character) (remaining-string)-    balanced :: Int -> Char -> String -> Bool-    balanced n _ ""           = n == 0-    balanced n _ ('(':cs)     =           balanced (n+1) '(' cs-    balanced n _ (')':cs)     = n > 0  && balanced (n-1) ')' cs-    balanced n p (c  :cs)-      | c `elem` "\"'" && (not  (isAlphaNum p) || c /= '\'')-                              =           balancedString c n cs-    balanced n p ('-':'-':_)-      | not (isSymbol p)      = n == 0-    balanced n _ ('{':'-':cs) =           balancedComment 1 n cs-    balanced n _ (c  :cs)     =           balanced n     c   cs-    -    balancedString :: Char -> Int -> String -> Bool-    balancedString _     n ""          = n == 0 -- the parse error will be reported by L.H.Parser-    balancedString delim n ('\\':c:cs)-      | isSpace c                      = case dropWhile isSpace cs of-                                            '\\':cs' -> balancedString delim n cs'-                                            cs'      -> balancedString delim n cs'-      | otherwise                      = balancedString delim n cs-    balancedString delim n (c     :cs)-      | delim == c                     = balanced n c cs-      | otherwise                      = balancedString delim n cs-   -    balancedComment :: Int -> Int -> String -> Bool-    balancedComment 0 n cs           = balanced n ' ' cs-    balancedComment _ _ ""           = True -- the parse error will be reported by L.H.Parser-    balancedComment m n ('{':'-':cs) = balancedComment (m+1) n cs-    balancedComment m n ('-':'}':cs) = balancedComment (m-1) n cs-    balancedComment m n (_      :cs) = balancedComment m     n cs---parseDecl :: String -> Either String HsDecl-parseDecl s = case parseModule s of-        ParseOk (HsModule _ _ _ _ [d])   -> Right $ fixPrecedence d-        ParseFailed (SrcLoc _ _ col) msg -> Left $ showParseError msg col s--showParseError :: String -> Int -> String -> String-showParseError msg col s = " " ++ msg-                       ++ case (col < 0, drop (col - 1) s) of-                            (True, _) -> " at end of input" -- on the next line, which has no prefix-                            (_,[]   ) -> " at end of input"-                            (_,ctx  ) -> let ctx' = takeWhile (/= ' ') ctx-                                         in " at \"" ++ (take 5 ctx')-                                         ++ (if length ctx' > 5 then "..." else "")-                                         ++ "\" (column " ++ show col ++ ")"---- Not really parsing--withParsed :: (forall a. (Data a, Eq a) => a -> a) -> String -> String-withParsed f s = case (parseExpr s, parseDecl s) of-                    (Right a, _) -> prettyPrintInLine $ f a-                    (_, Right a) -> prettyPrintInLine $ f a-                    (Left e,  _) -> e--prettyPrintInLine :: Pretty a => a -> String-prettyPrintInLine = prettyPrintWithMode (defaultMode { layout = PPInLine })
− Lib/Pointful.hs
@@ -1,172 +0,0 @@-{-# OPTIONS -fno-warn-missing-signatures #-}-module Lib.Pointful (pointful, ParseResult(..), test, main, combinatorModule) where--import Lib.Parser-import Language.Haskell.Parser-import Language.Haskell.Syntax-import Data.Generics-import Control.Monad.State-import Data.Maybe-import qualified Data.Map as M------ Utilities ------extT' :: (Typeable a, Typeable b) => (a -> a) -> (b -> b) -> a -> a-extT' = extT-infixl `extT'`--unkLoc = SrcLoc "<new>" 1 1--stabilize f x = let x' = f x in if x' == x then x else stabilize f x'--namesIn h = everything (++) (mkQ [] (\x -> case x of UnQual name -> [name]; _ -> [])) h-pVarsIn h = everything (++) (mkQ [] (\x -> case x of HsPVar name -> [name]; _ -> [])) h--succName (HsIdent s) = HsIdent . reverse . succAlpha . reverse $ s--succAlpha ('z':xs) = 'a' : succAlpha xs-succAlpha (x  :xs) = succ x : xs-succAlpha []       = "a"------ Optimization (removing explicit lambdas) and restoration of infix ops -------- move lambda patterns into LHS-optimizeD (HsPatBind loc (HsPVar fname) (HsUnGuardedRhs (HsLambda _ pats rhs)) [])-        =  HsFunBind [HsMatch loc fname pats (HsUnGuardedRhs rhs) []]----- combine function binding and lambda-optimizeD (HsFunBind [HsMatch loc fname pats1 (HsUnGuardedRhs (HsLambda _ pats2 rhs)) []])-        =  HsFunBind [HsMatch loc fname (pats1 ++ pats2) (HsUnGuardedRhs rhs) []]-optimizeD x = x---- remove parens-optimizeRhs (HsUnGuardedRhs (HsParen x))-          =  HsUnGuardedRhs x-optimizeRhs x = x--optimizeE :: HsExp -> HsExp--- apply ((\x z -> ...x...) y) yielding (\z -> ...y...) if there is only one x or y is simple-optimizeE (HsApp (HsParen (HsLambda loc (HsPVar ident : pats) body)) arg) | single || simple-        = HsParen (HsLambda loc pats (everywhere (mkT (\x -> if x == (HsVar (UnQual ident)) then arg else x)) body))-  where single = gcount (mkQ False (== ident)) body == 1-        simple = case arg of HsVar _ -> True; _ -> False--- apply ((\_ z -> ...) y) yielding (\z -> ...)-optimizeE (HsApp (HsParen (HsLambda loc (HsPWildCard : pats) body)) _)-        = HsParen (HsLambda loc pats body)--- remove 0-arg lambdas resulting from application rules-optimizeE (HsLambda _ [] b)-        = b--- replace (\x -> \y -> z) with (\x y -> z)-optimizeE (HsLambda loc p1 (HsLambda _ p2 body))-        = HsLambda loc (p1 ++ p2) body--- remove double parens-optimizeE (HsParen (HsParen x))-        = HsParen x--- remove lambda body parens-optimizeE (HsLambda l p (HsParen x))-        = HsLambda l p x--- remove var, lit parens-optimizeE (HsParen x@(HsVar _))-        = x-optimizeE (HsParen x@(HsLit _))-        = x--- remove infix+lambda parens-optimizeE (HsInfixApp a o (HsParen l@(HsLambda _ _ _)))-        = HsInfixApp a o l--- remove left-assoc application parens-optimizeE (HsApp (HsParen (HsApp a b)) c)-        = HsApp (HsApp a b) c--- restore infix-optimizeE (HsApp (HsApp (HsVar name@(UnQual (HsSymbol _))) l) r)-        = (HsInfixApp l (HsQVarOp name) r)--- fail-optimizeE x = x------ Decombinatorization -------- fresh name generation. TODO: prettify this-fresh = do (_,    used) <- get-           modify (\(v,u) -> (until (not . (`elem` used)) succName (succName v), u))-           (name, _) <- get-           return name---- rename all lambda-bound variables. TODO: rewrite lets as well-rename = do everywhereM (mkM (\e -> case e of -              (HsLambda _ ps _) -> do-                let pVars = concatMap pVarsIn ps-                newVars <- mapM (const fresh) pVars-                let replacements = zip pVars newVars-                return (everywhere (mkT (\n -> fromMaybe n (lookup n replacements))) e)-              _ -> return e))--uncomb' :: HsExp -> State (HsName, [HsName]) HsExp---- expand plain combinators-uncomb' (HsVar qname) | isJust maybeDef = rename (fromJust maybeDef)-  where maybeDef = M.lookup qname combinators---- eliminate sections-uncomb' (HsRightSection op arg)-  = do a <- fresh-       return (HsParen (HsLambda unkLoc [HsPVar a] (HsInfixApp (HsVar (UnQual a)) op arg)))-uncomb' (HsLeftSection arg op)-  = do a <- fresh-       return (HsParen (HsLambda unkLoc [HsPVar a] (HsInfixApp arg op (HsVar (UnQual a)))))--- infix to prefix for canonicality-uncomb' (HsInfixApp lf (HsQVarOp name) rf)-  = return (HsParen (HsApp (HsApp (HsVar name) (HsParen lf)) (HsParen rf)))---- fail-uncomb' expr = return expr------ Simple combinator definitions -----combinators = M.fromList $ map declToTuple defs-  where defs = case parseModule combinatorModule of-          ParseOk (HsModule _ _ _ _ d) -> d-          f@(ParseFailed _ _) -> error ("Combinator loading: " ++ show f)-        declToTuple (HsPatBind _ (HsPVar fname) (HsUnGuardedRhs body) [])-          = (UnQual fname, HsParen body)---- the names we recognize as combinators, so we don't generate them as temporaries then substitute them.--- TODO: more generally correct would be to not substitute any variable which is bound by a pattern-recognizedNames = map (\(UnQual n) -> n) $ M.keys combinators--combinatorModule = unlines [-  "(.)    = \\f g x -> f (g x)                                          ",-  "($)    = \\f x   -> f x                                              ",-  "flip   = \\f x y -> f y x                                            ",-  "const  = \\x _ -> x                                                  ",-  "id     = \\x -> x                                                    ",-  "(=<<)  = flip (>>=)                                                  ",-  "liftM2 = \\f m1 m2 -> m1 >>= \\x1 -> m2 >>= \\x2 -> return (f x1 x2) ",-  "join   = (>>= id)                                                    ",-  "ap     = liftM2 id                                                   ",-  "                                                                     ",-  "-- ASSUMED reader monad                                              ",-  "-- (>>=)  = (\\f k r -> k (f r) r)                                   ",-  "-- return = const                                                    ",-  ""]------ Top level ------uncombOnce :: (Data a) => a -> a-uncombOnce x = evalState (everywhereM (mkM uncomb') x) (HsIdent "`", namesIn x ++ recognizedNames)-uncomb :: (Eq a, Data a) => a -> a-uncomb = stabilize uncombOnce--optimizeOnce :: (Data a) => a -> a-optimizeOnce x = everywhere (mkT optimizeD `extT'` optimizeRhs `extT'` optimizeE) x-optimize :: (Eq a, Data a) => a -> a-optimize = stabilize optimizeOnce--pointful = withParsed (optimize . uncomb)--test s = case parseModule s of-  f@(ParseFailed _ _) -> fail (show f)-  ParseOk (HsModule _ _ _ _ defs) -> -    flip mapM_ defs $ \def -> do-      putStrLn . prettyPrintInLine  $ def-      putStrLn . prettyPrintInLine  . uncomb $ def-      putStrLn . prettyPrintInLine  . optimize . uncomb $ def--main = test "f = tail . head; g = head . tail; h = tail + tail; three = g . h . i; dontSub = (\\x -> x + x) 1; ofHead f = f . head; fm = flip mapM_ xs (\\x -> g x); po = (+1); op = (1+); g = (. f); stabilize = fix (ap . flip (ap . (flip =<< (if' .) . (==))) =<<)"
− Lib/Process.hs
@@ -1,77 +0,0 @@------ Copyright (c) 2004-6 Don Stewart - http://www.cse.unsw.edu.au/~dons--- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)------ | A Posix.popen compatibility mapping.----module Lib.Process (popen, run) where--import System.Exit-import System.IO-import System.Process-import Control.Concurrent       (forkIO, newEmptyMVar, putMVar, takeMVar)--import qualified Control.Exception--run :: FilePath -> String -> (String -> String) -> IO String-run binary src scrub = do-    (out,err,_) <- popen binary [] (Just src)-    let o = scrub out-        e = scrub err-    return $ case () of {_-        | null o && null e -> "Done."-        | null o           -> e-        | otherwise        -> o-    }------- Ignoring exit status for now.------ You have to ignore SIGPIPE, otherwise popening a non-existing executable--- will result in an attempt to write to a closed pipe and crash the wholw--- program.------ XXX there are still issues. Large amounts of output can cause what--- seems to be a dead lock on the pipe write from runplugs, for example.--- Posix.popen doesn't have this problem, so maybe we can reproduce its--- pipe handling somehow.----popen :: FilePath -> [String] -> Maybe String -> IO (String,String,ExitCode)-popen file args minput =-    Control.Exception.handle (\e -> return ([],show e,error (show e))) $ do--    (inp,out,err,pid) <- runInteractiveProcess file args Nothing Nothing--    case minput of-        Just input -> hPutStr inp input >> hClose inp -- importante!-        Nothing    -> return ()--    -- Now, grab the input-    output <- hGetContents out-    errput <- hGetContents err--    -- SimonM sez:-    -- ... avoids blocking the main thread, but ensures that all the-    -- data gets pulled as it becomes available. you have to force the-    -- output strings before waiting for the process to terminate.-    ----    -- Samb says:-    -- Might as well try to avoid hanging my system...-    -- make sure it happens FIRST.--    outMVar <- newEmptyMVar-    errMVar <- newEmptyMVar--    forkIO (Control.Exception.evaluate (length output) >> putMVar outMVar ())-    forkIO (Control.Exception.evaluate (length errput) >> putMVar errMVar ())--    takeMVar outMVar-    takeMVar errMVar--    -- And now we wait. We must wait after we read, unsurprisingly.-    -- blocks without -threaded, you're warned.-    -- and maybe the process has already completed..-    e <- Control.Exception.catch (waitForProcess pid) (\_ -> return ExitSuccess)--    return (output,errput,e)
− Lib/README
@@ -1,25 +0,0 @@-Our own custom libraries for various plugin functions.--AltTime.hs-    alternate version of the time library--Binary.hs-    a binary io lib--Map.hs-    a wrapper over Data.Map with extras--MiniHTTP.hs-    a mini http server--Process.hs-    a wrapper over System.Process--Regex.hsc-    a fast packed string regex library--Serial.hs-    a serialisation api--Util.hs-    miscellaneous string, and other, functions
− Lib/Regex.hs
@@ -1,94 +0,0 @@--------------------------------------------------------------------------------- |--- Module      :  Lib.Regex--- Copyright   :  (c) Don Stewart 2007--- License     :  GPL (see LICENSE)--- --- Maintainer  :  dons@cse.unsw.edu.au-----------------------------------------------------------------------------------module Lib.Regex (-        -- ByteString interface-        regex,      -- :: ByteString -> Regex -        matches,    -- :: Regex -> ByteString -> Bool--        -- String interface-        regex',     -- :: String -> Regex -        matches',   -- :: Regex -> String -> Bool--        -- and the underlying module-#if __GLASGOW_HASKELL__ >= 606-        module Text.Regex.Posix.ByteString-#else-        module Text.Regex-#endif--    ) where--import Data.ByteString.Char8--#if __GLASGOW_HASKELL__ >= 606-import Text.Regex.Posix.ByteString-import System.IO.Unsafe (unsafePerformIO)-#else-import Text.Regex-#endif-------------------------------------------------------------------------------- convenient regex wrappers:-----regex'   ::     String -> Regex-regex    :: ByteString -> Regex--matches' :: Regex ->     String -> Bool-matches  :: Regex -> ByteString -> Bool----------------------------------------------------------------------------#if __GLASGOW_HASKELL__ >= 606------- For ghc 6.6 we use the regex-posix bytestring library-----regex' s = regex (pack s)--regex p = unsafePerformIO $ do-    res <- compile compileFlags execFlags p-    case res of-        Left  err -> error $ "regex failed: " ++ show err-        Right r   -> return r-  where-    compileFlags = compExtended-    execFlags    = 0------- match a regex against a string or bytestring----matches' r s = matches r (pack s)--matches r p = unsafePerformIO $ do-    res <- execute r p-    case res of-        Left err       -> error $ "regex execute failed: " ++ show err-        Right Nothing  -> return False-        Right (Just _) -> return True--#else------- ghc 6.4.x Text.Regex compat:-----regex'  = mkRegex-regex   = regex' . unpack--matches' r s | Just _ <- matchRegex r s = True-             | otherwise                = False--matches  r s = matches' r (unpack s)--#endif
− Lib/Serial.hs
@@ -1,180 +0,0 @@--- --- Copyright (c) 2004-5 Thomas Jaeger, Don Stewart--- --- This program is free software; you can redistribute it and/or--- modify it under the terms of the GNU General Public License as--- published by the Free Software Foundation; either version 2 of--- the License, or (at your option) any later version.--- --- This program is distributed in the hope that it will be useful,--- but WITHOUT ANY WARRANTY; without even the implied warranty of--- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU--- General Public License for more details.--- --- You should have received a copy of the GNU General Public License--- along with this program; if not, write to the Free Software--- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA--- 02111-1307, USA.--- ------ | Serialisation----module Lib.Serial (-        Serial(..), -        stdSerial, mapSerial, listSerial, -        mapPackedSerial, assocListPackedSerial, mapListPackedSerial,-        readM, Packable(..), {- instances of Packable -}-        packedListSerial,-        readOnly, gzip, gunzip-    ) where--import Data.Maybe               (mapMaybe)--import Data.Map (Map)-import qualified Data.Map as M--import qualified Data.ByteString.Char8 as P-import Data.ByteString.Char8 (ByteString)--#ifndef mingw32_HOST_OS-import Data.ByteString.Lazy (fromChunks,toChunks)--import Codec.Compression.GZip-#endif------------------------------------------------------------------------------- A flexible (moreso than a typeclass) way to define introduction and--- elimination for persistent state on a per-module basis.----data Serial s = Serial {-        serialize   :: s -> Maybe ByteString,-        deserialize :: ByteString -> Maybe s-     }--#ifdef mingw32_HOST_OS--- XXX I haven't built a gzip library yet.-gzip   :: ByteString -> ByteString-gzip = id--gunzip :: ByteString -> ByteString-gunzip = id--#else-gzip   :: ByteString -> ByteString-gzip   = P.concat . toChunks . compress . fromChunks . (:[])--gunzip :: ByteString -> ByteString-gunzip = P.concat . toChunks . decompress .fromChunks . (:[])-#endif------- read-only serialisation----readOnly :: (ByteString -> b) -> Serial b-readOnly f = Serial (const Nothing) (Just . f)---- | Default `instance' for a Serial-stdSerial :: (Show s, Read s) => Serial s-stdSerial = Serial (Just. P.pack.show) (readM.P.unpack)---- | Serializes a 'Map' type if both the key and the value are instances--- of Read and Show. The serialization is done by converting the map to--- and from lists. Results are saved line-wise, for better editing and--- revison control.----mapSerial :: (Ord k, Show k, Show v, Read k, Read v) => Serial (Map k v)-mapSerial = Serial {-        serialize   = Just . P.pack . unlines . map show . M.toList,-        deserialize = Just . M.fromList . mapMaybe (readM . P.unpack) . P.lines-   }---- | Serialize a list of 'a's. As for the 'mapSerializer', its output is line-wise.-listSerial :: (Read a, Show a) => Serial [a]-listSerial = Serial {-        serialize   = Just .P.pack . unlines . map show,-        deserialize = Just . mapMaybe (readM . P.unpack) . P.lines-   }--packedListSerial :: Serial [P.ByteString]-packedListSerial = Serial {-        serialize   = Just . P.unlines,-        deserialize = Just . P.lines-    }------------------------------------------------------------------------------ | 'readM' behaves like read, but catches failure in a monad.--- this allocates a 20-30 M on startup...-readM :: (Monad m, Read a) => String -> m a-readM s = case [x | (x,t) <- {-# SCC "Serial.readM.reads" #-} reads s    -- bad!-               , ("","")  <- lex t] of-        [x] -> return x-        []  -> fail "Serial.readM: no parse"-        _   -> fail "Serial.readM: ambiguous parse"---class Packable t where-        readPacked :: ByteString -> t-        showPacked :: t -> ByteString---- | An instance for Map Packed [Packed]--- uses gzip compression-instance Packable (Map ByteString [ByteString]) where-        readPacked ps = M.fromList (readKV ( P.lines . gunzip $ ps))-             where-                readKV :: [ByteString] -> [(ByteString,[ByteString])]-                readKV []       =  []-                readKV (k:rest) = let (vs, rest') = break (== P.empty) rest-                                  in  (k,vs) : readKV (drop 1 rest')---        showPacked m = gzip-                     . P.unlines-                     . concatMap (\(k,vs) -> k : vs ++ [P.empty]) $ M.toList m---- assumes single line second strings-instance Packable (Map ByteString ByteString) where-        readPacked ps = M.fromList (readKV (P.lines . gunzip $ ps))-                where-                  readKV :: [ByteString] -> [(ByteString,ByteString)]-                  readKV []         = []-                  readKV (k:v:rest) = (k,v) : readKV rest-                  readKV _      = error "Serial.readPacked: parse failed"--        showPacked m  = gzip. P.unlines . concatMap (\(k,v) -> [k,v]) $ M.toList m--instance Packable ([(ByteString,ByteString)]) where-        readPacked ps = readKV (P.lines . gunzip $ ps)-                where-                  readKV :: [ByteString] -> [(ByteString,ByteString)]-                  readKV []         = []-                  readKV (k:v:rest) = (k,v) : readKV rest-                  readKV _          = error "Serial.readPacked: parse failed"--        showPacked = gzip . P.unlines . concatMap (\(k,v) -> [k,v])--instance Packable (M.Map P.ByteString (Bool, [(String, Int)])) where-    readPacked = M.fromList . readKV . P.lines-        where-          readKV :: [P.ByteString] -> [(P.ByteString,(Bool, [(String, Int)]))]-          readKV []         = []-          readKV (k:v:rest) = (k, (read . P.unpack) v) : readKV rest-          readKV _          = error "Vote.readPacked: parse failed"--    showPacked m = P.unlines . concatMap (\(k,v) -> [k,P.pack . show $ v]) $ M.toList m---- And for packed string maps-mapPackedSerial :: Serial (Map ByteString ByteString)-mapPackedSerial = Serial (Just . showPacked) (Just . readPacked)---- And for list of packed string maps-mapListPackedSerial :: Serial (Map ByteString [ByteString])-mapListPackedSerial = Serial (Just . showPacked) (Just . readPacked)---- And for association list-assocListPackedSerial   :: Serial ([(ByteString,ByteString)])-assocListPackedSerial = Serial (Just . showPacked) (Just . readPacked)--------------------------------------------------------------------------
− Lib/Signals.hs
@@ -1,134 +0,0 @@-{-# OPTIONS -cpp #-}------ | The signal story.------ Posix signals are external events that invoke signal handlers in--- Haskell. The signal handlers in turn throw dynamic exceptions.  Our--- instance of MonadError for LB maps the dynamic exceptions to--- SignalCaughts, which can then be caught by a normal catchIrc or--- handleIrc------ Here's where we do that.----module Lib.Signals where--#ifdef mingw32_HOST_OS-import Data.Typeable-import Control.Monad.Error--type Signal = String-newtype SignalException = SignalException Signal deriving Typeable--ircSignalMessage :: Signal -> [Char]-ircSignalMessage s = s--withIrcSignalCatch :: (MonadError e m,MonadIO m) => m () -> m ()-withIrcSignalCatch m = m--#else-import Lib.Error-import Lib.Util--import Data.Typeable--import Control.Concurrent-import Control.Exception-import Control.Monad.Error--import System.IO.Unsafe-import System.Posix.Signals---- A new type for the SignalException, must be Typeable so we can make a--- dynamic exception out of it.-newtype SignalException = SignalException Signal deriving Typeable------- A bit of sugar for installing a new handler--- -withHandler :: (MonadIO m,MonadError e m) => Signal -> Handler -> m () -> m ()-withHandler s h m-  = bracketError (io (installHandler s h Nothing))-                 (io . flip (installHandler s) Nothing)-                 (const m)---- And more sugar for installing a list of handlers-withHandlerList :: (MonadError e m,MonadIO m)-                => [Signal] -> (Signal -> Handler) -> m () -> m ()-withHandlerList sl h m = foldr (withHandler `ap` h) m sl------- Signals we care about. They're all fatal.------ Be careful adding signals, some signals can't be caught and--- installHandler just raises an exception if you try----ircSignalsToCatch :: [Signal]-ircSignalsToCatch = [-    busError,-    segmentationViolation,-    keyboardSignal,-    softwareTermination,-    keyboardTermination,-    lostConnection,-    internalAbort-    ]------- User friendly names for the signals that we can catch----ircSignalMessage :: Signal -> [Char]-ircSignalMessage s-   | s==busError              = "SIGBUS"-   | s==segmentationViolation = "SIGSEGV"-   | s==keyboardSignal        = "SIGINT"-   | s==softwareTermination   = "SIGTERM"-   | s==keyboardTermination   = "SIGQUIT"-   | s==lostConnection        = "SIGHUP"-   | s==internalAbort         = "SIGABRT"--- this case shouldn't happen if the list of messages is kept up to date--- with the list of signals caught-   | otherwise                  = "killed by unknown signal"------- The actual signal handler. It is this function we register for each--- signal flavour. On receiving a signal, the signal handler maps the--- signal to a a dynamic exception, and throws it out to the main--- thread. The LB MonadError instance can then do its trickery to catch--- it in handler/catchIrc----ircSignalHandler :: ThreadId -> Signal -> Handler-ircSignalHandler threadid s-  = CatchOnce $ do-        putMVar catchLock ()-        releaseSignals-        throwDynTo threadid $ SignalException s------- | Release all signal handlers----releaseSignals :: IO ()-releaseSignals =-    flip mapM_ ircSignalsToCatch-               (\sig -> installHandler sig Default Nothing)------- Mututally exclusive signal handlers------ This is clearly a hack, but I have no idea how to accomplish the same--- thing correctly. The main problem is that signals are often thrown--- multiple times, and the threads start killing each other if we allow--- the SignalException to be thrown more than once.-{-# NOINLINE catchLock #-}-catchLock :: MVar ()-catchLock = unsafePerformIO newEmptyMVar------- | Register signal handlers to catch external signals----withIrcSignalCatch :: (MonadError e m,MonadIO m) => m () -> m ()-withIrcSignalCatch m = do-    io $ installHandler sigPIPE Ignore Nothing-    io $ installHandler sigALRM Ignore Nothing-    threadid <- io myThreadId-    withHandlerList ircSignalsToCatch (ircSignalHandler threadid) m-#endif
− Lib/Url.hs
@@ -1,178 +0,0 @@------ TODO: How do I avoid threading the 'proxy' argument to the various--- functions in here?  ------ | URL Utility Functions-----module Lib.Url (-    getHtmlPage,-    getHeader,-    rawPageTitle,-    urlPageTitle,-    urlTitlePrompt-    ) where--import Data.List-import Data.Maybe-import Lib.MiniHTTP--import Text.Regex---- | The string that I prepend to the quoted page title.-urlTitlePrompt :: String-urlTitlePrompt = "Title: "---- | Limit the maximum title length to prevent jokers from spamming--- the channel with specially crafted HTML pages.-maxTitleLength :: Int-maxTitleLength = 80----- | Replace occurences in a string.--- e.g. replace [("foo", "1"), ("bar", "000")] "foo bar baz" => "1 000 baz"-replace :: [(String, String)] -> String -> String-replace [] s = s-replace (pair:pairs) s = replace pairs (f pair)-    where -      f :: (String, String) -> String-      f (from, to) = subRegex (mkRegex from) s to---- | Fetches a page title suitable for display.  Ideally, other--- plugins should make use of this function if the result is to be--- displayed in an IRC channel because it ensures that a consistent--- look is used (and also lets the URL plugin effectively ignore--- contextual URLs that might be generated by another instance of--- lambdabot; the URL plugin matches on 'urlTitlePrompt').-urlPageTitle :: String -> Proxy -> IO (Maybe String)-urlPageTitle url proxy = do-    title <- rawPageTitle url proxy-    return $ maybe Nothing (return . prettyTitle . unhtml . urlDecode) title -    where-      limitLength s-          | length s > maxTitleLength = (take maxTitleLength s) ++ " ..."-          | otherwise                 = s--      prettyTitle s = urlTitlePrompt ++ limitLength s-      unhtml = replace [("&raquo;", "»"),-                        ("&iexcl;", "¡"),-                        ("&cent;",  "¢"),-                        ("&copy;",  "©"),-                        ("&laquo;", "«"),-                        ("&deg;",   "°"),-                        ("&sup2;",  "²"),-                        ("&micro;", "µ"),-                        ("&quot;",  "\""),-                        ("&lt;",    "<"),-                        ("&gt;",    ">"),-                        ("&amp;",   "&")-                       ] -- partial list of html entity pairs---- | Fetches a page title for the specified URL.  This function should--- only be used by other plugins if and only if the result is not to--- be displayed in an IRC channel.  Instead, use 'urlPageTitle'.-rawPageTitle :: String -> Proxy -> IO (Maybe String)-rawPageTitle url proxy-    | Just uri <- parseURI url  = do-        contents <- getHtmlPage uri proxy-        return $ extractTitle contents-    | otherwise = return Nothing---- | Fetch the contents of a URL following HTTP redirects.  It returns--- a list of strings comprising the server response which includes the--- status line, response headers, and body.-getHtmlPage :: URI -> Proxy -> IO [String]-getHtmlPage u p = getHtmlPage' u p 5-  where-  getHtmlPage' :: URI -> Proxy -> Int -> IO [String]-  getHtmlPage' _   _     0 = return []-  getHtmlPage' uri proxy n = do -    contents <- getURIContents uri proxy-    case responseStatus contents of-      301       -> getHtmlPage' (redirectedUrl contents) proxy (n-1)-      302       -> getHtmlPage' (redirectedUrl contents) proxy (n-1)-      200       -> return contents-      _         -> return []-    where-      -- | Parse the HTTP response code from a line in the following-      -- format: HTTP/1.1 200 Success.-      responseStatus hdrs = (read . (!!1) . words . (!!0)) hdrs :: Int--      -- | Return the value of the "Location" header in the server-      -- response -      redirectedUrl hdrs -          | Just loc <- getHeader "Location" hdrs = -              case parseURI loc of-                Nothing   -> (fromJust . parseURI) $ fullUrl loc-                Just uri' -> uri'-          | otherwise = error("No Location header found in 3xx response.")--      -- | Construct a full absolute URL based on the current uri.  This is -      -- used when a Location header violates the HTTP RFC and does not send  -      -- an absolute URI in the response, instead, a relative URI is sent, so -      -- we must manually construct the absolute URI.-      fullUrl loc = let auth = fromJust $ uriAuthority uri-                    in (uriScheme uri) ++ "//" ++-                       (uriRegName auth) ++-                       loc---- | Fetch the contents of a URL returning a list of strings--- comprising the server response which includes the status line,--- response headers, and body.-getURIContents :: URI -> Proxy -> IO [String]-getURIContents uri proxy = readNBytes 2048 proxy uri request ""-    where-      request  = case proxy of-                   Nothing -> ["GET " ++ abs_path ++ " HTTP/1.1",-                               "host: " ++ host,-                               "Connection: close", ""]-                   _       -> ["GET " ++ show uri ++ " HTTP/1.0", ""]--      abs_path = case uriPath uri ++ uriQuery uri ++ uriFragment uri of-                   url@('/':_) -> url-                   url         -> '/':url--      host = uriRegName . fromJust $ uriAuthority uri---- | Given a server response (list of Strings), return the text in--- between the title HTML element, only if it is text/html content.--- TODO: need to decode character entities (or at least the most--- common ones)-extractTitle :: [String] -> Maybe String-extractTitle contents-    | isTextHtml contents = getTitle $ unlines contents-    | otherwise           = Nothing-    where-      begreg = mkRegexWithOpts "<title> *"  True False-      endreg = mkRegexWithOpts " *</title>" True False--      getTitle text = do-        (_,_,start,_) <- matchRegexAll begreg text-        (title,_,_,_) <- matchRegexAll endreg start-        return $ (unwords . words) title---- | Is the server response of type "text/html"?-isTextHtml :: [String] -> Bool-isTextHtml []       = False-isTextHtml contents = val == "text/html"-    where-      val   = takeWhile (/=';') ctype-      ctype = case getHeader "Content-Type" contents of-                    Nothing -> error "Lib.URL.isTextHTML: getHeader failed"-                    Just c  -> c---- | Retrieve the specified header from the server response being--- careful to strip the trailing carriage return.  I swiped this code--- from Search.hs, but had to modify it because it was not properly--- stripping off the trailing CR (must not have manifested itself as a --- bug in that code; however, parseURI will fail against CR-terminated--- strings.-getHeader :: String -> [String] -> Maybe String-getHeader _   []     = Nothing-getHeader hdr (_:hs) = lookup hdr $ concatMap mkassoc hs-    where-      removeCR   = takeWhile (/='\r')-      mkassoc s  = case findIndex (==':') s of-                    Just n  -> [(take n s, removeCR $ drop (n+2) s)]-                    Nothing -> []-
− Lib/Util.hs
@@ -1,561 +0,0 @@------ Copyright (c) 2006 Don Stewart - http://www.cse.unsw.edu.au/~dons--- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)------ | String and other utilities----module Lib.Util (-        concatWith,-        split, split2,-        breakOnGlue,-        clean,-        dropSpace,-        dropSpaceEnd,-        dropNL,-        snoc,-        after,-        splitFirstWord,-        firstWord,-        debugStr,-        debugStrLn,-        lowerCaseString, upperCaseString,-        upperize, lowerize,-        quote, timeStamp,-        listToStr, showWidth,-        listToMaybeWith, listToMaybeAll,-        getRandItem, stdGetRandItem, randomElem,-        showClean,-        expandTab,-        closest, closests,-        withMWriter, parIO, timeout,-        choice,-        arePrefixesWithSpaceOf, arePrefixesOf,--        (</>), (<.>), (<+>), (<>), (<$>),-        basename, dirname, dropSuffix, joinPath,--        addList, mapMaybeMap, insertUpd,--        pprKeys,--        isLeft, isRight, unEither,--        io,--        random, insult, confirmation-    ) where--import Data.List                (intersperse, isPrefixOf)-import Data.Char                (isSpace, toLower, toUpper)-import Data.Maybe-import Control.Monad.State      (MonadIO(..))--import qualified Data.Map as M-import Data.IORef               (newIORef, readIORef, writeIORef)--import Control.Concurrent       (MVar, newEmptyMVar, takeMVar, tryPutMVar, putMVar,-                                 forkIO, killThread, threadDelay)-import Control.Exception        (bracket)---- getStdRandom has a bug, see safeGetStdRandom below.-import System.Random hiding (split,random,getStdRandom)--import System.IO-import qualified System.Time as T------------------------------------------------------------------------------ | 'concatWith' joins lists with the given glue elements. Example:------ > concatWith ", " ["one","two","three"] ===> "one, two, three"-concatWith  :: [a]   -- ^ Glue to join with-            -> [[a]] -- ^ Elements to glue together-            -> [a]   -- ^ Result: glued-together list--concatWith glue xs = (concat . intersperse glue) xs---- | Split a list into pieces that were held together by glue.  Example:------ > split ", " "one, two, three" ===> ["one","two","three"]-split :: Eq a => [a] -- ^ Glue that holds pieces together-      -> [a]         -- ^ List to break into pieces-      -> [[a]]       -- ^ Result: list of pieces-split glue xs = split' xs-    where-    split' [] = []-    split' xs' = piece : split' (dropGlue rest)-        where (piece, rest) = breakOnGlue glue xs'-    dropGlue = drop (length glue)---- a variant?-split2 :: Char -> Int -> String -> [String]-split2 c i s =-        let fn 0 t = t:[]-            fn j t = let (xs,ys) = break (== c) t-                     in case ys of-                        [] -> xs:[]-                        _  -> xs: fn (j-1) (tail ys)-        in fn (i-1) s----- | Break off the first piece of a list held together by glue,---   leaving the glue attached to the remainder of the list.  Example:---   Like break, but works with a [a] match.------ > breakOnGlue ", " "one, two, three" ===> ("one", ", two, three")-breakOnGlue :: (Eq a) => [a] -- ^ Glue that holds pieces together-            -> [a]           -- ^ List from which to break off a piece-            -> ([a],[a])     -- ^ Result: (first piece, glue ++ rest of list)-breakOnGlue _ [] = ([],[])-breakOnGlue glue rest@(x:xs)-    | glue `isPrefixOf` rest = ([], rest)-    | otherwise = (x:piece, rest')-        where (piece, rest') = breakOnGlue glue xs-{-# INLINE breakOnGlue #-}---- | Reverse cons. Add an element to the back of a list. Example:------ > snoc 3 [2, 1] ===> [2, 1, 3]-snoc :: a -- ^ Element to be added-     -> [a] -- ^ List to add to-     -> [a] -- ^ Result: List ++ [Element]-snoc x xs = xs ++ [x]---- | 'after' takes 2 strings, called the prefix and data. A necessary---   precondition is that------   > Data.List.isPrefixOf prefix data ===> True------   'after' returns a string based on data, where the prefix has been---   removed as well as any excess space characters. Example:------   > after "This is" "This is a string" ===> "a string"-after :: String -- ^ Prefix string-      -> String -- ^ Data string-      -> String -- ^ Result: Data string with Prefix string and excess whitespace-                --     removed-after [] ys     = dropWhile isSpace ys-after (_:_) [] = error "after: (:) [] case"-after (x:xs) (y:ys)-  | x == y    = after xs ys-  | otherwise = error "after: /= case"---- | Break a String into it's first word, and the rest of the string. Example:------ > split_first_word "A fine day" ===> ("A", "fine day)-splitFirstWord :: String -- ^ String to be broken-                 -> (String, String)-splitFirstWord xs = (w, dropWhile isSpace xs')-  where (w, xs') = break isSpace xs---- | Get the first word of a string. Example:------ > first_word "This is a fine day" ===> "This"-firstWord :: String -> String-firstWord = takeWhile (not . isSpace)---- refactor, might be good for logging to file later--- | 'debugStr' checks if we have the verbose flag turned on. If we have---   it outputs the String given. Else, it is a no-op.--debugStr :: (MonadIO m) => String -> m ()-debugStr = liftIO . putStr---- | 'debugStrLn' is a version of 'debugStr' that adds a newline to the end---   of the string outputted.-debugStrLn :: (MonadIO m) => [Char] -> m ()-debugStrLn x = debugStr (x ++ "\n")---- | 'lowerCaseString' transforms the string given to lower case.------ > Example: lowerCaseString "MiXeDCaSe" ===> "mixedcase"-lowerCaseString :: String -> String-lowerCaseString = map toLower---- | 'upperCaseString' transforms the string given to upper case.------ > Example: upperCaseString "MiXeDcaSe" ===> "MIXEDCASE"-upperCaseString :: String -> String-upperCaseString = map toUpper---- | 'lowerize' forces the first char of a string to be lowercase.---   if the string is empty, the empty string is returned.-lowerize :: String -> String-lowerize [] = []-lowerize (c:cs) = toLower c:cs---- | 'upperize' forces the first char of a string to be uppercase.---   if the string is empty, the empty string is returned.-upperize :: String -> String-upperize [] = []-upperize (c:cs) = toUpper c:cs---- | 'quote' puts a string into quotes but does not escape quotes in---   the string itself.-quote  :: String -> String-quote x = "\"" ++ x ++ "\""---- | Form a list of terms using a single conjunction. Example:------ > listToStr "and" ["a", "b", "c"] ===> "a, b and c"-listToStr :: String -> [String] -> String-listToStr _    []           = []-listToStr conj (item:items) =-  let listToStr' [] = []-      listToStr' [y] = concat [" ", conj, " ", y]-      listToStr' (y:ys) = concat [", ", y, listToStr' ys]-  in  item ++ listToStr' items---- | Like 'listToMaybe', but take a function to use in case of a non-null list.---   I.e. @listToMaybe = listToMaybeWith head@-listToMaybeWith :: ([a] -> b) -> [a] -> Maybe b-listToMaybeWith _ [] = Nothing-listToMaybeWith f xs = Just (f xs)---- | @listToMaybeAll = listToMaybeWith id@-listToMaybeAll :: [a] -> Maybe [a]-listToMaybeAll = listToMaybeWith id------------------------------------------------------------------------------ | getStdRandom has a bug when 'f' returns bottom, we strictly evaluate the--- new generator before calling setStdGen.-safeGetStdRandom :: (StdGen -> (a,StdGen)) -> IO a-safeGetStdRandom f = do-    g <- getStdGen-    let (x, g') = f g-    setStdGen $! g'-    return x---- | 'getRandItem' takes as input a list and a random number generator. It---   then returns a random element from the list, paired with the altered---   state of the RNG-getRandItem :: (RandomGen g) =>-               [a] -- ^ The list to pick a random item from-            -> g   -- ^ The RNG to use-            -> (a, g) -- ^ A pair of the item, and the new RNG seed-getRandItem [] g       = (error "getRandItem: empty list", g)-getRandItem mylist rng = (mylist !! index,newRng)-                         where-                         llen = length mylist-                         (index, newRng) = randomR (0,llen - 1) rng---- | 'stdGetRandItem' is the specialization of 'getRandItem' to the standard---   RNG embedded within the IO monad. The advantage of using this is that---   you use the Operating Systems provided RNG instead of rolling your own---   and the state of the RNG is hidden, so one don't need to pass it---   explicitly.-stdGetRandItem :: [a] -> IO a-stdGetRandItem = safeGetStdRandom . getRandItem--randomElem :: [a] -> IO a-randomElem = stdGetRandItem--random :: MonadIO m => [a] -> m a-random = liftIO . randomElem------------------------------------------------------------------------------ | 'dropSpace' takes as input a String and strips spaces from the---   prefix as well as the suffix of the String. Example:------ > dropSpace "   abc  " ===> "abc"-dropSpace :: [Char] -> [Char]-dropSpace = let f = reverse . dropWhile isSpace in f . f---- | Drop space from the end of the string-dropSpaceEnd :: [Char] -> [Char]-dropSpaceEnd = reverse . dropWhile isSpace . reverse---- | 'clean' takes a Char x and returns [x] unless the Char is '\CR' in---   case [] is returned.-clean :: Char -> [Char]-clean x | x == '\CR' = []-        | otherwise  = [x]------------------------------------------------------------------------------ | show a list without heavyweight formatting-showClean :: (Show a) => [a] -> String-showClean = concatWith " " . map (init . tail . show)--dropNL :: [Char] -> [Char]-dropNL = reverse . dropWhile (== '\n') . reverse---- | untab an string-expandTab :: String -> String-expandTab []        = []-expandTab ('\t':xs) = ' ':' ':' ':' ':' ':' ':' ':' ':expandTab xs-expandTab (x:xs)    = x : expandTab xs--------------------------------------------------------------------------------- | Find string in list with smallest levenshtein distance from first--- argument, return the string and the distance from pat it is.  Will--- return the alphabetically first match if there are multiple matches--- (this may not be desirable, e.g. "mroe" -> "moo", not "more"----closest :: String -> [String] -> (Int,String)-closest pat ss = minimum ls-    where-        ls = map (\s -> (levenshtein pat s,s)) ss--closests :: String -> [String] -> (Int,[String])-closests pat ss =-    let (m,_) = minimum ls-    in (m, map snd (filter ((m ==) . fst) ls))-    where-        ls = map (\s -> (levenshtein pat s,s)) ss------- | Levenshtein edit-distance algorithm--- Translated from an Erlang version by Fredrik Svensson and Adam Lindberg----levenshtein :: String -> String -> Int-levenshtein [] [] = 0-levenshtein s  [] = length s-levenshtein [] s  = length s-levenshtein s  t  = lvn s t [0..length t] 1--lvn :: String -> String -> [Int] -> Int -> Int-lvn [] _ dl _ = last dl-lvn (s:ss) t dl n = lvn ss t (lvn' t dl s [n] n) (n + 1)--lvn' :: String -> [Int] -> Char -> [Int] -> Int -> [Int]-lvn' [] _ _ ndl _ = ndl-lvn' (t:ts) (dlh:dlt) c ndl ld | length dlt > 0 = lvn' ts dlt c (ndl ++ [m]) m-    where-        m = foldl1 min [ld + 1, head dlt + 1, dlh + (dif t c)]-lvn' _ _ _ _  _  = error "levenshtein, ran out of numbers"--dif :: Char -> Char -> Int-dif = (fromEnum .) . (/=)--{------- naive implementation, O(2^n)--- Too slow after around d = 8------ V. I. Levenshtein. Binary codes capable of correcting deletions,--- insertions and reversals. Doklady Akademii Nauk SSSR 163(4) p845-848,--- 1965------ A Guided Tour to Approximate String Matching, G. Navarro----levenshtein :: (Eq a) => [a] -> [a] -> Int-levenshtein [] [] = 0-levenshtein s  [] = length s-levenshtein [] s  = length s-levenshtein (s:ss) (t:ts)   =-    min3 (eq + (levenshtein  ss ts))-         (1  + (levenshtein (ss++[s]) ts))-         (1  + (levenshtein  ss (ts++[t])))-        where-          eq         = fromEnum (s /= t)-          min3 a b c = min c (min a b)--}------------------------------------------------------------------------------ | Thread-safe modification of an MVar.-withMWriter :: MVar a -> (a -> (a -> IO ()) -> IO b) -> IO b-withMWriter mvar f = bracket-  (do x <- takeMVar mvar; ref <- newIORef x; return (x,ref))-  (\(_,ref) -> tryPutMVar mvar =<< readIORef ref)-  (\(x,ref) -> f x $ writeIORef ref)----- stolen from--- http://www.haskell.org/pipermail/haskell-cafe/2005-January/008314.html-parIO :: IO a -> IO a -> IO a-parIO a1 a2 = do-  m <- newEmptyMVar-  c1 <- forkIO $ putMVar m =<< a1-  c2 <- forkIO $ putMVar m =<< a2-  r <- takeMVar m-  -- killThread blocks until the thread has been killed.  Therefore, we call-  -- killThread asynchronously in case one thread is blocked in a foreign-  -- call.-  forkIO $ killThread c1 >> killThread c2-  return r---- | run an action with a timeout-timeout :: Int -> IO a -> IO (Maybe a)-timeout n a = parIO (Just `fmap` a) (threadDelay n >> return Nothing)------------------------------------------------------------------------------ some filename manipulation stuff------- | </>, <.> : join two path components----infixr 6 </>-infixr 6 <.>-infixr 6 <+>-infixr 6 <>-infixr 6 <$>--(</>), (<.>), (<+>), (<>), (<$>) :: FilePath -> FilePath -> FilePath-[] </> b = b-a  </> b = a ++ "/" ++ b--[] <.> b = b-a  <.> b = a ++ "." ++ b--[] <+> b = b-a  <+> b = a ++ " " ++ b--[] <> b = b-a  <> b = a ++ b--[] <$> b = b-a  <$> b = a ++ "\n" ++ b--basename :: FilePath -> FilePath-basename = reverse . takeWhile ('/' /=) . reverse--dirname :: FilePath -> FilePath-dirname p  =-    case reverse $ dropWhile (/= '/') $ reverse p of-        [] -> "."-        p' -> p'--dropSuffix :: FilePath -> FilePath-dropSuffix = reverse . tail . dropWhile ('.' /=) . reverse--joinPath :: FilePath -> FilePath -> FilePath-joinPath p q =-    case reverse p of-      '/':_ -> p ++ q-      []    -> q-      _     -> p ++ "/" ++ q--{-# INLINE choice #-}-choice :: (r -> Bool) -> (r -> a) -> (r -> a) -> (r -> a)-choice p f g x = if p x then f x else g x---- Generalizations:--- choice :: ArrowChoice (~>) => r ~> Bool -> r ~> a -> r ~> a -> r ~> a--- choice :: Monad m => m Bool -> m a -> m a -> m a----------------------------------------------------------------------------addList :: (Ord k) => [(k,a)] -> M.Map k a -> M.Map k a-addList l m = M.union (M.fromList l) m-{-# INLINE addList #-}---- | Data.Maybe.mapMaybe for Maps-mapMaybeMap :: Ord k => (a -> Maybe b) -> M.Map k a -> M.Map k b-mapMaybeMap f = fmap fromJust . M.filter isJust . fmap f---- | This makes way more sense than @insertWith@ because we don't need to---   remember the order of arguments of @f@.-insertUpd :: Ord k => (a -> a) -> k -> a -> M.Map k a -> M.Map k a-insertUpd f = M.insertWith (\_ -> f)----  | Print map keys-pprKeys :: (Show k) => M.Map k a -> String-pprKeys = showClean . M.keys---- | Two functions that really should be in Data.Either-isLeft, isRight :: Either a b -> Bool-isLeft (Left _) = True-isLeft _        = False-isRight         = not . isLeft---- | Another useful Either function to easily get out of an Either-unEither :: Either a a -> a-unEither = either id id----- convenience:-io :: MonadIO m => IO a -> m a-io = liftIO-{-# INLINE io #-}---arePrefixesWithSpaceOf :: [String] -> String -> Bool-arePrefixesWithSpaceOf els str = any (flip isPrefixOf str) $ map (++" ") els--arePrefixesOf :: [String] -> String -> Bool-arePrefixesOf = flip (any . flip isPrefixOf)---- | Show a number, padded to the left with zeroes up to the specified width-showWidth :: Int    -- ^ Width to fill to-          -> Int    -- ^ Number to show-          -> String -- ^ Padded string-showWidth width n = zeroes ++ num-    where num    = show n-          zeroes = replicate (width - length num) '0'--timeStamp :: T.ClockTime -> String-timeStamp ct = let cal = T.toUTCTime ct-               in (showWidth 2 $ T.ctHour cal) ++ ":" ++-                  (showWidth 2 $ T.ctMin cal)  ++ ":" ++-                  (showWidth 2 $ T.ctSec cal)--------- Amusing insults from OpenBSD sudo----insult :: [String]-insult =-   ["Just what do you think you're doing Dave?",-    "It can only be attributed to human error.",-    "That's something I cannot allow to happen.",-    "My mind is going. I can feel it.",-    "Sorry about this, I know it's a bit silly.",-    "Take a stress pill and think things over.",-    "This mission is too important for me to allow you to jeopardize it.",-    "I feel much better now.",--    "Wrong!  You cheating scum!",-    "And you call yourself a Rocket Scientist!",-    "Where did you learn to type?",-    "Are you on drugs?",-    "My pet ferret can type better than you!",-    "You type like i drive.",-    "Do you think like you type?",-    "Your mind just hasn't been the same since the electro-shock, has it?",--    "Maybe if you used more than just two fingers...",-    "BOB says:  You seem to have forgotten your passwd, enter another!",-    "stty: unknown mode: doofus",-    "I can't hear you -- I'm using the scrambler.",-    "The more you drive -- the dumber you get.",-    "Listen, broccoli brains, I don't have time to listen to this trash.",-    "I've seen penguins that can type better than that.",-    "Have you considered trying to match wits with a rutabaga?",-    "You speak an infinite deal of nothing",-    -    -- More haskellish insults-    "You untyped fool!",-    "My brain just exploded",-    -    -- some more friendly replies-    "I am sorry.","Sorry.",-    "Maybe you made a typo?",-    "Just try something else.",-    "There are some things that I just don't know.",-    -- sometimes don't insult at all-    ":(",":(",-    "","",""-    ]------- Some more interesting confirmations for @remember and @where----confirmation :: [String]-confirmation =-   ["Done.","Done.",-    "Okay.",-    "I will remember.",-    "Good to know.",-    "It is stored.",-    "I will never forget.",-    "It is forever etched in my memory.",-    "Nice!"-   ]
Main.hs view
@@ -8,10 +8,15 @@ import Lambdabot  import Data.Maybe+import System.Posix.Signals  -- do argument handling main :: IO ()-main = main' Nothing modulesInfo+main = do+    -- when 'popen' is called on a non-existing executable, SIGPIPE is sent,+    -- causing lambdabot to exit:+    installHandler sigPIPE Ignore Nothing+    main' Nothing modulesInfo  -- special online target for ghci use online :: [String] -> IO ()
− Makefile
@@ -1,14 +0,0 @@-all:-	@echo-	@echo "This Makefile only supports \"make clean\". For build instructions, see README."-	@echo--clean:-	./Setup.hs clean-	rm -f ${CLEANS}-	rm -f *~-    -CLEANS= BotPP bf djinn ft hoogle lambdabot unlambda  \-        L.hi ShowFun.hi ShowQ.hi SmallCheck.hi \-        L.o  ShowFun.o  ShowQ.o  SmallCheck.o  \-        config.h config.log config.status      
Message.hs view
@@ -4,10 +4,10 @@ module Message(Message(..), Nick(..), showNick, readNick, Pipe, packNick, unpackNick) where  import qualified Data.ByteString.Char8 as P-import Control.Concurrent-import Data.Char(toUpper)+import Control.Concurrent (Chan)+import Data.Char (toUpper) -import Control.Arrow( first )+import Control.Arrow (first)  -- TODO: probably remove "Show a" later class Show a => Message a where@@ -48,7 +48,7 @@     -- TODO: there must be a better way of handling this ...     lambdabotName :: a -> Nick --- |The type of nicknames isolated from a message.+-- | The type of nicknames isolated from a message. data Nick   = Nick {         nTag :: !String, -- ^The tag of the server this nick is on@@ -67,8 +67,8 @@ instance Ord Nick where   (Nick tag name) <= (Nick tag2 name2) =      (tag, canonicalizeName name) <= (tag2, canonicalizeName name2)-   + -- Helper functions upckStr :: String -> String -> Nick upckStr def str | null ac   = Nick def str@@ -78,18 +78,18 @@ pckStr :: Nick -> String pckStr nck = nTag nck ++ ':' : nName nck --- |Format a nickname for display.  This will automatically omit the server+-- | Format a nickname for display.  This will automatically omit the server -- field if it is the same as the server of the provided message. showNick :: Message a => a -> Nick -> String showNick msg nick_ | nTag nick_ == server msg = nName nick_                    | otherwise                = pckStr nick_ --- |Parse a nickname received in a message.  If the server field is not+-- | Parse a nickname received in a message.  If the server field is not -- provided, it defaults to the same as that of the message. readNick :: Message a => a -> String -> Nick readNick msg str = upckStr (server msg) str'-	where str' | last str `elem` ":" = init str-	           | otherwise           = str+        where str' | last str `elem` ":" = init str+                   | otherwise           = str  instance Show Nick where     show x | nTag x == "freenode" = show $ nName x@@ -98,12 +98,12 @@ instance Read Nick where     readsPrec prec str = map (first (upckStr "freenode")) (readsPrec prec str) --- |Pack a nickname into a ByteString.  Note that the resulting strings are+-- | Pack a nickname into a ByteString.  Note that the resulting strings are -- not optimally formatted for human consumtion. packNick :: Nick -> P.ByteString packNick = P.pack . pckStr --- |Unpack a nickname packed by 'packNick'.+-- | Unpack a nickname packed by 'packNick'. unpackNick :: P.ByteString -> Nick unpackNick = upckStr "freenode" . P.unpack 
Modules.hs view
@@ -1,1 +1,117 @@-MODULES Base System Dict Dummy Karma Quote Seen State Topic Type Eval Babel Version More Pl Help Dice Search Vixen Fact Todo Spell Haddock Hoogle Where Elite Localtime Poll Djinn Pretty Compose Unlambda Log Slap Instances Fresh Tell Url Free Undo BF FT Check Small Figlet Pointful Source OfflineRC IRC Activity UnMtl Maya OEIS+{-# LANGUAGE TemplateHaskell #-}++module Modules (modulesInfo) where++import Plugin+import Data.List (nub)++-- to add a new plugin, one must first add a qualified import here, and also+-- add a string in the list below+import qualified Plugin.Activity+import qualified Plugin.Babel+import qualified Plugin.Base+import qualified Plugin.BF+import qualified Plugin.Check+import qualified Plugin.Compose+import qualified Plugin.Dice+import qualified Plugin.Dict+import qualified Plugin.Djinn+import qualified Plugin.Dummy+import qualified Plugin.Elite+import qualified Plugin.Eval+import qualified Plugin.Fact+import qualified Plugin.Free+import qualified Plugin.Fresh+import qualified Plugin.FT+import qualified Plugin.Haddock+import qualified Plugin.Help+import qualified Plugin.Hoogle+import qualified Plugin.Instances+import qualified Plugin.IRC+import qualified Plugin.Karma+import qualified Plugin.Localtime+import qualified Plugin.More+import qualified Plugin.OEIS+import qualified Plugin.OfflineRC+import qualified Plugin.Pl+import qualified Plugin.Pointful+import qualified Plugin.Poll+import qualified Plugin.Pretty+import qualified Plugin.Quote+import qualified Plugin.Search+import qualified Plugin.Seen+import qualified Plugin.Slap+import qualified Plugin.Source+import qualified Plugin.Spell+import qualified Plugin.State+import qualified Plugin.System+import qualified Plugin.Tell+import qualified Plugin.Ticker+import qualified Plugin.Todo+import qualified Plugin.Topic+import qualified Plugin.Type+import qualified Plugin.Undo+import qualified Plugin.Unlambda+import qualified Plugin.UnMtl+import qualified Plugin.Url+import qualified Plugin.Version+import qualified Plugin.Vixen+import qualified Plugin.Where++modulesInfo :: (LB (), [String])+modulesInfo = $(modules $ nub+                    -- these must be listed first.  Maybe.  Nobody really+                    -- knows, but better to be safe than sorry.+                    [ "Base"+                    , "State"+                    , "System"+                    , "OfflineRC"++                    -- plugins also go in this list:+                    , "Activity"+                    , "Babel"+                    , "BF"+                    , "Check"+                    , "Compose"+                    , "Dice"+                    , "Dict"+                    , "Djinn"+                    , "Dummy"+                    , "Elite"+                    , "Eval"+                    , "Fact"+                    , "Free"+                    , "Fresh"+                    , "FT"+                    , "Haddock"+                    , "Help"+                    , "Hoogle"+                    , "Instances"+                    , "IRC"+                    , "Karma"+                    , "Localtime"+                    , "More"+                    , "OEIS"+                    , "Pl"+                    , "Pointful"+                    , "Poll"+                    , "Pretty"+                    , "Quote"+                    , "Search"+                    , "Seen"+                    , "Slap"+                    , "Source"+                    , "Spell"+                    , "Tell"+                    , "Ticker"+                    , "Todo"+                    , "Topic"+                    , "Type"+                    , "Undo"+                    , "Unlambda"+                    , "UnMtl"+                    , "Url"+                    , "Version"+                    , "Vixen"+                    , "Where"+                    ])
NickEq.hs view
@@ -17,7 +17,7 @@  import Message( Message, Nick, readNick, showNick ) import Lambdabot-import Lib.Util (concatWith, split)+import Lambdabot.Util (concatWith, split) import Data.Maybe (mapMaybe)  import qualified Data.Map as M
Plugin.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE TemplateHaskell #-}+ -- -- Copyright (c) 2006 Don Stewart - http://www.cse.unsw.edu.au/~dons -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)@@ -6,18 +8,18 @@ -- Simplifies import lists, and abstracts over common patterns -- module Plugin (-        ios, box, list, ios80,+        ios, box, list, ios80, plugin, modules,          module Lambdabot,         module LBState,         module Config, -        module Lib.Util,-        module Lib.Serial,-        module Lib.Process,-        module Lib.MiniHTTP,-        module Lib.Url,-        module Lib.Regex,+        module Lambdabot.Util,+        module Lambdabot.Serial,+        module Lambdabot.Process,+        module Lambdabot.MiniHTTP,+        module Lambdabot.Url,+        module Lambdabot.Regex,          module Data.List,         module Data.Char,@@ -33,12 +35,12 @@ import LBState import Config -import Lib.Util-import Lib.Serial-import Lib.Process-import Lib.MiniHTTP-import Lib.Url-import Lib.Regex+import Lambdabot.Util+import Lambdabot.Serial+import Lambdabot.Process+import Lambdabot.MiniHTTP+import Lambdabot.Url+import Lambdabot.Regex  import Message @@ -52,6 +54,18 @@ import Control.Monad.Error import Control.Monad.Trans +import Codec.Binary.UTF8.String++import Language.Haskell.TH++import Codec.Binary.UTF8.String++import Language.Haskell.TH++import Codec.Binary.UTF8.String++import Language.Haskell.TH+ -- | convenience, we often want to perform some io, get a string, and box it. ios  :: (Functor m, MonadIO m) => IO a -> m [a] ios  = list . io@@ -65,9 +79,29 @@ -- | convenience, similar to ios but also cut output to channel to 80 characters -- usage:  @process _ _ to _ s = ios80 to (plugs s)@ ios80 :: (Functor m, MonadIO m) => Nick -> IO String -> m [String]-ios80 to what = list . io $ what >>= return . lim+ios80 to what = list . io $ what >>= return . lim . encodeString . spaceOut . removeControl . decodeString     where lim = case nName to of                     ('#':_) -> abbr 80 -- message to channel: be nice                     _       -> id      -- private message: get everything+          spaceOut = unlines . map (' ':) . lines+          removeControl = filter (\x -> isSpace x || not (isControl x))           abbr n s = let (b, t) = splitAt n s in                      if null t then b else take (n-3) b ++ "..."++plugin :: String -> Q [Dec]+plugin n = sequence [typedec, fundec]+ where+    fundec = funD themod [clause [] (normalB ([| MODULE $(conE mod) |]) ) []]+    -- typedec = newtypeD (cxt []) mod [] (normalC mod [strictType notStrict [t|()|]]) []+    typedec = dataD (cxt []) mod [] [normalC mod []] []+    themod = mkName "theModule"+    mod = mkName $ n ++ "Module"++modules :: [String] -> Q Exp+modules xs = [| ($install, $names) |]+ where+    names = listE $ map (stringE . map toLower) xs+    install = [| sequence_ $(listE $ map instalify xs) |]+    instalify x = let mod = varE $ mkName $ concat $ ["Plugin.", x, ".theModule"]+                      low = stringE $ map toLower x+                  in [| ircInstallModule $mod $low |]
Plugin/Activity.hs view
@@ -1,6 +1,5 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, TypeSynonymInstances #-} -- | Logging an IRC channel..--- module Plugin.Activity (theModule) where  import Plugin@@ -12,7 +11,7 @@  import System.Time -PLUGIN Activity+$(plugin "Activity")  type ActivityState = [(ClockTime,Msg.Nick)] 
Plugin/BF.hs view
@@ -1,18 +1,14 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-} -- Copyright (c) 2006 Jason Dagit - http://www.codersbase.com/ -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)--- --- -- | A plugin for the Haskell interpreter for the brainf*ck language--- -- http://www.muppetlabs.com/~breadbox/bf/--- module Plugin.BF (theModule) where  import Plugin -PLUGIN BF+$(plugin "BF")  instance Module BFModule () where     moduleCmds   _     = ["bf"]
Plugin/Babel.hs view
@@ -1,18 +1,15 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-} -- Copyright (c) 2004 Simon Winwood - http://www.cse.unsw.edu.au/~sjw -- Copyright (c) 2004-6 Don Stewart - http://www.cse.unsw.edu.au/~dons -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)--- --- -- | A translator module for lambdabot, a binding to babelfish--- module Plugin.Babel where  import Plugin import qualified Text.Regex as R -PLUGIN Babel+$(plugin "Babel")  instance Module BabelModule () where     moduleCmds _   = ["babel"]@@ -127,9 +124,9 @@          {-         -- totally unrelated :}-        process _ _ src "timein" s =+        process _ _ src "timein.hs" s =           if s == "help"             then ircPrivmsg src "  http://www.timeanddate.com"-            else do (o,_,_) <- liftIO $ popen "timein" [s] Nothing+            else do (o,_,_) <- liftIO $ popen "timein.hs" [s] Nothing                     ircPrivmsg src $ "  " ++ o         -}
Plugin/Base.hs view
@@ -1,6 +1,5 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, PatternGuards, TypeSynonymInstances #-} -- | Lambdabot base module. Controls message send and receive--- module Plugin.Base (theModule) where  import Plugin@@ -22,7 +21,7 @@ commands :: [String] commands  = commandPrefixes config -PLUGIN Base+$(plugin "Base")  type BaseState = GlobalPrivate () () type Base a = ModuleT BaseState LB a@@ -81,7 +80,7 @@   if isCTCPTimeReply      then do         -- bind implicit params to Localtime module. boo on implict params :/-  --    withModule ircModules +  --    withModule ircModules   --               "Localtime"   --               (error "Plugin/Base: no Localtime plugin? So I can't handle CTCP time messges")   --               (\_ -> doPRIVMSG (timeReply msg))@@ -92,7 +91,7 @@       else debugStrLn $ "NOTICE: " ++ show (body msg)     where-      isCTCPTimeReply = ":\SOHTIME" `isPrefixOf` (last (body msg)) +      isCTCPTimeReply = ":\SOHTIME" `isPrefixOf` (last (body msg))  doJOIN :: Callback doJOIN msg | lambdabotName msg /= nick msg = doIGNORE msg@@ -101,13 +100,13 @@        put (s { ircChannels = M.insert  (mkCN loc) "[currently unknown]" (ircChannels s)}) -- the empty topic causes problems        send $ getTopic loc -- initialize topic    where (_, aloc) = breakOnGlue ":" (head (body msg))-         loc       = case aloc of -                        [] -> Nick "freenode" "weird#" +         loc       = case aloc of+                        [] -> Nick "freenode" "weird#"                         _  -> Nick (server msg) (tail aloc)  doPART :: Callback doPART msg-  = when (lambdabotName msg == nick msg) $ do  +  = when (lambdabotName msg == nick msg) $ do         let loc = Nick (server msg) (head (body msg))         s <- get         put (s { ircChannels = M.delete (mkCN loc) (ircChannels s) })@@ -145,7 +144,7 @@ doPRIVMSG :: IrcMessage -> Base () doPRIVMSG msg = do --  now <- io getClockTime---  io $ appendFile "State/log" $ ppr now+--  io $ appendFile (File.findFile "log") $ ppr now     ignored <- lift $ checkIgnore msg     if ignored       then lift $ doIGNORE msg@@ -224,7 +223,7 @@              docmd cmd' = do               act <- bindModule0 . withPS towhere $ \_ _ -> do-                withModule ircCommands cmd'   -- Important. +                withModule ircCommands cmd'   -- Important.                     (ircPrivmsg towhere "Unknown command, try @list")                     (\m -> do                         name'   <- getName
Plugin/Check.hs view
@@ -1,18 +1,18 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, PatternGuards #-} -- Copyright (c) 6 DonStewart - http://www.cse.unsw.edu.au/~dons -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)--- --- -- | Test a property with QuickCheck--- module Plugin.Check where +import File (findFile) import Plugin-import Lib.Parser+import Lambdabot.Parser+ import qualified Text.Regex as R+import Codec.Binary.UTF8.String (decodeString) -PLUGIN Check+$(plugin "Check")  instance Module CheckModule () where     moduleCmds   _     = ["check"]@@ -20,35 +20,32 @@     process _ _ to _ s = ios80 to (check s)  binary :: String-binary = "./quickcheck"+binary = "mueval"  check :: String -> IO String check src = do-    case parseExpr src of-        Left e  -> return e+    -- first, verify the source is actually a Haskell 98 expression, to+    -- avoid code injection bugs.+    case parseExpr (decodeString src) of+        Left  e -> return e         Right _ -> do-            (out,err,_) <- popen binary [] (Just src)-            let o = munge out-                e = munge err-            return $ case () of {_-                | null o && null e -> "Terminated\n"-                | null o           -> " " ++ e-                | otherwise        -> " " ++ o-            }-            where munge = unlines-                        . f-                        . lines-                        . expandTab-                        . dropWhile (=='\n')-                        . dropNL-                        . clean_-                  f []   = []-                  f [x]  = [x]-                  f (x:y)= [x ++ " " ++ (concat . intersperse ", ") y]+            l <- findFile "L.hs"+            (out,err,_) <- popen binary ["--loadfile=", l, "-E", "-e", "myquickcheck $ " ++ src] Nothing+            case (out,err) of+                ([],[]) -> return "Terminated\n"+                _       -> do+                    let o = munge out+                        e = munge err+                    return $ case () of {_+                        | null o && null e -> "Terminated\n"+                        | null o           -> " " ++ e+                        | otherwise        -> " " ++ o+                    } ------ Clean up runplugs' output---+munge :: String -> String+munge = expandTab . dropWhile (=='\n') . dropNL . clean_++-- Clean up check's output clean_ :: String -> String clean_ s|  no_io      `matches'`    s = "No IO allowed\n"         |  terminated `matches'`    s = "Terminated\n"
Plugin/Code.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE TemplateHaskell, FlexibleInstances, MultiParamTypeClasses, PatternGuards #-} -- -- Copyright (c) 2005-6 Don Stewart - http://www.cse.unsw.edu.au/~dons -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)@@ -8,8 +9,9 @@ module Plugin.Code where  import Plugin+import Text.Regex -PLUGIN Code+$(plugin "Code")  instance Module CodeModule [FilePath] where @@ -45,7 +47,7 @@  -- give up: getRandSrcOf :: [String] -> Int -> IO String-getRandSrcOf s 0 | s == []   = return [] +getRandSrcOf s 0 | s == []   = return []                  | otherwise = return $ head s  -- otherwise get a random src line@@ -75,4 +77,4 @@               imports = mkRegex "^import"               wheres  = mkRegex "^ *where"               mods    = mkRegex "module"-        +
Plugin/Compose.hs view
@@ -1,12 +1,9 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, PatternGuards #-} -- Copyright (c) 2005 Don Stewart - http://www.cse.unsw.edu.au/~dons -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)--- --- -- Another progressive plugin. Compose two (for now) plugins transparently -- A sort of mini interpreter. Could do with some more thinking.--- module Plugin.Compose (theModule) where  import Plugin@@ -16,7 +13,7 @@ import Control.Arrow (first) import GHC.IOBase   (Exception(NoMethodError)) -PLUGIN Compose+$(plugin "Compose")  instance Module ComposeModule () where     moduleCmds _   = [".", "compose", "@", "?"]@@ -53,13 +50,13 @@ -- lookupP :: Message a => (a, Nick) -> String -> LB (String -> LB [String]) lookupP (a,b) cmd = withModule ircCommands cmd-    (error $ "Unknown command: " ++ show cmd) +    (error $ "Unknown command: " ++ show cmd)     (\m -> do         privs <- gets ircPrivCommands -- no priv commands can be composed         when (cmd `elem` privs) $ error "Privledged commands cannot be composed"-        bindModule1 $ \str -> catchError +        bindModule1 $ \str -> catchError                     (process m a b cmd str)-                    (\ex -> case (ex :: IRCError) of +                    (\ex -> case (ex :: IRCError) of                                 (IRCRaised (NoMethodError _)) -> process_ m cmd str                                 _ -> throwError ex)) @@ -72,7 +69,7 @@ evalBracket a args = liftM (map addSpace . concat') $ mapM (evalExpr a) $ fst $ parseBracket 0 True args  where concat' ([x]:[y]:xs) = concat' ([x++y]:xs)        concat' xs           = concat xs-       +        addSpace :: String -> String        addSpace (' ':xs) = ' ':xs        addSpace xs       = ' ':xs
Plugin/DarcsPatchWatch.hs view
@@ -1,11 +1,9 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-}+ -- Copyright (c) 2005 Stefan Wehr (http://www.stefanwehr.de) -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)--- --- -- | Watch darcs patches arriving...--- module Plugin.DarcsPatchWatch (theModule) where  import Plugin@@ -13,7 +11,7 @@ import qualified Data.ByteString.Char8 as P import Prelude hiding ( catch ) -import Control.Concurrent+import Control.Concurrent (forkIO, killThread, modifyMVar_, readMVar, threadDelay, MVar, ThreadId) import Control.Exception import Control.Monad       ( when ) @@ -21,7 +19,7 @@ import System.Time import Message -PLUGIN DarcsPatchWatch+$(plugin "DarcsPatchWatch")   --@@ -37,7 +35,7 @@ announceTarget :: Nick announceTarget = Nick {   nTag  = "freenode",-  nName = "#lazybottoms-dev"+  nName = "#haskell"   }  inventoryFile :: String@@ -160,7 +158,7 @@                 return ["maximum number of repositories reached!"]             | r `elem` repos ->                 return ["cannot add already existing repository " ++ showRepo r]-            | otherwise -> +            | otherwise ->                 do setRepos (r:repos)                    return ["repository " ++ showRepo r ++ " added"]             }@@ -224,7 +222,7 @@                       forkIO $ do                           g                           return ()-          +  -- actually work out if we need to send a message --
Plugin/Dice.hs view
@@ -1,8 +1,7 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-} -- | This module is for throwing dice for e.g. RPGs. (\@dice 3d6+2)---+ -- Copyright Einar Karttunen <ekarttun@cs.helsinki.fi> 2005-04-06.--- module Plugin.Dice (theModule) where  import Plugin@@ -11,7 +10,7 @@ import System.Random                    (randomRIO) import Text.ParserCombinators.Parsec -PLUGIN Dice+$(plugin "Dice")  instance Module DiceModule () where     moduleCmds   _  = ["dice"]
Plugin/Dict.hs view
@@ -1,13 +1,12 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, PatternGuards #-} -- | DICT (RFC 2229) Lookup Module for lambdabot IRC robot. -- Tom Moertel <tom@moertel.com>--- module Plugin.Dict (theModule) where  import Plugin import qualified Plugin.Dict.DictLookup as Dict -PLUGIN Dict+$(plugin "Dict")  -- | This is the module handler.  Here we process commands from users. @@ -98,7 +97,7 @@ -- --     (1) firefly --     (2) "c'est la vie"---     (3) 'pound cake' +--     (3) 'pound cake' --     (4) 'rock n\' roll' --     (5) et\ al 
Plugin/Djinn.hs view
@@ -1,24 +1,20 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, PatternGuards, TypeSynonymInstances #-} -- Copyright (c) 2005 Donald Bruce Stewart - http://www.cse.unsw.edu.au/~dons -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)--- + -- Written: Mon Dec 12 10:16:56 EST 2005--- --- -- | A binding to Djinn.--- module Plugin.Djinn (theModule) where  import Plugin-import System.Directory import Data.Char import Data.List import Data.Maybe  import qualified Text.Regex as R -PLUGIN Djinn+$(plugin "Djinn")  -- | We can accumulate an interesting environment type DjinnEnv = ([Decl] {- prelude -}, [Decl])@@ -41,20 +37,15 @@                             ,"djinn-del"                             ,"djinn-env"                             ,"djinn-names"-                            ,"djinn-clr" +                            ,"djinn-clr"                             ,"djinn-ver"]          moduleSerialize _ = Nothing -- Just listSerial          -- this means djinn better be visible at boot time         moduleDefState  _ = do-            -- check that's djinn's there, otherwise don't bother -            d <- io $ doesFileExist binary-            if not d-                then do io $ debugStrLn "Plugin.Djinn: couldn't find djinn binary"-                        return ([],[])-                else do st <- io $ getDjinnEnv ([],[]) -- get the prelude-                        return (either (const []) snd{-!-} st, [])+                st <- io $ getDjinnEnv ([],[]) -- get the prelude+                return (either (const []) snd{-!-} st, [])          -- rule out attempts to do IO, if these get into the env,         -- they'll be executed by djinn@@ -66,12 +57,16 @@         process_ _ "djinn" s = do                 (_,env) <- readMS                 e       <- io $ djinn env $ ":set +sorted" <$> "f ?" <+> dropForall s-                return $ either id (tail . lines) e+                return $ either id (parse . lines) e             where-            dropForall t-                | Just (_, _, x, _) <- R.matchRegexAll re t = x-                | otherwise = t-            re = regex' "^forall [[:alnum:][:space:]]+\\."+              dropForall t+                  | Just (_, _, x, _) <- R.matchRegexAll re t = x+                  | otherwise = t+              re = regex' "^forall [[:alnum:][:space:]]+\\."+              parse :: [String] -> [String]+              parse x = if length x < 2+                        then ["No output from Djinn; installed?"]+                        else tail x          -- Augment environment. Have it checked by djinn.         process_ _ "djinn-add"  s = do@@ -103,7 +98,7 @@             eenv <- io $ djinn env $ ":delete" <+> dropSpace s <$> ":environment"             case eenv of                 Left e     -> return [head e]-                Right env' -> do +                Right env' -> do                     modifyMS $ \(prel,_) ->                         (prel,filter (\p -> p `notElem` prel) . nub . lines $ env')                     return []@@ -118,7 +113,7 @@  -- | Should be built inplace by the build system binary :: String-binary = "./djinn"+binary = "djinn"  -- | Extract the default environment getDjinnEnv :: DjinnEnv -> IO (Either [String] DjinnEnv)@@ -135,15 +130,19 @@ djinn env' src = do     let env = concat . intersperse "\n" $ env'     (out,_,_) <- popen binary [] (Just (env <$> src <$> ":q"))-    let o = dropNL . clean_ . unlines . init . drop 2 . lines $ out+    let safeInit [] = []+        safeInit xs = init xs+        o = dropNL . clean_ . unlines . safeInit . drop 2 . lines $ out     return $ case () of {_-        | failed `matches'` o -> Left (lines o)-        | unify  `matches'` o -> Left (lines o)+        | failed `matches'` o ||+          unify  `matches'` o ||+          err    `matches'` o -> Left (lines o)         | otherwise                          -> Right o     }     where         failed = regex' "Cannot parse command"         unify  = regex' "cannot be realized"+        err = regex' "^Error:"  -- -- Clean up djinn output
Plugin/Dummy.hs view
@@ -1,7 +1,6 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-} -- | Simple template module -- Contains many constant bot commands.--- module Plugin.Dummy (theModule) where  import Plugin@@ -11,7 +10,7 @@ import qualified Data.Map as M import qualified Data.ByteString.Char8 as P -PLUGIN Dummy+$(plugin "Dummy")  instance Module DummyModule () where @@ -56,7 +55,7 @@ pastebinMsg = "Haskell pastebin: http://hpaste.org/new"  dummylst :: [(String, String -> String)]-dummylst = +dummylst =     [("id",      (' ' :) . id)     ,("read",    (' ' :) . filter (/= '\n') . read)     ,("show",       show)@@ -73,6 +72,7 @@     ,("thanks",     const "you are welcome")     ,("thx",        const "you are welcome")     ,("thank you",  const "you are welcome")+    ,("ping",	    const "pong")      ,("wiki",       lookupWiki)     ,("oldwiki",     ("http://www.haskell.org/hawiki/" ++))
Plugin/Dummy/DocAssocs.hs view
@@ -7,39 +7,39 @@ -- pack all these strings  base :: P.ByteString-base = P.pack "4"+base = P.pack "base" stm :: P.ByteString-stm  = P.pack "3"+stm  = P.pack "stm" mtl :: P.ByteString-mtl  = P.pack "3"+mtl  = P.pack "mtl" fgl :: P.ByteString-fgl  = P.pack "3"+fgl  = P.pack "fgl" qc  :: P.ByteString-qc   = P.pack "0"+qc   = P.pack "QuickCheck" hunit  :: P.ByteString-hunit = P.pack "5"+hunit = P.pack "bytestring" parsec  :: P.ByteString-parsec = P.pack "6"+parsec = P.pack "parsec" unix  :: P.ByteString-unix   = P.pack "4"+unix   = P.pack "unix" readline :: P.ByteString-readline = P.pack "8"+readline = P.pack "readline" network :: P.ByteString-network  = P.pack "7"+network  = P.pack "network" th :: P.ByteString-th       = P.pack "6"+th       = P.pack "template-haskell" hs :: P.ByteString hs       = P.pack "1" cabal :: P.ByteString-cabal    = P.pack "5"+cabal    = P.pack "Cabal" hgl :: P.ByteString hgl      = P.pack "3" glut :: P.ByteString-glut     = P.pack "4"+glut     = P.pack "GLUT" x11 :: P.ByteString x11      = P.pack "3" opengl :: P.ByteString-opengl   = P.pack "6"+opengl   = P.pack "OpenGL"  docAssocs :: M.Map P.ByteString P.ByteString docAssocs = {-# SCC "Dummy.DocAssocs" #-} M.fromList [
Plugin/Dynamic.hs view
@@ -1,7 +1,7 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-} -- Copyright (c) 2004-06 Don Stewart - http://www.cse.unsw.edu.au/~dons -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)--- +-- -- | Dynamic module, binding to the dynamic linker -- module Plugin.Dynamic (theModule) where@@ -9,7 +9,7 @@ import Plugin import Control.Monad.State -PLUGIN Dynamic+$(plugin "Dynamic")  instance Module DynamicModule () where 
Plugin/Elite.hs view
@@ -1,10 +1,9 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-} -- (c) Josef Svenningsson, 2005 -- Licence: No licence, public domain---+ -- Inspired by the following page: -- http://www.microsoft.com/athome/security/children/kidtalk.mspx--- module Plugin.Elite (theModule) where  import Plugin@@ -13,7 +12,7 @@ import Control.Arrow import Control.Monad.State -PLUGIN Elite+$(plugin "Elite")  instance Module EliteModule () where     moduleCmds _   = ["elite"]
Plugin/Eval.hs view
@@ -1,24 +1,24 @@---++{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, PatternGuards #-} -- Copyright (c) 2004-6 Donald Bruce Stewart - http://www.cse.unsw.edu.au/~dons -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)--- --- -- | A Haskell evaluator for the pure part, using plugs--- module Plugin.Eval where +import File (findFile) import Plugin-import Lib.Parser-import Language.Haskell.Parser-import Language.Haskell.Syntax hiding (Module)+import Lambdabot.Parser+import Language.Haskell.Exts.Parser+import Language.Haskell.Exts.Syntax hiding (Module) import qualified Text.Regex as R import System.Directory import System.Exit-+import Codec.Binary.UTF8.String (decodeString) import qualified Data.ByteString.Char8 as P+import Control.Exception (try) -PLUGIN Plugs+$(plugin "Plugs")  instance Module PlugsModule () where     moduleCmds   _             = ["run","let","undefine"]@@ -27,16 +27,19 @@     moduleHelp _ _             = "run <expr>. You have Haskell, 3 seconds and no IO. Go nuts!"     process _ _ to "run" s     = ios80 to (plugs s)     process _ _ to "let" s     = ios80 to (define s)-    process _ _ _ "undefine" _ = do io $ copyFile "State/Pristine.hs" "State/L.hs"-                                    x <- io $ comp Nothing-                                    return [x]+    process _ _ _ "undefine" _ = do l <- io $ findFile "L.hs"+                                    p <- io $ findFile "Pristine.hs"+                                    io $ copyFile p l+--                                    x <- io $ comp Nothing+--                                    return [x]+                                    return []      contextual _ _ to txt         | isEval txt = ios80 to . plugs . dropPrefix $ txt         | otherwise  = return []  binary :: String-binary = "./runplugs"+binary = "mueval"  isEval :: String -> Bool isEval = ((evalPrefixes config) `arePrefixesWithSpaceOf`)@@ -46,12 +49,8 @@  plugs :: String -> IO String plugs src = do-    -- first, verify the source is actually a Haskell 98 expression, to-    -- avoid code injection bugs.-    case parseExpr src of-        Left  e -> return e-        Right _ -> do-            (out,err,_) <- popen binary [] (Just src)+            load <- findFile "L.hs"+            (out,err,_) <- popen binary ["-E", "--timelimit=", "10", "-l", load, "--expression=" ++ src] Nothing             case (out,err) of                 ([],[]) -> return "Terminated\n"                 _       -> do@@ -67,8 +66,8 @@ -- define a new binding  define :: String -> IO String-define src = case parseModule (src ++ "\n") of -- extra \n so comments are parsed correctly-    (ParseOk (HsModule _ _ (Just [HsEVar (UnQual (HsIdent "main"))]) [] ds)) +define src = case parseModule (decodeString src ++ "\n") of -- extra \n so comments are parsed correctly+    (ParseOk (HsModule _ _ (Just [HsEVar (UnQual (HsIdent "main"))]) [] ds))         | all okay ds -> comp (Just src)     (ParseFailed _ e) -> return $ " " ++ e     _                 -> return "Invalid declaration"@@ -82,29 +81,33 @@ -- It parses. then add it to a temporary L.hs and typecheck comp :: Maybe String -> IO String comp src = do-    copyFile "State/L.hs" "L.hs"+    l <- findFile "L.hs"+    -- Note we copy to .L.hs, not L.hs. This hides the temporary files as dot-files+    copyFile l ".L.hs"     case src of         Nothing -> return () -- just reset from Pristine-        Just s  -> P.appendFile "L.hs" (P.pack (s  ++ "\n"))+        Just s  -> P.appendFile ".L.hs" (P.pack (s  ++ "\n")) -    -- and compile Local.hs+    -- and compile .L.hs     -- careful with timeouts here. need a wrapper.     (o',e',c) <- popen "ghc" ["-O","-v0","-c"                              ,"-Werror"-                             ,"-odir", "State/"-                             ,"-hidir","State/"-                             ,"L.hs"] Nothing+--                             ,"-odir", "State/"+--                             ,"-hidir","State/"+                             ,".L.hs"] Nothing+    -- cleanup, in case of error the files are not generated+    try $ removeFile ".L.hi"+    try $ removeFile ".L.o"      case (munge o', munge e') of         ([],[]) | c /= ExitSuccess -> return "Error."                 | otherwise -> do-                    renameFile "L.hs" "State/L.hs"-                    renameFile "State/L.hi" "L.hi"-                    renameFile "State/L.o" "L.o"+                    renameFile ".L.hs" l                     return (maybe "Undefined." (const "Defined.") src)-        (ee,[]) -> return (concat . intersperse " " . lines $ ee)-        (_ ,ee) -> return (concat . intersperse " " . lines $ ee)+        (ee,[]) -> return ee+        (_ ,ee) -> return ee + -- test cases -- lambdabot> undefine -- Undefined.@@ -117,7 +120,7 @@ -- 2 -- lambdabot> let type Z = Int -- Defined.--- lambdabot> let newtype P = P Int +-- lambdabot> let newtype P = P Int -- Defined. -- lambdabot> > L.P 1 :: L.P --  add an instance declaration for (Show L.P)@@ -138,13 +141,8 @@ -- clean_ :: String -> String clean_ s|  no_io      `matches'`    s = "No IO allowed\n"-        |  terminated `matches'`    s = "Terminated\n"-        |  hput       `matches'`    s = "Terminated\n"-        |  outofmem   `matches'`    s = "Terminated\n"-        |  stack_o_f  `matches'`    s = "Stack overflow\n"-        |  loop       `matches'`    s = "Loop\n"-        |  undef      `matches'`    s = "Undefined\n"         |  type_sig   `matches'`    s = "Add a type signature\n"+        |  enomem     `matches'`    s = "Tried to use too much memory\n"          | Just (_,m,_,_) <- ambiguous  `R.matchRegexAll` s = m         | Just (_,_,b,_) <- inaninst   `R.matchRegexAll` s = clean_ b@@ -163,24 +161,19 @@         -- s/<[^>]*>:[^:]: //         type_sig   = regex' "add a type signature that fixes these type"         no_io      = regex' "No instance for \\(Show \\(IO"-        terminated = regex' "waitForProc"-        stack_o_f  = regex' "Stack space overflow"-        loop       = regex' "runplugs: <<loop>>"         irc        = regex' "\n*<irc>:[^:]*:[^:]*:\n*"         filename   = regex' "\n*<[^>]*>:[^:]*:\\?[^:]*:\\?\n* *"         filename'  = regex' "/tmp/.*\\.hs[^\n]*\n"         filepath   = regex' "\n*/[^\\.]*.hs:[^:]*:\n* *"-        undef      = regex' "Prelude.undefined"         ambiguous  = regex' "Ambiguous type variable `a\' in the constraints"         runplugs   = regex' "runplugs: "         notinscope = regex' "Variable not in scope:[^\n]*"         hsplugins  = regex' "Compiled, but didn't create object"-        outofmem   = regex' "out of memory \\(requested "         extraargs  = regex' "[ \t\n]*In the [^ ]* argument"         columnnum  = regex' " at <[^\\.]*\\.[^\\.]*>:[^ ]*"         nomatch    = regex' "Couldn't match[^\n]*\n"         inaninst   = regex' "^[ \t]*In a.*$"-        hput       = regex' "<stdout>: hPutStr"+        enomem     = regex' "^Heap exhausted"  ------------------------------------------------------------------------ --
Plugin/FT.hs view
@@ -1,13 +1,12 @@------ | Free theorems plugin, +{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-}+-- | Free theorems plugin, -- Don Stewart 2006---  module Plugin.FT where  import Plugin import Plugin.Type (query_ghci) -PLUGIN FT+$(plugin "FT")  instance Module FTModule () where     moduleCmds _   = ["ft"]@@ -15,7 +14,7 @@     process_ _ _ s = (liftM unlines . lift . query_ghci ":t") s >>= ios . ft  binary :: String-binary = "./ft"+binary = "ftshell"  ft :: String -> IO String ft src = run binary src $
Plugin/Fact.hs view
@@ -1,4 +1,4 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, TypeSynonymInstances #-} -- Module    : Fact -- Copyright : 2003 Shae Erisson -- Copyright : 2005-06 Don Stewart@@ -7,7 +7,6 @@ -- -- Quick ugly hack to get factoids in lambdabot.  This is a rewrite of -- Shae's original code to use internal module states. jlouis--- module Plugin.Fact (theModule) where  import Plugin@@ -16,7 +15,7 @@  ------------------------------------------------------------------------ -PLUGIN Fact+$(plugin "Fact")  type FactState  = M.Map P.ByteString P.ByteString type FactWriter = FactState -> LB ()
− Plugin/Figlet.hs
@@ -1,51 +0,0 @@------ Copyright (c) 2006 Maxime Henrion <mux@FreeBSD.org>--- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)---------- Call the `figlet' program-----module Plugin.Figlet where--import Plugin--PLUGIN Figlet--instance Module FigletModule () where-    moduleCmds _ = ["figlet", "figlet'"]-    moduleHelp _ = fromJust . flip lookup help--    process_ _ "figlet" s = do-        let usage = ["usage: figlet <text>."]-        case words s of-          [] -> return usage-          t -> io (figlet (unwords t) Nothing)--    process_ _ "figlet'" s = do-        let usage = ["usage: figlet' <font> <text>."]-        case words s of-          (f:t@(_:_)) -> io (figlet (unwords t) (Just f))-          _ -> return usage---- | Lookup table for documentation-help :: [(String, String)]-help =-    [("figlet", "figlet <text>. Run the figlet filter on <text>."),-     ("figlet'", "figlet' <font> <text>. Like figlet but using font <font>.")]--figletBinary :: FilePath-figletBinary = "/usr/local/bin/figlet"---- | Run the actual figlet command and clean output-figlet :: String -> Maybe String -> IO [String]-figlet s f = do-        let args = ["-w", "70"          -- Limit width to 70 characters-                   ,"-f", fromMaybe "standard" f-                   ,s]-        (out,_,_) <- popen figletBinary args Nothing-        return $ result out--    where result [] = ["Couldn't run the figlet command."]-          result xs = filter (not . all (==' ')) . lines $ xs
Plugin/Filter.hs view
@@ -1,13 +1,13 @@------ | GNU Talk Filters +{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-}+-- | GNU Talk Filters -- needs: http://www.hyperrealm.com/main.php?s=talkfilters -- Edward Kmett 2006--- + module Plugin.Filter where  import Plugin -PLUGIN Filter+$(plugin "Filter")  instance Module FilterModule () where         moduleCmds _   = ["austro","b1ff","brooklyn","chef","cockney","drawl","dubya","fudd","funetak","jethro","jive","kraut","pansy","pirate","postmodern","redneck","valspeak","warez"]
Plugin/Free.hs view
@@ -1,14 +1,13 @@------ | Free theorems plugin, +{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-}+-- | Free theorems plugin -- Andrew Bromage, 2006---  module Plugin.Free where  import Plugin import Plugin.Free.FreeTheorem import Plugin.Type (query_ghci) -PLUGIN Free+$(plugin "Free")  instance Module FreeModule () where     moduleCmds _  = ["free"]
Plugin/Fresh.hs view
@@ -1,12 +1,12 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-}+ -- | Haskell project name generation -- semi-joke--- module Plugin.Fresh (theModule) where  import Plugin -PLUGIN Fresh+$(plugin "Fresh")  instance Module FreshModule Integer where     moduleCmds      _ = ["freshname"]
Plugin/Haddock.hs view
@@ -1,6 +1,5 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, TypeSynonymInstances #-} -- | Hackish Haddock module.--- module Plugin.Haddock (theModule) where  import Plugin@@ -9,7 +8,7 @@ import qualified Data.ByteString.Char8 as P import Data.ByteString.Char8 (ByteString,pack) -PLUGIN Haddock+$(plugin "Haddock")  type HaddockState = M.Map ByteString [ByteString] 
Plugin/Hello.hs view
@@ -1,12 +1,12 @@ -- -- | Hello world plugin--- +-- module Plugin.Hello where -PLUGIN Hello+$(plugin "Hello")  instance Module Hello () where     moduleCmds _  = ["hello","goodbye"]-    moduleHelp _  = "hello/goodbye <arg>. Simplest possible plugin" +    moduleHelp _  = "hello/goodbye <arg>. Simplest possible plugin"     process_ _ xs = return ["Hello world. " ++ xs] 
Plugin/Help.hs view
@@ -1,12 +1,11 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-} -- | Provide help for plugins--- module Plugin.Help (theModule) where  import Plugin import Control.Exception    (Exception(..), evaluate) -PLUGIN Help+$(plugin "Help")  instance Module HelpModule () where     moduleHelp _ _ = "help <command>. Ask for help for <command>. Try 'list' for all commands"
Plugin/Hoogle.hs view
@@ -1,17 +1,14 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, TypeSynonymInstances #-}+ -- Copyright (c) 2004-5 Don Stewart - http://www.cse.unsw.edu.au/~dons -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)--- ------ Talk to Neil Mitchell's `Hoogle' program----+-- | Talk to Neil Mitchell's `Hoogle' program module Plugin.Hoogle (theModule) where  import Plugin -PLUGIN Hoogle+$(plugin "Hoogle")  type HoogleState = [String] @@ -36,10 +33,7 @@ ------------------------------------------------------------------------  hoogleBinary :: FilePath-hoogleBinary = "./hoogle"--hoogleText :: FilePath-hoogleText = "State/hoogle.txt"+hoogleBinary = "hoogle"  -- arbitrary cutoff point cutoff :: Int@@ -48,14 +42,11 @@ -- | Actually run the hoogle binary hoogle :: String -> IO [String] hoogle s = do-        let args = ["--count", "20"-                   ,"-l", hoogleText-                   ,"--verbose"-                   ,s]+        let args = ["--count=20", s]         (out,err,_) <- popen hoogleBinary args (Just "")         return $ result out err -    where result [] [] = ["A Hoogle error occured."]+    where result [] [] = ["A Hoogle error occurred."]           result [] ys = [ys]           result xs _  =                 let xs' = map toPair $ lines xs
Plugin/IRC.hs view
@@ -1,6 +1,6 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-} -- | The plugin-level IRC interface.---+ module Plugin.IRC (theModule) where  import Control.Concurrent( forkIO, newQSem, waitQSem, threadDelay, signalQSem,@@ -14,7 +14,7 @@ import System.IO (hGetLine, hPutStr, hPutStrLn, hSetBuffering, BufferMode(NoBuffering), stderr, hClose) import qualified Data.ByteString.Char8 as P -PLUGIN IRC+$(plugin "IRC")  instance Module IRCModule () where     modulePrivs  _         = ["irc-connect"]
Plugin/Instances.hs view
@@ -1,18 +1,19 @@+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-} {- | A module to output the instances of a typeclass.      Some sample input\/output:  > lambdabot> @instances Monad-> [], ArrowMonad a, WriterT w m, Writer w, ReaderT r m, Reader r, -> StateT s m, State s, RWST r w s m, RWS r w s, ErrorT e m, Either e, +> [], ArrowMonad a, WriterT w m, Writer w, ReaderT r m, Reader r,+> StateT s m, State s, RWST r w s m, RWS r w s, ErrorT e m, Either e, > ContT r m, Cont r, Maybe, ST s, IO-> +> > lambdabot> @instances Show-> Float, Double, Integer, ST s a, [a], (a, b, c, d), (a, b, c), (a, b), +> Float, Double, Integer, ST s a, [a], (a, b, c, d), (a, b, c), (a, b), > (), Ordering, Maybe a, Int, Either a b, Char, Bool-> +> > lambdabot> @instances-importing Text.Html Data.Tree Show-> Float, Double, Tree a, HtmlTable, HtmlAttr, Html, HotLink, Integer, -> ST s a, [a], (a, b, c, d), (a, b, c), (a, b), (), Ordering, Maybe a, +> Float, Double, Tree a, HtmlTable, HtmlAttr, Html, HotLink, Integer,+> ST s a, [a], (a, b, c, d), (a, b, c), (a, b), (), Ordering, Maybe a, > Int -} @@ -26,7 +27,7 @@ type ClassName  = String type ModuleName = String -PLUGIN Instances+$(plugin "Instances")  instance Module InstancesModule () where     moduleCmds _ = map fst help@@ -72,7 +73,7 @@ parseInstance cls = fmap dropSpace . eitherToMaybe                     . parse (instanceP cls) "GHCi output" --- | Split the input into a list of the instances, then run each instance +-- | Split the input into a list of the instances, then run each instance --   through the parser. Collect successes. getInstances :: String -> ClassName -> [Instance] getInstances s cls@@ -88,7 +89,7 @@                                [ isAlpha c,                                  isSpace c,                                  c `elem` "()" ])-          unbracket str | head str == '(' && last str == ')' && +          unbracket str | head str == '(' && last str == ')' &&                           all (/=',') str && notOperator str && str /= "()" =                           init $ tail str                         | otherwise = str@@ -105,7 +106,7 @@                          "State", "Trans", "Writer" ]           controls = map ("Control." ++) $ monads ++ ["Arrow"] --- | Main processing function for \@instances. Takes a class name and +-- | Main processing function for \@instances. Takes a class name and --   return a list of lines to output (which will actually only be one). fetchInstances :: ClassName -> LB [String] fetchInstances cls =  do
Plugin/Karma.hs view
@@ -1,6 +1,5 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, TypeSynonymInstances #-} -- | Karma--- module Plugin.Karma (theModule) where  import Plugin@@ -9,7 +8,7 @@ import qualified Data.Map as M import Text.Printf -PLUGIN Karma+$(plugin "Karma")  type KarmaState = M.Map Msg.Nick Integer type Karma m a = ModuleT KarmaState m a
Plugin/Localtime.hs view
@@ -1,17 +1,15 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, TypeSynonymInstances #-} -- Copyright (c) 2005 Don Stewart - http://www.cse.unsw.edu.au/~dons -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)---+ -- | Simple wrapper over privmsg to get time information via the CTCP------ module Plugin.Localtime (theModule) where  import Plugin import qualified Data.Map as M import qualified Message as Msg -PLUGIN Localtime+$(plugin "Localtime")  type TimeMap = M.Map Msg.Nick  -- the person who's time we requested                     [Msg.Nick] -- a list of targets waiting on this time
Plugin/Log.hs view
@@ -1,5 +1,6 @@-{-# OPTIONS -w #-}---+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, TypeSynonymInstances #-}+ -- Copyright (c) 2004 Thomas Jaeger -- Copyright (c) 2005 Simon Winwood -- Copyright (c) 2005 Don Stewart@@ -14,9 +15,9 @@  import Control.Monad (when) import qualified Data.Map as M-import System.Time  -import Lib.Util ( timeStamp )-import System.Directory (createDirectoryIfMissing) +import System.Time+import Lambdabot.Util ( timeStamp )+import System.Directory (createDirectoryIfMissing)  -- ------------------------------------------------------------------------ @@ -26,8 +27,7 @@  type DateStamp = (Int, Month, Int) data ChanState = CS { chanHandle  :: Handle,-                      chanDate    :: DateStamp,-                      chanHistory :: [Event] }+                      chanDate    :: DateStamp }                deriving (Show, Eq) type LogState = M.Map Channel ChanState @@ -93,7 +93,7 @@          now <- io getClockTime          -- map over the channels this message was directed to, adding to each          -- of their log files.-         mapM_ (\c -> withValidLog (doLog c f msg) now c) (Msg.channels msg)+         mapM_ (withValidLog (doLog f msg) now) (Msg.channels msg)        Nothing -> return ()      return [] @@ -101,10 +101,9 @@            --             /= (lowerCaseString . head $ Msg.channels m)            --             -- We don't log /msgs to the lambdabot -           doLog chan f m hdl ct = do+           doLog f m hdl ct = do              let event = f m ct              logString hdl (show event)-             appendEvent chan event  -- process _ _ _ "last" rest = showHistory rest -- process _ _ _ "print-logs" _ = fmap ((:[]) . show) readMS@@ -122,20 +121,6 @@     filterOneNick (Parted who' _ _)    = who == who'     filterOneNick (Renick old _ _ new) = who == old || who == new --- | Show the last 10 (or whatever) lines from the channel, in reverse order.-showHistory :: Msg.Message m => m -> String -> Log [String]-showHistory msg args = do-  st <- readMS-  case M.lookup chan' st of-    Just cs -> let his = chanHistory cs-               in return [unlines . reverse . map show-                          . take nLines'.  reverse $ lines' his]-    Nothing -> return ["I haven't got any logs for that channel."]-  where chan:nLines:nick:_ = map listToMaybeAll (words args ++ repeat "")-        chan'     = Msg.readNick msg $ fromMaybe (error "The channel name is required") chan-        nLines'   = maybe numLastLines read nLines-        lines' fm = maybe fm (\n -> filterNick (Msg.readNick msg n) fm) nick- -- * Event -> String helpers -- @@ -159,7 +144,7 @@ cleanLogState :: Log () cleanLogState =     withMS $ \state writer -> do-      io $ M.fold (\(CS hdl _ _) iom -> iom >> hClose hdl) (return ()) state+      io $ M.fold (\cs iom -> iom >> hClose (chanHandle cs)) (return ()) state       writer M.empty  -- | Fetch a channel from the internal map. Uses LB's fail if not found.@@ -170,33 +155,26 @@ getDate c = fmap chanDate . getChannel $ c  getHandle :: Channel -> Log Handle-getHandle c = fmap chanHandle . getChannel $ c +getHandle c = fmap chanHandle . getChannel $ c     -- add points. otherwise:     -- Unbound implicit parameters (?ref::GHC.IOBase.MVar LogState, ?name::String)     --  arising from instantiating a type signature at     -- Plugin/Log.hs:187:30-39     -- Probable cause: `getChannel' is applied to too few arguments -{-getHistory :: Channel -> Log [Event]-getHistory = fmap chanHistory . getChannel-}---- | Put a DateStamp and a Handle. Used by 'openChannelFile' and +-- | Put a DateStamp and a Handle. Used by 'openChannelFile' and --  'reopenChannelMaybe'. putHdlAndDS :: Channel -> Handle -> DateStamp -> Log ()-putHdlAndDS c hdl ds = -  modifyMS (M.adjust (\(CS _ _ his) -> CS hdl ds his) c)+putHdlAndDS c hdl ds =+        modifyMS (M.adjust (\cs -> cs {chanHandle = hdl, chanDate = ds}) c) --- | Append an event to the history of a channel-appendEvent :: Channel -> Event -> Log ()-appendEvent c e =-  modifyMS (M.adjust (\(CS hdl ds his) -> CS hdl ds (his ++ [e])) c)  -- * Logging IO --  -- | Open a file to write the log to. openChannelFile :: Channel -> ClockTime -> Log Handle-openChannelFile chan ct = +openChannelFile chan ct =     io $ createDirectoryIfMissing True dir >> openFile file AppendMode     where dir  = outputDir config </> "Log" </> Msg.nTag chan </> Msg.nName chan           date = dateStamp ct@@ -206,7 +184,7 @@ reopenChannelMaybe :: Channel -> ClockTime -> Log () reopenChannelMaybe chan ct = do   date <- getDate chan-  when (date /= dateStamp ct) $ do +  when (date /= dateStamp ct) $ do     hdl <- getHandle chan     io $ hClose hdl     hdl' <- openChannelFile chan ct@@ -218,7 +196,7 @@   chanp <- liftM (M.member chan) readMS   unless chanp $ do     hdl <- openChannelFile chan ct-    modifyMS (M.insert chan $ CS hdl (dateStamp ct) [])+    modifyMS (M.insert chan $ CS hdl (dateStamp ct))  -- | Ensure that the log is correctly initialised etc. withValidLog :: (Handle -> ClockTime -> Log a) -> ClockTime -> Channel -> Log a
− Plugin/Maya.hs
@@ -1,84 +0,0 @@------ Copyright (c) 2004 Donald Bruce Stewart - http://www.cse.unsw.edu.au/~dons--- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)---------- maya, useful commands for #maya---------- TEMP:---- current temperature at UNSW--- 'temp' is the following script, with line breaks for readability. Should be--- converted into a MiniHTTP call and a regex:------- PAGE='http://www.bom.gov.au/products/IDN65066.shtml'--- --- w3m -dump_source $PAGE | perl -naWF", " -e '--- sub f($) {- --        my $i = shift @_;---         return ($i == -9999) ? "-" : sprintf "%.1f", $i;--- }--- --- if (/DATA.*Sydney Airport/) {--- printf "now %s°, min %s°, max %s°, rain %smm, wind %dkm/h%s\n", ---         f($F[3]),f($F[11]),f($F[13]),f($F[10]),$F[7], $F[6];--- exit--- }'------------------------------------------------------------------------------- --- FORECAST:------PAGE='http://www.bom.gov.au/cgi-bin/wrap_fwo.pl?IDN10064.txt'------w3m -dump_source $PAGE | perl -nW -e '---if (/Issued at/) {---        $_ =~ s/ on.*$/./ and print $_;---        while (<>) {---                next if (/^\s*$/ or /Precis/ or /Liver|Penrith|Richm/);---                print;---                exit if /UV Index/;---        }---}' | sed 's/  / /g; s/ *$//' | perl -p -e 's/\n/ / if $. == 1'-----module Plugin.Maya where--import Plugin-import Control.Monad.Trans      ( liftIO        )--newtype MayaModule = MayaModule ()--theModule :: MODULE-theModule = MODULE $ MayaModule ()--instance Module MayaModule () where-        moduleHelp _ s = case s of-                            "temp"          -> "Local temperature"-                            "forecast"      -> "Local forecast"-                            "ring"          -> "@ring <user>, CSE phonebook"-                            _           -> "Maya module: @temp, @forecast, @ring"--        moduleCmds   _ = ["temp","forecast", "ring"]--        process_ _ "temp" s = -         if s == "help"-            then return ["  Sydney Ap (http://www.bom.gov.au/images/syd_aws.gif)" ]-            else do (o,_,_) <- liftIO $ popen "/home/dons/bin-pc.i86.linux/temp" [] Nothing-                    return [ "  " ++ o ]--        process_  _  "ring" s =-            do (o,_,_) <- liftIO $ popen "/usr/local/bin/ring" [s] Nothing-               return ["  " ++ o]--        process_ _ "forecast" s =-         if s == "help"-            then return ["  Sydney Metro (http://www.bom.gov.au/cgi-bin/wrap_fwo.pl?IDN10064.txt)" ]-            else do (o,e,_) <- liftIO $ popen "/home/dons/bin-pc.i86.linux/forecast" [s] Nothing-                    liftIO $ print (o,e)-                    let o' = map (\t -> "  "++t) $ lines o-                    return o'
Plugin/More.hs view
@@ -1,13 +1,12 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, TypeSynonymInstances #-} -- | Support for more(1) buffering--- module Plugin.More (theModule) where  import Plugin  import Message( Nick ) -PLUGIN More+$(plugin "More")  type MoreState = GlobalPrivate () [String] 
Plugin/OEIS.hs view
@@ -1,15 +1,13 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-} -- | Look up sequences in the Online Encyclopedia of Integer Sequences --   Based on the Math.OEIS library--- module Plugin.OEIS (theModule) where  import Plugin -import Lib.OEIS-import Data.Char+import Math.OEIS -PLUGIN OEIS+$(plugin "OEIS")  instance Module OEISModule () where     moduleCmds   _     = ["oeis"]@@ -17,16 +15,3 @@     process _ _ to _ a = do s <- liftIO $ lookupOEIS a                             out <- mapM (ios80 to) (map return s)                             return $ concat out---lookupOEIS :: String -> IO [String]-lookupOEIS a = do-         let a'  = commas . reverse . dropWhile isSpace . reverse . dropWhile isSpace $ a-         x <- searchSequence_IO a'-         case x of-            Nothing -> do r <- random insult-                          return ["Sequence not found. " ++ r]-            Just s  -> return [description s, show $ sequenceData s]- where commas []                     = []-       commas (x:' ':xs) | isDigit x = x : ',' : commas xs-       commas (x:xs)                 = x : commas xs
Plugin/OfflineRC.hs view
@@ -1,8 +1,7 @@---+{-# LANGUAGE TemplateHaskell, CPP, MultiParamTypeClasses #-} -- | Offline mode / RC file / -e support module.  Handles spooling lists -- of commands (from readline, files, or the command line) into the vchat -- layer.--- module Plugin.OfflineRC (theModule) where  import Plugin@@ -14,9 +13,11 @@ import Control.Monad.State( get, gets, put ) import Control.Concurrent( forkIO ) import Control.Concurrent.MVar( readMVar )-import Lib.Error( finallyError )+import Lambdabot.Error( finallyError ) import Control.Exception( evaluate ) +import Config+ #ifdef mingw32_HOST_OS -- Work around the lack of readline on windows readline :: String -> IO (Maybe String)@@ -33,12 +34,12 @@ #endif  -PLUGIN OfflineRC+$(plugin "OfflineRC")  -- We need to track the number of active sourcings so that we can -- unregister the server (-> allow the bot to quit) when it is not -- being used.-type OfflineRC = ModuleT Integer LB +type OfflineRC = ModuleT Integer LB  instance Module OfflineRCModule Integer where     modulePrivs  _         = ["offline", "rc"]@@ -68,15 +69,16 @@             lockRC >> finallyError (mapM_ feed cmds) unlockRC  feed :: String -> ModuleT Integer LB ()-feed msg = let msg' = case msg of '>':xs -> "@run " ++ xs+feed msg = let msg' = case msg of '>':xs -> cmdPrefix ++ "run " ++ xs                                   '!':xs -> xs-                                  _      -> "@"     ++ dropWhile (== ' ') msg-           in lift $ (>> return ()) $ liftLB (timeout (15 * 1000 * 1000)) $ received $+                                  _      -> cmdPrefix ++ dropWhile (== ' ') msg+           in lift . (>> return ()) . liftLB (timeout (15 * 1000 * 1000)) . received $               IrcMessage { msgServer = "offlinerc"                          , msgLBName = "offline"                          , msgPrefix = "null!n=user@null"                          , msgCommand = "PRIVMSG"                          , msgParams = ["offline", ":" ++ msg' ] }+   where cmdPrefix = head (commandPrefixes config)  handleMsg :: IrcMessage -> LB () handleMsg msg = liftIO $ do
− Plugin/Paste.hs
@@ -1,28 +0,0 @@------ | Skeletal paste support----module Plugin.Paste (theModule) where--import Plugin-import Control.Concurrent--PLUGIN Paste--announceTarget :: String-announceTarget = "#haskell" -- hmm :/--instance Module PasteModule ThreadId where-    moduleInit _ = do-      tid <- lbIO (\conv ->-        forkIO $ pasteListener $ conv . ircPrivmsg announceTarget . Just)-      writeMS tid-    moduleExit _ = io . killThread =<< readMS----- | Implements a server that listens for pastes from a paste script.---   Authentification is done via...-pasteListener :: (String -> IO ()) -> IO ()-pasteListener say = do-  -- ...-  say "someone has pasted something somewhere"-  -- ...
Plugin/Pl.hs view
@@ -1,6 +1,5 @@-{-# OPTIONS -fvia-C -O2 -optc-O3 #-}--- ^ required to get results. -fasm seems to slow(!)---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, TypeSynonymInstances #-}+ -- | Pointfree programming fun -- -- A catalogue of refactorings is at:@@ -10,7 +9,6 @@ -- Use more Arrow stuff -- -- TODO would be to plug into HaRe and use some of their refactorings.--- module Plugin.Pl (theModule) where  import Plugin@@ -34,7 +32,7 @@  type PlState = GlobalPrivate () (Int, TopLevel) -PLUGIN Pl+$(plugin "Pl")  type Pl = ModuleLB PlState 
− Plugin/Pl/COPYING
@@ -1,20 +0,0 @@-Copyright (c) 2005 Thomas Jäger
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject
-to the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Plugin/Pl/Common.hs view
@@ -111,12 +111,12 @@    [inf name AssocLeft 7      | name <- ["*", "/", "`quot`", "`rem`", "`div`", "`mod`", ":%", "%"]],    [inf name AssocLeft 6  | name <- ["+", "-"]],-   [inf name AssocRight 5 | name <- [":", "++"]],-   [inf name AssocNone 4 -     | name <- ["==", "/=", "<", "<=", ">=", ">", "`elem`", "`notElem`"]],-   [inf "&&" AssocRight 3],-   [inf "||" AssocRight 2],-   [inf ">>" AssocLeft 1, inf ">>=" AssocLeft 1, inf "=<<" AssocRight 1],+   [inf name AssocRight 5 | name <- [":", "++", "<+>"]],+   [inf name AssocNone 4+     | name <- ["==", "/=", "<", "<=", ">=", ">", "`elem`", "`notElem`"]] ++[inf name AssocLeft 4 | name <- ["<*","*>","<$>","<$","<**>"]],+   [inf "&&" AssocRight 3, inf "***" AssocRight 3, inf "&&&" AssocRight 3, inf "<|>" AssocLeft 3],+   [inf "||" AssocRight 2, inf "+++" AssocRight 2, inf "|||" AssocRight 2],+   [inf ">>" AssocLeft 1, inf ">>=" AssocLeft 1, inf "=<<" AssocRight 1, inf ">>>" AssocRight 1, inf "^>>" AssocRight 1, inf "^<<" AssocRight 1],    [inf name AssocRight 0 | name <- ["$", "$!", "`seq`"]]   ] where   inf name assoc fx = (name, (assoc, fx))
− Plugin/Pl/Makefile
@@ -1,9 +0,0 @@-all:	-	#ghc -package HUnit -i.. -O --make -fglasgow-exts -funfolding-use-threshold -o Test Test.hs-	ghc -Wall -cpp -funbox-strict-fields -i../.. --make -O -fglasgow-exts -o Test Test.hs--tests:	all-	./Test tests--clean:-	rm *.o *.hi
Plugin/Pl/Optimize.hs view
@@ -1,4 +1,4 @@-{-# OPTIONS -fvia-C -O2 -optc-O3 #-}+{-# LANGUAGE ImplicitParams #-} module Plugin.Pl.Optimize (     optimize,   ) where@@ -23,7 +23,7 @@ -- -- This seems to be a better size for our purposes, -- despite being "a little" slower because of the wasteful uglyprinting-sizeExpr' :: Expr -> Size +sizeExpr' :: Expr -> Size sizeExpr' e = fromIntegral (length $ show e) + adjust e where   -- hackish thing to favor some expressions if the length is the same:   -- (+ x) --> (x +)@@ -51,30 +51,30 @@ optimize :: Expr -> [Expr] optimize e = result where   result :: [Expr]-  result = map (snd . fromJust) . takeWhile isJust . +  result = map (snd . fromJust) . takeWhile isJust .     iterate (>>= simpleStep) $ Just (sizeExpr' e, e)    simpleStep :: (Size, Expr) -> Maybe (Size, Expr)-  simpleStep t = do +  simpleStep t = do     let chn  = let ?first = True  in step (snd t)         chnn = let ?first = False in step =<< chn-        new  = filter (\(x,_) -> x < fst t) . map (sizeExpr' &&& id) $ +        new  = filter (\(x,_) -> x < fst t) . map (sizeExpr' &&& id) $                 snd t: chn ++ chnn     listToMaybe new  -- | Apply all rewrite rules once step :: (?first :: Bool) => Expr -> [Expr] step e = nub $ rewrite rules e- + -- | Apply a single rewrite rule---   +-- rewrite :: (?first :: Bool) => RewriteRule -> Expr -> [Expr] rewrite rl e = case rl of     Up r1 r2     -> let e'  = cut $ rewrite r1 e                         e'' = rewrite r2 =<< e'                     in if null e'' then e' else e''     OrElse r1 r2 -> let e'  = rewrite r1 e-                    in if null e' then rewrite r2 e else e' +                    in if null e' then rewrite r2 e else e'     Then r1 r2   -> rewrite r2 =<< nub (rewrite r1 e)     Opt  r       -> e: rewrite r e     If   p  r    -> if null (rewrite p e) then mzero else rewrite r e@@ -83,7 +83,7 @@     RR {}        -> rewDeep rl e     CRR {}       -> rewDeep rl e     Down {}      -> rewDeep rl e-    +   where -- rew = ...; rewDeep = ...  -- Apply a 'deep' reqrite rule@@ -98,7 +98,7 @@ -- | Apply a rewrite rule to an expression --   in a 'deep' position, i.e. from inside a RR,CRR or Down rew :: (?first :: Bool) => RewriteRule -> Expr -> [Expr]-rew (RR r1 r2)   e = toMonadPlus $ fire r1 r2 e +rew (RR r1 r2)   e = toMonadPlus $ fire r1 r2 e rew (CRR r)      e = toMonadPlus $ r e rew (Or rs)      e = (\x -> rew x e) =<< rs rew (Down r1 r2) e = if null e'' then e' else e''
Plugin/Pl/Parser.hs view
@@ -1,9 +1,8 @@-{-# OPTIONS -fvia-C -O2 -optc-O3 #-}------ Todo, use Language.Haskell---+{-# LANGUAGE PatternGuards #-}++-- TODO, use Language.Haskell -- Doesn't handle string literals?---+ module Plugin.Pl.Parser (parsePF) where  import Plugin.Pl.Common@@ -15,7 +14,7 @@  -- is that supposed to be done that way? tp :: T.TokenParser ()-tp = T.makeTokenParser $ haskellStyle { +tp = T.makeTokenParser $ haskellStyle {   reservedNames = ["if","then","else","let","in"] } @@ -28,8 +27,14 @@ symbol :: String -> Parser String symbol = T.symbol tp +modIdentifier :: Parser String+modIdentifier = T.lexeme tp $ do+  c <- oneOf ['A'..'Z']+  cs <- many ( alphaNum <|> oneOf "_'.")+  return (c:cs)+ atomic :: Parser String-atomic = try (show `fmap` T.natural tp) <|> T.identifier tp+atomic = try (string "()") <|> try (show `fmap` T.natural tp) <|> modIdentifier <|> T.identifier tp  reserved :: String -> Parser () reserved = T.reserved tp@@ -44,22 +49,22 @@ table = addToFirst def $ map (map inf) operators where   addToFirst y (x:xs) = ((y:x):xs)   addToFirst _ _ = assert False bt-  +   def :: Operator Char st Expr   def = Infix (try $ do-      name <- parseOp  +      name <- parseOp       guard $ not $ isJust $ lookupOp name       spaces       return $ \e1 e2 -> App (Var Inf name) e1 `App` e2     ) AssocLeft    inf :: (String, (Assoc, Int)) -> Operator Char st Expr-  inf (name, (assoc, _)) = Infix (try $ do +  inf (name, (assoc, _)) = Infix (try $ do       string name       notFollowedBy $ oneOf opchars       spaces-      let name' = if head name == '`' -                  then tail . reverse . tail . reverse $ name +      let name' = if head name == '`'+                  then tail . reverse . tail . reverse $ name                   else name       return $ \e1 e2 -> App (Var Inf name') e1 `App` e2     ) assoc@@ -67,15 +72,15 @@  parseOp :: CharParser st String parseOp = (between (char '`') (char '`') $ many1 (letter <|> digit))-  <|> try (do +  <|> try (do     op <- many1 $ oneOf opchars     guard $ not $ op `elem` reservedOps     return op)  pattern :: Parser Pattern-pattern = buildExpressionParser ptable ((PVar `fmap` -                       (    atomic -                        <|> (symbol "_" >> return ""))) +pattern = buildExpressionParser ptable ((PVar `fmap`+                       (    atomic+                        <|> (symbol "_" >> return "")))                         <|> parens pattern)     <?> "pattern" where   ptable = [[Infix (symbol ":" >> return PCons) AssocRight],@@ -91,9 +96,9 @@   <?> "lambda abstraction"  var :: Parser Expr-var = try (makeVar `fmap` atomic <|> +var = try (makeVar `fmap` atomic <|>            parens (try unaryNegation <|> try rightSection-                   <|> try (makeVar `fmap` many1 (char ',')) +                   <|> try (makeVar `fmap` many1 (char ','))                    <|> tuple) <|> list <|> (Var Pref . show) `fmap` charLiteral                    <|> stringVar `fmap` stringLiteral)         <?> "variable" where@@ -106,7 +111,7 @@ list :: Parser Expr list = msum (map (try . brackets) plist) <?> "list" where   plist = [-    foldr (\e1 e2 -> cons `App` e1 `App` e2) nil `fmap` +    foldr (\e1 e2 -> cons `App` e1 `App` e2) nil `fmap`       (myParser False `sepBy` symbol ","),     do e <- myParser False        symbol ".."@@ -126,7 +131,7 @@        symbol ".."        e'' <- myParser False        return $ Var Pref "enumFromThenTo" `App` e `App` e' `App` e''-    ] +    ]  tuple :: Parser Expr tuple = do@@ -150,8 +155,8 @@     let rs e = flip' `App` v `App` e     option v (rs `fmap` myParser False)   <?> "right section"-     + myParser :: Bool -> Parser Expr myParser b = lambda <|> expr b @@ -160,7 +165,7 @@  decl :: Parser Decl decl = do-  f <- atomic +  f <- atomic   args <- pattern `endsIn` symbol "="   e <- myParser False   return $ Define f (foldr Lambda e args)@@ -203,7 +208,7 @@ input :: Parser TopLevel input = do   spaces-  tl <- try (do +  tl <- try (do       f    <- atomic       args <- pattern `endsIn` symbol "="       e    <- myParser False
Plugin/Pl/PrettyPrinter.hs view
@@ -1,9 +1,9 @@-{-# OPTIONS -fvia-C #-}+{-# LANGUAGE PatternGuards #-} module Plugin.Pl.PrettyPrinter (Expr) where  -- Dummy export to make ghc -Wall happy -import Lib.Serial (readM)+import Lambdabot.Serial (readM) import Plugin.Pl.Common  instance Show Decl where@@ -30,7 +30,7 @@ {-# INLINE toSExprHead #-} toSExprHead :: String -> [Expr] -> Maybe SExpr toSExprHead hd tl-  | all (==',') hd, length hd+1 == length tl +  | all (==',') hd, length hd+1 == length tl   = Just . Tuple . reverse $ map toSExpr tl   | otherwise = case (hd,reverse tl) of       ("enumFrom", [e])              -> Just $ Enum e Nothing   Nothing@@ -49,13 +49,13 @@ toSExpr e | (ls, tl) <- getList e, tl == nil   = List $ map toSExpr ls toSExpr (App e1 e2) = case e1 of-  App (Var Inf v) e0 +  App (Var Inf v) e0     -> SInfix v (toSExpr e0) (toSExpr e2)   Var Inf v | v /= "-"     -> LeftSection v (toSExpr e2)    Var _ "flip" | Var Inf v <- e2, v == "-" -> toSExpr $ Var Pref "subtract"-    +   App (Var _ "flip") (Var pr v)     | v == "-"  -> toSExpr $ Var Pref "subtract" `App` e2     | v == "id" -> RightSection "$" (toSExpr e2)@@ -72,33 +72,33 @@  instance Show SExpr where   showsPrec _ (SVar v) = (getPrefName v ++)-  showsPrec p (SLambda vs e) = showParen (p > minPrec) $ ('\\':) . +  showsPrec p (SLambda vs e) = showParen (p > minPrec) $ ('\\':) .     foldr (.) id (intersperse (' ':) (map (showsPrec $ maxPrec+1) vs)) .     (" -> "++) . showsPrec minPrec e   showsPrec p (SApp e1 e2) = showParen (p > maxPrec) $     showsPrec maxPrec e1 . (' ':) . showsPrec (maxPrec+1) e2-  showsPrec _ (LeftSection fx e) = showParen True $ +  showsPrec _ (LeftSection fx e) = showParen True $     showsPrec (snd (lookupFix fx) + 1) e . (' ':) . (getInfName fx++)-  showsPrec _ (RightSection fx e) = showParen True $ +  showsPrec _ (RightSection fx e) = showParen True $     (getInfName fx++) . (' ':) . showsPrec (snd (lookupFix fx) + 1) e   showsPrec _ (Tuple es) = showParen True $     (concat `id` intersperse ", " (map show es) ++)-  -  showsPrec _ (List es) ++  showsPrec _ (List es)     | Just cs <- mapM ((=<<) readM . fromSVar) es = shows (cs::String)-    | otherwise = ('[':) . +    | otherwise = ('[':) .       (concat `id` intersperse ", " (map show es) ++) . (']':)     where fromSVar (SVar str) = Just str           fromSVar _          = Nothing-  showsPrec _ (Enum fr tn to) = ('[':) . shows fr . -    showsMaybe (((',':) . show) `fmap` tn) . (".."++) . +  showsPrec _ (Enum fr tn to) = ('[':) . shows fr .+    showsMaybe (((',':) . show) `fmap` tn) . (".."++) .     showsMaybe (show `fmap` to) . (']':)       where showsMaybe = maybe id (++)   showsPrec _ (SLet ds e) = ("let "++) . shows ds . (" in "++) . shows e     showsPrec p (SInfix fx e1 e2) = showParen (p > fixity) $-    showsPrec f1 e1 . (' ':) . (getInfName fx++) . (' ':) . +    showsPrec f1 e1 . (' ':) . (getInfName fx++) . (' ':) .     showsPrec f2 e2 where       fixity = snd $ lookupFix fx       (f1, f2) = case fst $ lookupFix fx of@@ -120,7 +120,7 @@     showsPrec 0 p1 . (", "++) . showsPrec 0 p2   showsPrec p (PCons p1 p2) = showParen (p>5) $     showsPrec 6 p1 . (':':) . showsPrec 5 p2-  + isOperator :: String -> Bool isOperator = all (`elem` opchars) 
Plugin/Pl/RuleLib.hs view
@@ -1,9 +1,7 @@-{-# OPTIONS -fvia-C #-}--- 6.4 gives a name shadow warning I haven't tracked down.+{-# OPTIONS_GHC -fglasgow-exts #-} -- fix this later+{-# LANGUAGE FlexibleInstances, PatternGuards #-} --- -- | This marvellous module contributed by Thomas J\344ger--- module Plugin.Pl.RuleLib        (  -- Using rules           RewriteRule(..), fire@@ -19,11 +17,9 @@  import Control.Monad.Fix (fix) ---import PlModule.PrettyPrinter- -- Next time I do somthing like this, I'll actually think about the combinator -- language before, instead of producing something ad-hoc like this:-data RewriteRule +data RewriteRule   = RR     Rewrite Rewrite           -- ^ A 'Rewrite' rule, rewrite the first to the second                                      --   'Rewrite's can contain 'Hole's   | CRR    (Expr -> Maybe Expr)      -- ^ Haskell function as a rule, applied to subexpressions@@ -37,20 +33,15 @@   | If     RewriteRule RewriteRule   -- ^ Apply the second rule only if the first rule has some results   | Hard   RewriteRule               -- ^ Apply the rule only in the first pass ----instance Show MExpr where---  show = show . fromMExpr- -- | An expression with holes to match or replace data Rewrite = Rewrite {   holes :: MExpr,  -- ^ Expression with holes   rid   :: Int     -- ^ Number of holes-   -- rlength - 1-} --deriving Show+}  -- What are you gonna do when no recursive modules are possible? class RewriteC a where-  getRewrite :: a -> Rewrite +  getRewrite :: a -> Rewrite  instance RewriteC MExpr where   getRewrite rule = Rewrite {@@ -63,8 +54,8 @@   getRewrite rule = Rewrite {     holes = holes . getRewrite . rule . Hole $ pid,     rid   = pid + 1-  } where -    pid = rid $ getRewrite (undefined :: a)+  } where+     pid = rid $ getRewrite (undefined :: a)   ----------------------------------------------------------------------------------------@@ -83,9 +74,9 @@  -- | Create an array, only if the keys in 'lst' are unique and all keys [0..n-1] are given uniqueArray :: Ord v => Int -> [(Int, v)] -> Maybe (Array Int v)-uniqueArray n lst +uniqueArray n lst   | length (nub' lst) == n = Just $ array (0,n-1) lst-  | otherwise = Nothing              +  | otherwise = Nothing  -- | Try to match a Rewrite to an expression, --   if there is a match, returns the expressions in the holes@@ -101,7 +92,7 @@  -- | Match an Expr to a MExpr template, return the values used in the holes matchWith :: MExpr -> Expr -> Maybe [(Int, Expr)]-matchWith (MApp e1 e2) (App e1' e2') = +matchWith (MApp e1 e2) (App e1' e2') =   liftM2 (++) (matchWith e1 e1') (matchWith e2 e2') matchWith (Quote e) e' = if e == e' then Just [] else Nothing matchWith (Hole k) e = Just [(k,e)]@@ -123,9 +114,9 @@ transformM _ (Quote e) = constE `a` Quote e transformM n (Hole n') = if n == n' then idE else constE `a` Hole n' transformM n (Quote (Var _ ".") `MApp` e1 `MApp` e2)-  | e1 `hasHole` n && not (e2 `hasHole` n) +  | e1 `hasHole` n && not (e2 `hasHole` n)   = flipE `a` compE `a` e2 `c` transformM n e1-transformM n e@(MApp e1 e2) +transformM n e@(MApp e1 e2)   | fr1 && fr2 = sE `a` transformM n e1 `a` transformM n e2   | fr1        = flipE `a` transformM n e1 `a` e2   | fr2, Hole n' <- e2, n' == n = e1@@ -177,7 +168,7 @@   r1' = getRewrite r1   r2' = getRewrite r2 --- | Apply Down/Up repeatedly  +-- | Apply Down/Up repeatedly down, up :: RewriteRule -> RewriteRule down = fix . Down up   = fix . Up
Plugin/Pl/Rules.hs view
@@ -1,12 +1,9 @@-{-# OPTIONS -fvia-C #-}--- 6.4 gives a name shadow warning I haven't tracked down.+{-# LANGUAGE ExistentialQuantification, PatternGuards, Rank2Types #-} --- -- | This marvellous module contributed by Thomas J\344ger--- module Plugin.Pl.Rules (RewriteRule(..), fire, rules) where -import Lib.Serial (readM)+import Lambdabot.Serial (readM)  import Plugin.Pl.Common import Plugin.Pl.RuleLib@@ -39,13 +36,13 @@ assocR, assocL, assoc :: [String] -> Expr -> Maybe Expr -- (f `op` g) `op` h --> f `op` (g `op` h) assocR ops (Var f1 op1 `App` (Var f2 op2 `App` e1 `App` e2) `App` e3)-  | op1 == op2 && op1 `elem` ops +  | op1 == op2 && op1 `elem` ops   = Just (Var f1 op1 `App` e1 `App` (Var f2 op2 `App` e2 `App` e3)) assocR _ _ = Nothing  -- f `op` (g `op` h) --> (f `op` g) `op` h assocL ops (Var f1 op1 `App` e1 `App` (Var f2 op2 `App` e2 `App` e3))-  | op1 == op2 && op1 `elem` ops +  | op1 == op2 && op1 `elem` ops   = Just (Var f1 op1 `App` (Var f2 op2 `App` e1 `App` e2) `App` e3) assocL _ _ = Nothing @@ -56,7 +53,7 @@ assoc _ _ = Nothing  commutative :: [String] -> Expr -> Maybe Expr-commutative ops (Var f op `App` e1 `App` e2) +commutative ops (Var f op `App` e1 `App` e2)   | op `elem` ops = Just (Var f op `App` e2 `App` e1) commutative ops (Var _ "flip" `App` e@(Var _ op)) | op `elem` ops = Just e commutative _ _ = Nothing@@ -144,7 +141,7 @@   -- map f . map g -> map (f . g)   rr0 (\f g -> mapE `a` f `c` mapE `a` g)       (\f g -> mapE `a` (f `c` g))-  +   ]  onceRewrites :: RewriteRule@@ -172,7 +169,7 @@ rules = Or [   -- f (g x) --> (f . g) x   Hard $-  rr  (\f g x -> f `a` (g `a` x)) +  rr  (\f g x -> f `a` (g `a` x))       (\f g x -> (f `c` g) `a` x),   -- (>>=) --> flip (=<<)   Hard $@@ -197,7 +194,7 @@   Hard $   rr  (\f g -> flipE `a` (f `c` g))       (\f g -> (flipE `a` compE `a` g) `c` (flipE `a` f)),-  -- flip (.) f . flip id --> flip f +  -- flip (.) f . flip id --> flip f   rr  (\f -> (flipE `a` compE `a` f) `c` (flipE `a` idE))       (\f -> flipE `a` f),   -- flip (.) f . flip flip --> flip (flip . f)@@ -206,7 +203,7 @@   -- flip (flip (flip . f) g) --> flip (flip . flip f) g   rr1 (\f g -> flipE `a` (flipE `a` (flipE `c` f) `a` g))       (\f g -> flipE `a` (flipE `c` flipE `a` f) `a` g),-  +   -- flip (.) id --> id   rr (flipE `a` compE `a` idE)      idE,@@ -265,17 +262,17 @@   rr0 (\f -> f `a` (fixE `a` f))       (\f -> fixE `a` f),   -- fix f --> f (f (fix x))-  Hard $ +  Hard $   rr0 (\f -> fixE `a` f)       (\f -> f `a` (f `a` (fixE `a` f))),   -- fix (const f) --> f-  rr (\f -> fixE `a` (constE `a` f)) +  rr (\f -> fixE `a` (constE `a` f))      (\f -> f),   -- flip const x --> id   rr  (\x -> flipE `a` constE `a` x)       (\_ -> idE),   -- const . f --> flip (const f)-  Hard $ +  Hard $   rr  (\f -> constE `c` f)       (\f -> flipE `a` (constE `a` f)),   -- not (x == y) -> x /= y@@ -349,9 +346,9 @@   Hard $   rr (\f -> extE `c` flipE `a` (fmapE `c` f))      (\f -> flipE `a` liftM2E `a` f),-  +   -- (.) -> fmap-  Hard $ +  Hard $   rr compE fmapE,    -- map f (zip xs ys) --> zipWith (curry f) xs ys@@ -418,7 +415,7 @@   rr (\p q -> seqME `a` p `a` q)      (\p q -> extE `a` (constE `a` q) `a` p), -  -- experimental support for Control.Arrow stuff +  -- experimental support for Control.Arrow stuff   -- (costs quite a bit of performace)   -- uncurry ((. g) . (,) . f) --> f *** g   rr (\f g -> uncurryE `a` ((flipE `a` compE `a` g) `c` commaE `c` f))@@ -446,7 +443,7 @@   rr (\x -> consE `a` x `a` nilE)      (\x -> returnE `a` x),   -- list destructors-  Hard $ +  Hard $   If (Or [rr consE consE, rr nilE nilE]) $ Or [     down $ Or [       -- length [] --> 0@@ -563,4 +560,3 @@     ("&&",   BA ((&&) :: Bool -> Bool -> Bool)),     ("||",   BA ((||) :: Bool -> Bool -> Bool))   ]-
− Plugin/Pl/Test.hs
@@ -1,260 +0,0 @@-module Main where--#define READLINE-#if __GLASGOW_HASKELL__ > 602-import Test.HUnit-import Test.QuickCheck hiding (test)-#else-import HUnit-import Debug.QuickCheck hiding (test)-#endif--import Plugin.Pl.Common-import Plugin.Pl.Transform-import Plugin.Pl.Parser-import Plugin.Pl.PrettyPrinter--import Data.List ((\\))-import Data.Char (isSpace)--import Control.Monad.Error--import System.IO (hSetBuffering, stdout, BufferMode(NoBuffering))-import System.Environment (getArgs)--#ifdef READLINE-import System.Console.Readline (readline, addHistory, initialize)-#endif--import Debug.Trace--instance Arbitrary Expr where-  arbitrary = sized $ \size -> frequency $ zipWith (,) [1,size,size]-    [arbVar,-     liftM2 Lambda arbPat arbitrary,-     let se = resize (size `div` 2) arbitrary in liftM2 App se se ] -  coarbitrary = error "Expr.coarbitrary"--arbVar :: Gen Expr-arbVar = oneof [(Var Pref . return) `fmap` choose ('a','z'), -                (Var Inf .  return) `fmap` elements (opchars\\"=")]--arbPat :: Gen Pattern-arbPat = sized $ \size -> -  let-    spat = resize (size `div` 5) arbPat-  in-    frequency $ zipWith (,) [1,size,size] [-      (PVar . return) `fmap` choose ('a','z'),-      liftM2 PTuple spat spat,-      liftM2 PCons  spat spat]--propRoundTrip :: Expr -> Bool-propRoundTrip e = Right (TLE e) == parsePF (show e)---- hacking qc2 functionality (?) in here-propRoundTrip' :: Expr -> Property-propRoundTrip' e = not (propRoundTrip e) ==> trace (show $ findMin e) False-    where-  findMin e' = case filter (not . propRoundTrip) $ subExpr e' of-    [] -> e'-    (x:_) -> findMin x--propMonotonic1 :: Expr -> Expr -> Expr -> Bool-propMonotonic1 e e1 e2 = App e e1 `compare` App e e2 == e1 `compare` e2--propMonotonic2 :: Expr -> Expr -> Expr -> Bool-propMonotonic2 e e1 e2 = App e1 e `compare` App e2 e == e1 `compare` e2--subExpr :: Expr -> [Expr]-subExpr (Var _ _) = []-subExpr (Lambda v e) = [e] ++ Lambda v `map` subExpr e-subExpr (App e1 e2) = [e1, e2] -  ++ App e1 `map` subExpr e2 ++ (`App` e2) `map` subExpr e1-subExpr (Let {}) = bt--sizeTest :: IO ()-sizeTest = quickCheck $ \e -> collect (sizeExpr e) (propRoundTrip e)--quick :: Config-quick = Config-  { configMaxTest = 100-  , configMaxFail = 1000-  , configSize    = const 40-  , configEvery   = \n _ -> let sh = show n in sh ++ [ '\b' | _ <- sh ]-  }--myTest :: IO ()-myTest = check quick propRoundTrip'--qcTests :: IO ()-qcTests = do-  quickCheck propRoundTrip-  quickCheck propMonotonic1-  quickCheck propMonotonic2--pf :: String -> IO ()-pf inp = case parsePF inp of-  Right d -> do -    putStrLn "Your expression:"-    print d-    putStrLn "Transformed to pointfree style:"-    let d' = mapTopLevel transform d-    print $ d'-    putStrLn "Optimized expression:"-    mapM_ print $ mapTopLevel' optimize d'-  Left err -> putStrLn $ err--mapTopLevel' :: Functor f => (Expr -> f Expr) -> TopLevel -> f TopLevel-mapTopLevel' f tl = case getExpr tl of (e, c) -> fmap c $ f e--pf' :: String -> IO ()-pf' = putStrLn . (id ||| show) . parsePF---- NB: this is a special case of (import Control.Monad.Reader)--- ap :: m (a -> b) -> m a -> m b-s :: (t -> a -> b) -> (t -> a) -> t -> b-s f g x = f x $ g x  --unitTest :: String -> [String] -> Test-unitTest inp out = TestCase $ do-  d <- case parsePF inp of-    Right x -> return x-    Left err -> fail $ "Parse error on input " ++ inp ++ ": " ++ err-  let d' = mapTopLevel (last . optimize . transform) d-  foldr1 mplus [assertEqual (inp++" failed.") o (show d') | o <- out]--unitTests :: Test-unitTests = TestList [-  unitTest "foldr (++) []" ["join"],-  unitTest "flip flip [] . ((:) .)" ["(return .)"],-  unitTest "\\x -> x - 2" ["subtract 2"],-  unitTest "\\(x,_) (y,_) -> x == y" ["(. fst) . (==) . fst"],-  unitTest "\\x y z -> return x >>= \\x' -> return y >>= \\y' -> return z >>= \\z' -> f x' y' z'" ["f"],-  unitTest "let (x,y) = (1,2) in y" ["2"],-  unitTest "fix . const" ["id"],-  unitTest "all f . map g" ["all (f . g)"],-  unitTest "any f . map g" ["any (f . g)"],-  unitTest "liftM2 ($)" ["ap"],-  unitTest "\\f -> f x" ["($ x)"],-  unitTest "flip (-)" ["subtract"],-  unitTest "\\xs -> [f x | x <- xs, p x]" ["map f . filter p"],-  unitTest "all id" ["and"],-  unitTest "any id" ["or"],-  unitTest "and . map f" ["all f"],-  unitTest "or . map f" ["any f"],-  unitTest "return ()" ["return ()"],-  unitTest "f (fix f)" ["fix f"],-  unitTest "concat ([concat (map h (k a))])" ["h =<< k a"],-  unitTest "uncurry (const f)" ["f . snd"],-  unitTest "uncurry const" ["fst"],-  unitTest "uncurry (const . f)" ["f . fst"],-  unitTest "\\a b -> a >>= \\x -> b >>= \\y -> return (x,y)" ["liftM2 (,)"],-  unitTest "\\b a -> a >>= \\x -> b >>= \\y -> return (x,y)" ["flip liftM2 (,)"],-  unitTest "curry snd" ["const id"],-  unitTest "\\x -> return x y" ["const y"],-  unitTest "\\x -> f x x" ["join f"],-  unitTest "join (+) 1" ["2"],-  unitTest "fmap f g x" ["f (g x)"],-  unitTest "liftM2 (+) f g 0" ["f 0 + g 0", "g 0 + f 0"],-  unitTest "return 1 x" ["x"],-  unitTest "f =<< return x" ["f x"],-  unitTest "(=<<) id" ["join"],-  unitTest "zipWith (,)" ["zip"],-  unitTest "map fst . zip [1..]" ["zipWith const [1..]"],-  unitTest "curry . uncurry" ["id"],-  unitTest "uncurry . curry" ["id"],-  unitTest "curry fst" ["const"],-  unitTest "return x >> y" ["y"],-  -- What were they smoking when they decided >> should be infixl-  unitTest "a >>= \\_ -> b >>= \\_ -> return $ const (1 + 2) $ a + b" ["a >> (b >> return 3)"],-  unitTest "foo = m >>= \\x -> return 1" ["foo = m >> return 1"],-  unitTest "foo m = m >>= \\x -> return 1" ["foo = (>> return 1)"],-  unitTest "return (+) `ap` return 1 `ap` return 2" ["return 3"],-  unitTest "liftM2 (+) (return 1) (return 2)" ["return 3"],-  unitTest "(. ((return .) . (+))) . (>>=)" ["flip (fmap . (+))"],-  unitTest "\\a b -> a >>= \\x -> b >>= \\y -> return $ x + y" ["liftM2 (+)"],-  unitTest "ap (flip const . f)" ["id"],-  unitTest "uncurry (flip (const . flip (,) (snd t))) . ap (,) id" ["flip (,) (snd t)"],-  unitTest "foo = (1, fst foo)" ["foo = (1, 1)"],-  unitTest "foo = (snd foo, 1)" ["foo = (1, 1)"],-  unitTest "map (+1) [1,2,3]" ["[2, 3, 4]"],-  unitTest "snd . (,) (\\x -> x*x)" ["id"],-  unitTest "return x >>= f" ["f x"],-  unitTest "m >>= return" ["m"],-  unitTest "m >>= \\x -> f x >>= g" ["m >>= f >>= g", "g =<< f =<< m"],-  unitTest "\\x -> 1:2:3:4:x" ["([1, 2, 3, 4] ++)"],-  unitTest "\\(x:xs) -> x"  ["head"],-  unitTest "\\(x:xs) -> xs" ["tail"],-  unitTest "\\(x,y)  -> x"  ["fst"],-  unitTest "\\(x,y)  -> y"  ["snd"],-  unitTest "\\x -> x" ["id"],-  unitTest "\\x y -> x" ["const"],-  unitTest "\\f x y -> f y x" ["flip"],-  unitTest "t f g x = f x (g x)" ["t = ap"],-  unitTest "(+2).(+3).(+4)" ["(9 +)"],-  unitTest "head $ fix (x:)" ["x"],-  unitTest "head $ tail $ let xs = x:ys; ys = y:ys in xs" ["y"],-  unitTest "head $ tail $ let ys = y:ys in let xs = x:ys in xs" ["y"],-  unitTest "2+3*4-3*3" ["5"],-  unitTest "foldr (+) x [1,2,3,4]" ["10 + x", "x + 10"],-  unitTest "foldl (+) x [1,2,3,4]" ["10 + x", "x + 10"],-  unitTest "head $ fst (x:xs, y:ys)" ["x"],-  unitTest "snd $ (,) 2 3" ["3"],-  unitTest "\\id x -> id" ["const"],-  unitTest "\\y -> let f x = foo x; g = f in g y" ["foo"],-  unitTest "neq x y = not $ x == y" ["neq = (/=)"],-  unitTest "not (x /= y)" ["x == y"],-  unitTest "\\x x -> x" ["const id"],-  unitTest "\\(x, x) -> x" ["snd"],-  unitTest "not $ not 4" ["4"],-  unitTest "\\xs -> foldl (+) 0 (1:2:xs)" ["foldl (+) 3"],-  unitTest "\\x -> foldr (+) x [0,1,2,3]" ["(6 +)"],-  unitTest "foldr (+) 0 [x,y,z]" ["x + y + z"],-  unitTest "foldl (*) 0 [x,y,z]" ["0"],-  unitTest "length \"abcdefg\"" ["7"],-  unitTest "ap (f x . fst) snd" ["uncurry (f x)"],-  unitTest "sum [1,2,3,x]" ["6 + x", "x + 6"],-  unitTest "p x = product [1,2,3,x]" ["p = (6 *)"],-  unitTest "(concat .) . map" ["(=<<)"],-  unitTest "let f ((a,b),(c,d)) = a + b + c + d in f ((1,2),(3,4))" ["10"],-  unitTest "let x = const 3 y; y = const 4 x in x + y" ["7"] -- yay!-  ]--main :: IO ()-main = do -  hSetBuffering stdout NoBuffering-  args <- getArgs-  case args of-    ("tests":_) -> doTests-    xs          -> do -        mapM_ pf xs-#ifdef READLINE-        initialize-#endif-        pfloop---pfloop :: IO ()-pfloop = do-#ifdef READLINE -  line' <- readline "pointless> "-#else-  line' <- Just `fmap` getLine-#endif-  case line' of-    Just line -      | all isSpace line -> pfloop-      | otherwise        -> do-#ifdef READLINE-          addHistory line-#endif-          pf line-          pfloop-    Nothing   -> putStrLn "Bye."--doTests :: IO ()-doTests = do-  runTestTT unitTests---  qcTests -  return ()
Plugin/Pl/Transform.hs view
@@ -1,4 +1,4 @@-{-# OPTIONS -fvia-C -O2 -optc-O3 #-}+{-# LANGUAGE PatternGuards #-} module Plugin.Pl.Transform (     transform,   ) where@@ -31,7 +31,7 @@ freeIn v (Var _ v') = fromEnum $ v == v' freeIn v (Lambda pat e) = if v `occursP` pat then 0 else freeIn v e freeIn v (App e1 e2) = freeIn v e1 + freeIn v e2-freeIn v (Let ds e') = if v `elem` map declName ds then 0 +freeIn v (Let ds e') = if v `elem` map declName ds then 0   else freeIn v e' + sum [freeIn v e | Define _ e <- ds]  -- | Does a name occur free in an expression?@@ -60,7 +60,7 @@   comps = stronglyConnComp [(d',d',dependsOn ds d') | d' <- ds]   dsYes = flattenSCC $ head comps   dsNo = flattenSCCs $ tail comps-  + unLet (Lambda v e) = Lambda v (unLet e) unLet (Var f x) = Var f x @@ -103,23 +103,23 @@ transform' (Let {}) = assert False undefined transform' (Var f v) = Var f v transform' (App e1 e2) = App (transform' e1) (transform' e2)-transform' (Lambda (PTuple p1 p2) e) -  = transform' $ Lambda (PVar "z") $ +transform' (Lambda (PTuple p1 p2) e)+  = transform' $ Lambda (PVar "z") $       (Lambda p1 $ Lambda p2 $ e) `App` f `App` s where     f = Var Pref "fst" `App` Var Pref "z"     s = Var Pref "snd" `App` Var Pref "z"-transform' (Lambda (PCons p1 p2) e) -  = transform' $ Lambda (PVar "z") $ +transform' (Lambda (PCons p1 p2) e)+  = transform' $ Lambda (PVar "z") $       (Lambda p1 $ Lambda p2 $ e) `App` f `App` s where     f = Var Pref "head" `App` Var Pref "z"     s = Var Pref "tail" `App` Var Pref "z" transform' (Lambda (PVar v) e) = transform' $ getRidOfV e where   getRidOfV (Var f v') | v == v'   = id'                        | otherwise = const' `App` Var f v'-  getRidOfV l@(Lambda pat _) = assert (not $ v `occursP` pat) $ +  getRidOfV l@(Lambda pat _) = assert (not $ v `occursP` pat) $     getRidOfV $ transform' l   getRidOfV (Let {}) = assert False bt-  getRidOfV e'@(App e1 e2) +  getRidOfV e'@(App e1 e2)     | fr1 && fr2 = scomb `App` getRidOfV e1 `App` getRidOfV e2     | fr1 = flip' `App` getRidOfV e1 `App` e2     | Var _ v' <- e2, v' == v = e1
Plugin/Pointful.hs view
@@ -1,13 +1,14 @@+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, TypeSynonymInstances #-} -- Undo pointfree transformations. Plugin code derived from Pl.hs. module Plugin.Pointful (theModule) where  import Plugin -import Lib.Pointful+import Lambdabot.Pointful  type PfState = () -PLUGIN Pointful+$(plugin "Pointful")  --type Pf = ModuleLB PfState 
Plugin/Poll.hs view
@@ -1,4 +1,4 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, TypeSynonymInstances #-} -- | Module: Vote -- | Support for voting -- |@@ -6,14 +6,13 @@ -- | -- | added by Kenneth Hoste (boegel), 22/11/2005 -- |  inspiration: Where plugin (thanks shapr,dons)--- module Plugin.Poll (theModule) where  import Plugin hiding (choice) import qualified Data.ByteString.Char8 as P import qualified Data.Map as M -PLUGIN Vote+$(plugin "Vote")  newPoll :: Poll newPoll = (True,[])@@ -22,10 +21,10 @@ appendPoll choice (o,ls) = Just (o,(choice,0):ls)  voteOnPoll :: Poll -> String -> (Poll,String)-voteOnPoll (o,poll) choice = +voteOnPoll (o,poll) choice =     if any (\(x,_) -> x == choice) poll-        then ((o,map (\(c,n) -> -                    if c == choice then (c,n+1) +        then ((o,map (\(c,n) ->+                    if c == choice then (c,n+1)                                    else (c,n)) poll)                                         ,"voted on " ++ show choice)         else ((o,poll),show choice ++ " is not currently a candidate in this poll")@@ -58,7 +57,7 @@                        ,"poll-close"                        ,"poll-remove"] ---   -- todo, should @vote foo automagically add foo as a possibility? +   -- todo, should @vote foo automagically add foo as a possibility?     moduleHelp   _ s = case s of         "poll-list"     -> "poll-list                   Shows all current polls"         "poll-show"     -> "poll-show <poll>            Shows all choices for some poll"@@ -68,14 +67,14 @@         "poll-result"   -> "poll-result <poll>          Show result for given poll"         "poll-close"    -> "poll-close <poll>           Closes a poll"         "poll-remove"   -> "poll-remove <poll>          Removes a poll"-    +     moduleDefState _  = return M.empty     moduleSerialize _ = Just voteSerial -    process_ _ "poll-list" _ = do +    process_ _ "poll-list" _ = do         result <- withMS $ \factFM writer -> processCommand factFM writer "poll-list" []         return [result]-        +     process_ _ _ [] = return ["Missing argument. Check @help <vote-cmd> for info."]      process_ _ cmd dat = do@@ -92,7 +91,7 @@      -- show candidates     "poll-show"    -> return $ case length dat of-                        1 -> showPoll fm (head dat) +                        1 -> showPoll fm (head dat)                         _ -> "usage: @poll-show <poll>"      -- declare a new poll@@ -128,24 +127,24 @@ listPolls fm = show $ map fst (M.toList fm)  showPoll :: VoteState -> String -> String-showPoll fm poll = +showPoll fm poll =     case M.lookup (P.pack poll) fm of         Nothing -> "No such poll: " ++ show poll ++ " Use @poll-list to see the available polls."         Just p  -> show $ map fst (snd p)  addPoll :: VoteState -> VoteWriter -> String -> LB String-addPoll fm writer poll = +addPoll fm writer poll =     case M.lookup (P.pack poll) fm of         Nothing -> do writer $ M.insert (P.pack poll) newPoll fm                       return $ "Added new poll: " ++ show poll-        Just _  -> return $ "Poll " ++ show poll ++ +        Just _  -> return $ "Poll " ++ show poll ++                             " already exists, choose another name for your poll"  addChoice :: VoteState -> VoteWriter -> String -> String -> LB String addChoice fm writer poll choice = case M.lookup (P.pack poll) fm of     Nothing -> return $ "No such poll: " ++ show poll     Just _  -> do writer $ M.update (appendPoll choice) (P.pack poll) fm-                  return $ "New candidate " ++ show choice ++ +                  return $ "New candidate " ++ show choice ++                            ", added to poll " ++ show poll ++ "."  vote :: VoteState -> VoteWriter -> String -> String -> LB String@@ -159,7 +158,7 @@ showResult :: VoteState -> String -> String showResult fm poll = case M.lookup (P.pack poll) fm of     Nothing     -> "No such poll: "  ++ show poll-    Just (o,p)  -> "Poll results for " ++ poll ++ " (" ++ (status o) ++ "): " +    Just (o,p)  -> "Poll results for " ++ poll ++ " (" ++ (status o) ++ "): "                    ++ (concat $ intersperse ", " $ map ppr p)         where             status s | s         = "Open"
Plugin/Pretty.hs view
@@ -1,18 +1,19 @@------ | Pretty-Printing echo------ example:------ @pretty fun x = case x of {3 -> "hello" ; 5 -> "world" ; _ -> "else"}------ fun x---  = case x of---    3 -> "hello"---    5 -> "world"---    _ -> "else"------ (c) Johannes Ahlmann, 2005-12-13, released under GPL 2---+{-# LANGUAGE TemplateHaskell, FlexibleInstances, MultiParamTypeClasses #-}++{- | Pretty-Printing echo++example:++> @pretty fun x = case x of {3 -> "hello" ; 5 -> "world" ; _ -> "else"}++> fun x+>  = case x of+>   3 -> "hello"+>   5 -> "world"+>   _ -> "else"++(c) Johannes Ahlmann, 2005-12-13, released under GPL 2 -}+ module Plugin.Pretty where  import Plugin@@ -21,7 +22,7 @@ import Language.Haskell.Syntax hiding (Module) import Language.Haskell.Pretty -PLUGIN Pretty+$(plugin "Pretty")  instance Module PrettyModule (String -> IO String) where     moduleCmds _   = ["pretty"]@@ -31,7 +32,7 @@ ------------------------------------------------------------------------  prettyCmd :: String -> ModuleLB (String -> IO String)-prettyCmd rest = +prettyCmd rest =     let code = dropWhile (`elem` " \t>") rest         modPrefix1 = "module Main where "         modPrefix2 = "module Main where __expr__ = "@@ -74,6 +75,6 @@         prettyDecl d = prettyPrintWithMode (makeMode d) d     -- FIXME: prefixing with hashes is done, because i didn't find a way     --   to disable the indentation filter of lambdabot only for this module...-    in map (" "++) . lines . concat . intersperse "\n" +    in map (" "++) . lines . concat . intersperse "\n"        -- . map show $ decls        . map prettyDecl $ decls
Plugin/Quote.hs view
@@ -1,6 +1,5 @@---+{-# LANGUAGE TemplateHaskell, CPP, MultiParamTypeClasses, PatternGuards, TypeSynonymInstances #-} -- | Support for quotes--- module Plugin.Quote (theModule) where  import Plugin@@ -10,7 +9,7 @@ import qualified Data.Map as M import qualified Data.ByteString.Char8 as P -PLUGIN Quote+$(plugin "Quote")  type Key    = P.ByteString type Quotes = M.Map Key [P.ByteString]@@ -18,7 +17,8 @@ instance Module QuoteModule Quotes where     moduleCmds           _ = ["quote", "remember", "forget", "ghc", "fortune"                              ,"yow","arr","yarr","keal","b52s","brain","palomer"-                             ,"girl19", "v", "yhjulwwiefzojcbxybbruweejw", "protontorpedo"]+                             ,"girl19", "v", "yhjulwwiefzojcbxybbruweejw"+                             , "protontorpedo", "nixon", "farber"]      moduleHelp _ "forget"  = "forget nick quote.  Delete a quote"     moduleHelp _ "fortune" = "fortune. Provide a random fortune"@@ -35,6 +35,9 @@     moduleHelp _ "v"       = "let v = show v in v"     moduleHelp _ "yhjulwwiefzojcbxybbruweejw"                            = "V RETURNS!"+    moduleHelp _ "farber"  = "Farberisms in the style of David Farber."+    moduleHelp _ "nixon"   = "Richad Nixon's finest."+     moduleHelp _ _         = help -- required      moduleSerialize _       = Just mapListPackedSerial@@ -63,6 +66,8 @@           -- afermative where as yarr! is more like a greeting. (Or something)           "arr"           -> rand arrList           "yarr"          -> rand yarrList+          "farber"        -> rand farberList+          "nixon"         -> rand nixonList          where            runit k = return `fmap` io k
Plugin/Quote/Fortune.hs view
@@ -1,11 +1,11 @@------ 	| Fortune.hs, quote the fortune file---+{-# LANGUAGE CPP #-}++-- | Fortune.hs, quote the fortune file module Plugin.Quote.Fortune where  import Config-import Lib.Util (stdGetRandItem, split)-import qualified Lib.Util hiding (stdGetRandItem)+import Lambdabot.Util (stdGetRandItem, split)+import qualified Lambdabot.Util hiding (stdGetRandItem)  import Data.List import Control.Monad
Plugin/Quote/Text.hs view
@@ -1,484 +1,2339 @@------ | Some quote text----module Plugin.Quote.Text where---- | Some funny palomer-isms-palomer :: [String]-palomer =-    ["Blargh!"-    ,"Hrmph"-    ,"They're telling you lies!"-    ,"Scalliwags!"-    ,"Pfft"-    ,"Pfft, my type inference algorithm takes hours on a 2 line program"-    ,"Hrmph, looks like I killed the channel"-    ,"As someone who's studied GADTs, I've never found a use for them."-    ,"Category theory is the Paris Hilton of mathematics"-    ,"That's nuts!"-    ,"Brump!"-    ,"I think you're all nuts"-    ,"That's a lie"-    ,"Learning vim is pointless"-    ,"I think vim is good for the rubbish bin"-    ,"xml stands for \"xtremely mild lullaby\""-    ,"woof"-    ,"(_|_)"-    ,"I have news for you, it's pointless"-    ,"You're all nuts"-    ]---- | Some pirate quotes-arrList :: [String]-arrList =-    ["Avast!"-    ,"Shiver me timbers!"-    ,"Yeh scurvy dog..."-    ,"I'll keel haul ya fer that!"-    ,"I want me grog!"-    ,"Drink up, me 'earties"-    ,"Smartly me lass"-    ,"Arrr!"-    ,"Ahoy mateys"-    ,"Aye"-    ,"Aye Aye Cap'n"-    ,"Swab the deck!"-    ,"Keelhaul the swabs!"-    ,"Yo ho ho, and a bottle of rum!"-    ,"I'll crush ye barnacles!"-    ,"Har de har har!"-    ]---- | More pirate quotes-yarrList :: [String]-yarrList =-    arrList ++-    ["I heard andersca is a pirate"-    ,"I'd like to drop me anchor in her lagoon"-    ,"Well me 'earties, let's see what crawled out of the bung hole..."-    ,"Is that a hornpipe in yer pocket, or arr ya just happy ta see me?"-    ,"Get out o' me way, yeh landlubber"-    ,"Yarrr!"-    ,"This is the END for you, you gutter-crawling cur!"-    ,"May the clap make ye incapable of Cracking Jenny's Tea Cup."-    ,"Eat maggoty hardtack, ye unkempt, jenny frequentin', son of a gun."-    ,"What be a priate's favourite cheese?\nYarrlsburg!"-    ,"Where d' all t' pirates come from?\nGreat Yarrmouth!"-    ,"Prepare to be boarded!"-    ,"Gangway!"-    ,"Splice the Mainbrace!"-    ,"Arr! Me ship be the biggest brig in the port!"-    ,"Well Ahoy! thar."-    ]------- Stewie Griffin is great----stewieList :: [String]-stewieList =-    ["You. Fetch me my copy of the Wall Street Journal. You two, fight to the death."-    ,"Yes, I rather like this God fellow. He's very theatrical, you know, a pestilence here, a plague there. Omnipotence. Gotta get me some of that"-    ,"I've got a better idea. Let's go play \"swallow the stuff under the sink.\""-    ,"I've got an army to raise and I must get to Nicaragua. I require a window seat and an in-flight Happy Meal AND NO PICKLES. OH, GOD HELP YOU IF I FIND PICKLES"-    ,"Damn you, vile woman! Blast! What the deuce!"-    ,"Forecast for tomorrow; A few sprinkles of genius with a chance of doom."-    ]------- Actual quotes from an asshat called Keal over Jan 12-14 2006.------ Reappared as OrangeKid, --- 06.10.18:19:44:00 --- join: OrangeKid -- (n=TRK@unaffiliated/Keal) joined #haskell----kealList :: [String]-kealList =-    ["endian mirrors the decimal"-    ,"primary elemental assumption of integer coefficients to roots in counting sytem is wrong"-    ,"actually it bug in math"-    ,"b*(Floor[v/b^p]/b-Floor[Floor[v/b^p]/b])"-    ,"proofs are no longer sound"-    ,"my proof show math is broken right now"-    ,"doctor just give meds not fix prollem"-    ,"Keal was so happy with T, coded in basic so run on anything, and does lot"-    ,"one prollem. T broke confines of the visual basic langage and would not compile"-    ,"perhaps i just genius and never tested"-    ,"and yes that was with zero formal training in all realms"-    ,"somone would expect that trees 500gb hdds of expressions as if they were floppy dicks"-    ,"can you make a macro that builds the expression accoridng to a genetic algorithm where you decide what is good and what is bad?"-    ,"T could perform expressions 600mb and bigger"-    ,"what is the max amount of operands haskell can handle in a single expression?"-    ,"T seems to be haskell, except with a decent interface at this point"-    ,"love a black and white lower 128 from 32 up of ascii glyphs?"-    ,"evaluating expressions is ALL haskell does?????"-    ,"you think i am one of them persnipity uppity men are pig lesbian mathematicians?"-    ,"how bout i say ick no unicorn and daisy loving girl mathematician will ever enjoy this"-    ,"better be atleast 16x16 color with extended ascii set"-    ,"what the hell does Prelude > mean?"-    ,"how do i search for someone saying 'Keal' in mirc"-    ,"i have basically written a proof that shows an assumption is wrong"-    ,"they dumbified you"-    ,"antiparsimony were 100% correct..."-    ,"its because the timeline diverges and past events themselves unhappen"-    ,"all i know is i have experienced my own death unhappening..."-    ," what have you been smoking? you narrow minded Haskell user?"-    ,"i use an 8088"-    ,"are there full body recognition files for sorting art?"-    ,"my very first computer was an 80-0840"-    ,"it is very easy to go off topic"-    ,"someone needs to write a boids for haskell that emulates humans going on and off topic"-    ,"i just got banned from math because i not have good ability to convey thoughts"-    ,"i lack in verbal and social expression"-    ,"i try make program called Glyph to do it but my script lang called T too slow. i invent T"-    ,"can GMP support KealDigit? I invent KealDigit"-    ,"with KealDigit quantum crackproof encryption possible"-    ,"i show how spell triangle in less than three corners using darkmanifold"-    ,"can haskell pipe the raw irrational megaequation into an analog device"-    ,"the fractal is 5 irrationals"-    ,"99% of my book has been erased by faulty hdd's"-    ,"last day i was in my lab i had a diagram which might have removed pi"-    ,"i only trust opensource tools. where can i download haskell for windows?"-    ,"obviously you never heard of Tier. theoretically it would work using nanobots"-    ,"you need a Zh function in Haskell"-    ,"can haskell compile flash animations and java apps?"-    ,"i need math friendly compiler to compile for jvm or flash"-    ,"Cale etc already pointed out Haskell is puny to nothing to emulate using my barrage of mathematic theories"-    ,"i prove infinity never ends in both directions"-    ,"are you saying i am MegaMonad?"-    ,"Keal angry @ dons"-    ,"i can explain why something is without knowing what the rules decided by man are"-    ,"making a bot of me is highly offensive"-    ,"just seeing how offtopic i could get everyone"-    ,"intuitive != imperative"-    ,"doubles and floats cause b*(Floor[v/b^p]/b-Floor[Floor[v/b^p]/b) to fuck up"-    ,"what are epsilons?"-    ,"haskell always said undefined"-    ,"bot seems useless"-    ,"when i put what i dat recoved from that tile into a ti92. the damn thing blew up"-    ,"i think it because mathematics damage you cpu"-    ,"ithink has to do with hardcased government failsafe in chip"-    ,"i suggest you tear apart a 20q and plug it with the alg"-    ,"nsa has all the profiling info you need to come up with the correct survey answers"-    ,"write an algorthim that generates the correct responses for a phone survey based on number of rings whether answered how quickly hung up on and the mood of the receiver"-    ,"where can i find opensource schematics of Linus Torvalds' x86 clone?"-    ,"need to plan a fieldtrip to Frederick B. Mancoff of Freescale Semiconductor"-    ,"ghc need to have plugin that allow copy paste in xp"-    ,"know you know this 24 periods Keal SecretTM"-    ,"tomorrow i share next mathematical secrety"-    ,"nsa prevent me from returning to math on efnet"-    ,"nsa try kill me numerous times"-    ,"#haskell needs to take its meds"-    ,"i think i know what code does but code looks to simple to actually do it"-    ,"need 1 to do a while 0 does !a. need 1 to do a while 0 does !a"-    ,"will it return [] if map gives fpu infinite list?"-    ,"today's 24hour project was supposed to be logical overloading using plegm method"-    ,"there is no way to prove the failsafe exists"-    ,"oh btw my fpu is blown due to a hardcased failsafe i have 3 year warranty right. and then they call fads"-    ,"i aint running that on my puter"-    ,"lamadabot took 5 to 8 whole seconds to return []"-    ,"bot defective"-    ,"i changed my user od"-    ,"i cant think anymore"-    ,"i want to invent white dye"-    ,"pork steaks taste like dick"-    ,"i dont really eat vegetables unless cheese is a vegetable"-    ,"the [nsa] even make light green both ways once"-    ,"i still dont understand how gci is supposed to do anything other than mathematics"-    ]------- Quotes from the lyrics of B52s songs. They remind me (dons) of zippy.--- -b52s :: [String]-b52s =-    [ "His ear lobe fell in the deep. Someone reached in and grabbed it. It was a rock lobster!"-    , "Watch out for that piranha. There goes a narwhale. HERE COMES A BIKINI WHALE!"-    , "She drove a Plymouth Satellite faster than the speed of light!"-    , "Some say she's from Mars, or one of the seven stars that shine after 3:30 in the morning. WELL SHE ISN'T."-    , "It's a dreary downtown day, but at the end of my 40 foot leash is my little friend quiche."-    , "Girl from Ipanema, she goes to Greenland"-    , "Hot pants explosion at the factory!"-    , "You belong in Ripley's Believe It Or Not"-    ]------- Quotes from the pinky and the brain cartoon----brain :: [String]-brain =-    [("Gee, Brain, what are we going to do tonight?\n"  ++-      "The same thing we do every night, Pinky. Try to take over the world!")-    , "Narf!"-    , "Zort!"-    , "Poit!"-    , "Troz!"-    , "It must be inordinately taxing to be such a boob."-    , "Promise me something, Pinky. Never breed."-    , "Pinky, I am in considerable pain."-    , "Here we are, Pinky--at the dawn of time!"-    ,("Now, Pinky, if by any chance you are captured during this mission, \n" ++-      "remember you are Gunther Heindriksen from Appenzell. You moved to Grindelwald\n" ++-      "to drive the cog train to Murren.  Can you repeat that?")-    ,("Brain! Brain! You aren't going to leave me!!!???" ++-      "You know what happened to Jerry Lewis after Dean Martin left him!!!")-    , "They've turned into giant Swiss leaderhosen-clad dancing yodelers. Talk about unpredictable!"-    , "Be quiet Pinky, or I shall have to hurt you."-    , "If I could reach you I would hurt you."-    ,("What can I do for fun, Pinky? That's it! I'll send several\n" ++-      "bills to Senate for ratification, then veto them all!")-    , "There's only one ride that interests me - the incredible thrill ride of taking over the world!"-    ,("It is here that my cheap workforce of trained iguanas will work\n" ++-      "night and day to make our shoes to my exacting specifications!")-    ,("Has it ever occurred to you, Pinklet, that your scarf is\n" ++-      "constricting the bloodflow to your head?")-    , "Are you pondering what I'm pondering?"-    ] ++ brainPondering-brainPondering :: [String]-brainPondering =-    [ "But where are we going to find a duck and a hose at this hour?"-    , "But where will we find an open tattoo parlor at this time of night?"-    , "Uh... yeah, Brain, but where are we going to find rubber pants our size?"-    , "Uh, I think so, Brain, but balancing a family and a career ... ooh, it's all too much for me."-    , "Wuh, I think so, Brain, but isn't Regis Philbin already married?"-    , "Wuh, I think so, Brain, but burlap chafes me so."-    , "Uh, I think so, Brain, but we'll never get a monkey to use dental floss."-    , "Uh, I think so Brain, but this time, you wear the tutu."-    , "I think so, Brain, but culottes have a tendency to ride up so."-    , "I think so, Brain, but if they called them 'Sad Meals', kids wouldn't buy them!"-    , "I think so, Brain, but me and Pippi Longstocking -- I mean, what would the children look like?"-    , "Well, I think so, Brain, but I can't memorize a whole opera in Yiddish."-    , "I think so, Brain, but there's still a bug stuck in here from last time."-    , "Uh, I think so, Brain, but I get all clammy inside the tent."-    , "I think so, Brain, but I don't think Kaye Ballard's in the union."-    , "I think so, Brain, but, the Rockettes? I mean, it's mostly girls, isn't it?"-    , "I think so, Brain, but pants with horizontal stripes make me look chubby."-    , "Well, I think so, Brain, but pantyhose are so uncomfortable in the summertime."-    , "Well, I think so, Brain, but it's a miracle that this one grew back."-    , "Well, I think so, Brain, but first you'd have to take that whole bridge apart, wouldn't you?"-    , "Well, I think so, Brain, but 'apply North Pole' to what?"-    , "Umm, I think so, Brain, but what if the chicken won't wear the nylons?"-    , "I think so, Brain, but isn't that why they invented tube socks?"-    , "Well, I think so Brain, but what if we stick to the seat covers?"-    , "Oooh, I think so Brain, but I think I'd rather eat the Macarena."-    , "Well, I think so, but Kevin Costner with an English accent?"-    , "I think so, Brain, but don't you need a swimming pool to play Marco Polo?"-    , "Well, I think so, Brain, but do I really need two tongues?"-    , "I think so, Brain, but we're already naked."-    , "I think so, Brain, but Lederhosen won't stretch that far."-    , "Yeah, but I thought Madonna already had a steady bloke!"-    , "I think so, Brain, but how would we ever determine Sandra Bullock's shoe size?"-    , "I think so, Brain, but a codpiece made from a real fish would get smelly after a while, wouldn?t it?"-    , "I think so, Commander Brain from Outer Space! But do we have time to grease the rockets?"-    , "I think so, Doctor. But are these really the legs of a show girl?"-    , "Whuu... I think so, BrainPan! But if running shoes had little feet, wouldn't they need their own shoes?"-    , "I think so, Brain! But ruby-studded stockings would be mighty uncomfortable wouldn't they?"-    , "I think so, Brain! How much deeper would the ocean be if there weren't sponges down there?"-    , "I think so, Brain! But do I have what it take to be the 'Lord of the Dance'?"-    , "I think so, Brain, but I didn't know 90210 was a real zip code! Will Tori be there?"-    , "The game does not conclude until the woman with the eating disorder ululates."-    ]------- Girl 19, Apr 11, 2006----girl19 :: [[Char]]-girl19 =-    ["is this a help channel for hackers-beginners?"-    ,"I have been into not actually hacking, but social engineering"-    ,"I have stolen about 50 msn and yahoo accounts"-    ,"I'm in Moscow, Russia"-    ,"nobody can catch me"-    ,"well.. I never hacked Russians"-    ,"am I supposed to be frantic with terror and anxiety?"-    ,"LOL"-    ,"I've always found myself unequal to the intellectual pressure of programming"-    ]------- v used to be a bug in @eval.  See the logs from April 9, 2006.----notoriousV :: [[Char]]-notoriousV =-    [show "\"\\\"\\\\\\\"\\\\\\"-    ,show "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\"-    ,show "\""-    ,show "\"#$%&'()*+,\""-    ,"Exception: <<loop>>"-    ,"Just 'J'"-    ]------- A troll going by the names:------  proton-gun tbon shemale_magic HeyObjects parnassus gavino---  hypothesys octon ava-its-pssa mel-gibson java-or-no proton-gun---  protontorpedo deathsstar gavino99 proton-weapon thumper9 star-trekio---  differentActGetD howya-doin linux-fun boobhz booger perlIsBetter---  ramserver newlambder bublle-war ion-cannon thailand-fan blaastaar------ n=bo@pool-71-106-182-86.lsanca.dsl-w.verizon.net--- n=root@masqrd.la.teampcs.com--- n=gschuett@masqrd.la.teampcs.com--- n=gschuett@68.183.75.2--- n=gschuett@208.201.11.51--- n=gschuett@4.38.41.141------ Trolled on and off for 10 months------ First appeared:---  05.10.05:16:51:41 --- join: howya-doin (n=gschuett@208.201.11.51) joined #haskell--- Last appeared:---  06.08.14:11:48 -- mode/#haskell [+b *!*n=bo@*.lsanca.dsl-w.verizon.net] by dons------ Reappeared a few weeks later from a new ip address.--- --- Reappeared:--- 15:52 [freenode] -- ion-cannon [n=tits@pool-71-106-175-237.lsanca.dsl-w.verizon.net]--- 15:52 [freenode] --  ircname  : wilt chamberlain------ 19:55 -- mode/#haskell [+b *!*n=tits@*.lsanca.dsl-w.verizon.net] by -- dons------ Reappeared: 06.11.28---  10:34 [freenode] -- thailand-fan [n=bill@4.38.41.141]---  10:34 [freenode] --  ircname  : bill gates---  10:34 [freenode] --  channels : ##linux #archlinux ------ Reappeared: 06.12.08---  blaastaar (n=gschuett@4.38.41.141) joined #haskell------ -protontorpedo :: [String]-protontorpedo =-    [--- comparing haskell-    "wil haskell make mroe more money?",-    "wil I make mroe $$ than learning java or APL or smalltalk or plt scheme or ruby or perl or clisp?",-    "why is haskell bette than java? java has a shitload of frameworks. its xrazy",-    "is haskell doomed to be a mysql driver?",-    "and haskell is not a lisp. correct? holy shit then m learning haskell",-    "is haskell better than APL or perl or clisp?",-    "ok is haskell a type of lisp?",-    "hakell is not lisp or ml right?",-    "how deos haskell differ from ml or lisp?",-    "what makes haskell more fun than say clisp?",-    "here is the big one: is it mroe prctical than say python?",-    "so can haskell do what perl does but simpler?",-    "so haskell is new and improved c?",-    "how does haskell compare to j2ee?",-    "how does j2ee compare to haskell?",-    "can haskell do same stuff as J2EE but nicer?",-    "is haskell able to outdo perl or python for web?",-    "how is smalltalk different from haskell?",-    "how does haskell compare to say java?",-    "can haskell outdo java and jboss n stuff?",-    "how does haskell compare to c++?",-    "how is haskell different than java?",-    "so haskell is different from lisp?",-    "how abut vs APL",-    "what is haskell?",-    "is it nicer than APL?",-    "is haskell nicer than clisp?",-    "what does haskell do better than java perl or ruby?",-    "is it a form of lisp?",-    "why haskell over lisp?",-    "why haskell over say clsip or smalltalk?",-    "so why would one prefer haskell to say clisp or smalltalk?",-    "why haskell over say smalltalk",-    "is haskell more powerful than perl? or scheme?",-    "is haskella lisp?",-    "so haskells better than smalltalk and clsip?",---- more questions-    "what is the best absolute beginner utorial for haskell?",-    "Im wondering if there are uncharted business waters that haskell can enable, even if it is simply by not accepting norms",-    "so is haskell going to redo x windows and make it better?",-    "is haskell going to rewite linux and make it better?",-    "is there going to be a better dns server in haskell?",-    "can haskell be used to develop databases?",-    "evaluation seems ideal for banks who want to know global balances etc.",-    "what is so good about continuations/",-    "is it fun to program in haskell?",-    "paul graham said static typing and ML types fo lisp hurt exploratory progrmaming",-    "why did someone create haskell?",-    "can u build things fast in haskell?",-    "is functional progrmaming the same as object oriented?",-    "I read somewhere that large systms get confusing and haskell ends up a s a bunch of functions",-    "is haskell more powerful than any jedii?",-    "lazy makes macro not needed?",-    "wat is lazy evaluation?",-    "so this java guy I know says that java is the best when things get really complex and u need your apps do do real work",-    "how does haskell do with large systems?",-    "so with 100s of users adn different daabases haskell does fine?",-    "so if I learn haskell i can make cool interactive websites and get rich right?",-    "what echniques can be used to scael application in haskell?",-    "whera re the end user apps?",-    "why would u write a interpreter for perl in haskell?",-    "what Is writen in haskell that gets work done?",-    "so there is no database, monitoring system, web browser, webserver, or scheduling ssytem in haskell?",-    "is there a decent scheduler in haskell? how about a netwrok monitor?",-    "is functional ebtter than oo?",-    "cant u just have data in arrays and do operations using you prog lang?",-    "troll?",-    "cmon Im asking cool questions",-    "Im not a loser",-    "so given that how does haskell let one turn business calcualtion anreocrding of info into somethng liek a big spreadsheet?",-    " and is haskell ez to debug?",-    "am I cracked?",-    "hey guys can haskeel be used to produce fast webapps?",-    "does haskell sclae up to programming in the large?",-    "or does it become a mishmash of code?",-    "as u scale and complexity grows?",-    "so how do you use haskell tools to build large programs?",-    "whats a module?",-    "and haskell is general purpose?",-    "can I build a sales database with it?",-    "can I build something that lets laptop users sync contacts and client dta over the net?",-    "are you wealthy concultants?",-    "does haskel work one windows?",-    "is there an oo db in haskell?",-    "oleg?",-    "please expalin pure and lazy a little (im igonorant i know)?",-    "so haskell is free?",-    "how fast is the haskell web serve for dynamic content? siriam from scheme says the scheme one si FAT AS HEK",-    "how can haskell automate ftp?",-    "how do we automate ftp file transfers with haskell?",-    "what is a good way to handle the ftp transfer and reading of files to mysql?",-    "some dude called topmind says that oo is bs",-    "are objects kina just subroutines",-    "smalltalk is oo",-    "hu me/",-    "its bs dude",-    "that dude is selling u  a book",-    "look at smalltalk. they invented oo proramming",-    "The things I dotn get about relatinal databases is that they take wrok to maintain",-    "I got some info b 4 about how lazy eval makes macros not needed please expand...",-    "waht is this D&D",-    "syntax ur runing my high",-    "on the haskell site they compare haskell to a spreadsheet",-    "how would haskell solve the following gnarley problem: many client distributed accross the usa, transfers must take palce in the form of file transfer, and data must be read from files, and recorded, then other partners who apply taxes to this data and then give abck new files with taxes aded, then last transers to 4th parties who get us paid for the phone calls that are the product",-    "where was haskell during th internet boom?",-    "no I cant read online for long my eyes get fuzzy",-    "help please",-    "treid comon lisp. ansi common lisp bok by graham. it sucked",-    "I dont know any programming yet at 33 dream of learning ti and gettign rich",-    "windows is validating itelf a lot during ownloads altely",-    "why haskell over smalltalk? I thought smalltalked rocked",-    "can haskell do data transfer from box to box over sockets?",-    "is ghc bad for learning?",-    "does huge or ghc have more stuff?",-    "is it hard to set up n ready my pc for programming?",---- statements-    "im such an asshole",-    "I hear from an essay by E raymod that perl is shitty for large projects",-    "ok so say I ftp files from some 50 remote servers now, and then read them inot mysql, then ftp back to an ohter 50 servers some info they read into thier informix db",-    "I personally emailed paul graham the lisp guy today after reading about python in E raymonds essay he metions ruby n python is u cant use lisp",-    "I had one guy tell me he was 16x as fast to develop something in smalltalk",-    "check otu squeak seems dope",-    "I have perl bok but saw haskell and am woner hey this is new and improved and seems powerful because MIT guy philip green says haskell adn lisp are only langs where u spend more tie thinking than coding",-    "paul graham said static typing is a problem for macros building",-    "I dont think tcl cn do that",-    "I am banned from like 6 rooms",-    "scheme, lisp, php, python, perl, tcl, al banned",-    "Im really only a bash person and even then Im tin",-    "i have a win xp box"+-- | Some quote text+module Plugin.Quote.Text where++-- | Some funny palomer-isms+palomer :: [String]+palomer =+    ["Blargh!"+    ,"Hrmph"+    ,"They're telling you lies!"+    ,"Scalliwags!"+    ,"Pfft"+    ,"Pfft, my type inference algorithm takes hours on a 2 line program"+    ,"Hrmph, looks like I killed the channel"+    ,"As someone who's studied GADTs, I've never found a use for them."+    ,"Category theory is the Paris Hilton of mathematics"+    ,"That's nuts!"+    ,"Brump!"+    ,"I think you're all nuts"+    ,"That's a lie"+    ,"Learning vim is pointless"+    ,"I think vim is good for the rubbish bin"+    ,"xml stands for \"xtremely mild lullaby\""+    ,"woof"+    ,"(_|_)"+    ,"I have news for you, it's pointless"+    ,"You're all nuts"+    ]++-- | Some pirate quotes+arrList :: [String]+arrList =+    ["Avast!"+    ,"Shiver me timbers!"+    ,"Yeh scurvy dog..."+    ,"I'll keel haul ya fer that!"+    ,"I want me grog!"+    ,"Drink up, me 'earties"+    ,"Smartly me lass"+    ,"Arrr!"+    ,"Ahoy mateys"+    ,"Aye"+    ,"Aye Aye Cap'n"+    ,"Swab the deck!"+    ,"Keelhaul the swabs!"+    ,"Yo ho ho, and a bottle of rum!"+    ,"I'll crush ye barnacles!"+    ,"Har de har har!"+    ]++-- | More pirate quotes+yarrList :: [String]+yarrList =+    arrList +++    ["I heard andersca is a pirate"+    ,"I'd like to drop me anchor in her lagoon"+    ,"Well me 'earties, let's see what crawled out of the bung hole..."+    ,"Is that a hornpipe in yer pocket, or arr ya just happy ta see me?"+    ,"Get out o' me way, yeh landlubber"+    ,"Yarrr!"+    ,"This is the END for you, you gutter-crawling cur!"+    ,"May the clap make ye incapable of Cracking Jenny's Tea Cup."+    ,"Eat maggoty hardtack, ye unkempt, jenny frequentin', son of a gun."+    ,"What be a priate's favourite cheese?\nYarrlsburg!"+    ,"Where d' all t' pirates come from?\nGreat Yarrmouth!"+    ,"Prepare to be boarded!"+    ,"Gangway!"+    ,"Splice the Mainbrace!"+    ,"Arr! Me ship be the biggest brig in the port!"+    ,"Well Ahoy! thar."+    ]++--+-- Stewie Griffin is great+--+stewieList :: [String]+stewieList =+    ["You. Fetch me my copy of the Wall Street Journal. You two, fight to the death."+    ,"Yes, I rather like this God fellow. He's very theatrical, you know, a pestilence here, a plague there. Omnipotence. Gotta get me some of that"+    ,"I've got a better idea. Let's go play \"swallow the stuff under the sink.\""+    ,"I've got an army to raise and I must get to Nicaragua. I require a window seat and an in-flight Happy Meal AND NO PICKLES. OH, GOD HELP YOU IF I FIND PICKLES"+    ,"Damn you, vile woman! Blast! What the deuce!"+    ,"Forecast for tomorrow; A few sprinkles of genius with a chance of doom."+    ]++--+-- Actual quotes from an asshat called Keal over Jan 12-14 2006.+--+-- Reappared as OrangeKid,+-- 06.10.18:19:44:00 --- join: OrangeKid -- (n=TRK@unaffiliated/Keal) joined #haskell+--+kealList :: [String]+kealList =+    ["endian mirrors the decimal"+    ,"primary elemental assumption of integer coefficients to roots in counting sytem is wrong"+    ,"actually it bug in math"+    ,"b*(Floor[v/b^p]/b-Floor[Floor[v/b^p]/b])"+    ,"proofs are no longer sound"+    ,"my proof show math is broken right now"+    ,"doctor just give meds not fix prollem"+    ,"Keal was so happy with T, coded in basic so run on anything, and does lot"+    ,"one prollem. T broke confines of the visual basic langage and would not compile"+    ,"perhaps i just genius and never tested"+    ,"and yes that was with zero formal training in all realms"+    ,"somone would expect that trees 500gb hdds of expressions as if they were floppy dicks"+    ,"can you make a macro that builds the expression accoridng to a genetic algorithm where you decide what is good and what is bad?"+    ,"T could perform expressions 600mb and bigger"+    ,"what is the max amount of operands haskell can handle in a single expression?"+    ,"T seems to be haskell, except with a decent interface at this point"+    ,"love a black and white lower 128 from 32 up of ascii glyphs?"+    ,"evaluating expressions is ALL haskell does?????"+    ,"you think i am one of them persnipity uppity men are pig lesbian mathematicians?"+    ,"how bout i say ick no unicorn and daisy loving girl mathematician will ever enjoy this"+    ,"better be atleast 16x16 color with extended ascii set"+    ,"what the hell does Prelude > mean?"+    ,"how do i search for someone saying 'Keal' in mirc"+    ,"i have basically written a proof that shows an assumption is wrong"+    ,"they dumbified you"+    ,"antiparsimony were 100% correct..."+    ,"its because the timeline diverges and past events themselves unhappen"+    ,"all i know is i have experienced my own death unhappening..."+    ," what have you been smoking? you narrow minded Haskell user?"+    ,"i use an 8088"+    ,"are there full body recognition files for sorting art?"+    ,"my very first computer was an 80-0840"+    ,"it is very easy to go off topic"+    ,"someone needs to write a boids for haskell that emulates humans going on and off topic"+    ,"i just got banned from math because i not have good ability to convey thoughts"+    ,"i lack in verbal and social expression"+    ,"i try make program called Glyph to do it but my script lang called T too slow. i invent T"+    ,"can GMP support KealDigit? I invent KealDigit"+    ,"with KealDigit quantum crackproof encryption possible"+    ,"i show how spell triangle in less than three corners using darkmanifold"+    ,"can haskell pipe the raw irrational megaequation into an analog device"+    ,"the fractal is 5 irrationals"+    ,"99% of my book has been erased by faulty hdd's"+    ,"last day i was in my lab i had a diagram which might have removed pi"+    ,"i only trust opensource tools. where can i download haskell for windows?"+    ,"obviously you never heard of Tier. theoretically it would work using nanobots"+    ,"you need a Zh function in Haskell"+    ,"can haskell compile flash animations and java apps?"+    ,"i need math friendly compiler to compile for jvm or flash"+    ,"Cale etc already pointed out Haskell is puny to nothing to emulate using my barrage of mathematic theories"+    ,"i prove infinity never ends in both directions"+    ,"are you saying i am MegaMonad?"+    ,"Keal angry @ dons"+    ,"i can explain why something is without knowing what the rules decided by man are"+    ,"making a bot of me is highly offensive"+    ,"just seeing how offtopic i could get everyone"+    ,"intuitive != imperative"+    ,"doubles and floats cause b*(Floor[v/b^p]/b-Floor[Floor[v/b^p]/b) to fuck up"+    ,"what are epsilons?"+    ,"haskell always said undefined"+    ,"bot seems useless"+    ,"when i put what i dat recoved from that tile into a ti92. the damn thing blew up"+    ,"i think it because mathematics damage you cpu"+    ,"ithink has to do with hardcased government failsafe in chip"+    ,"i suggest you tear apart a 20q and plug it with the alg"+    ,"nsa has all the profiling info you need to come up with the correct survey answers"+    ,"write an algorthim that generates the correct responses for a phone survey based on number of rings whether answered how quickly hung up on and the mood of the receiver"+    ,"where can i find opensource schematics of Linus Torvalds' x86 clone?"+    ,"need to plan a fieldtrip to Frederick B. Mancoff of Freescale Semiconductor"+    ,"ghc need to have plugin that allow copy paste in xp"+    ,"know you know this 24 periods Keal SecretTM"+    ,"tomorrow i share next mathematical secrety"+    ,"nsa prevent me from returning to math on efnet"+    ,"nsa try kill me numerous times"+    ,"#haskell needs to take its meds"+    ,"i think i know what code does but code looks to simple to actually do it"+    ,"need 1 to do a while 0 does !a. need 1 to do a while 0 does !a"+    ,"will it return [] if map gives fpu infinite list?"+    ,"today's 24hour project was supposed to be logical overloading using plegm method"+    ,"there is no way to prove the failsafe exists"+    ,"oh btw my fpu is blown due to a hardcased failsafe i have 3 year warranty right. and then they call fads"+    ,"i aint running that on my puter"+    ,"lamadabot took 5 to 8 whole seconds to return []"+    ,"bot defective"+    ,"i changed my user od"+    ,"i cant think anymore"+    ,"i want to invent white dye"+    ,"pork steaks taste like dick"+    ,"i dont really eat vegetables unless cheese is a vegetable"+    ,"the [nsa] even make light green both ways once"+    ,"i still dont understand how gci is supposed to do anything other than mathematics"+    ]++--+-- Quotes from the lyrics of B52s songs. They remind me (dons) of zippy.+--+b52s :: [String]+b52s =+    [ "His ear lobe fell in the deep. Someone reached in and grabbed it. It was a rock lobster!"+    , "Watch out for that piranha. There goes a narwhale. HERE COMES A BIKINI WHALE!"+    , "She drove a Plymouth Satellite faster than the speed of light!"+    , "Some say she's from Mars, or one of the seven stars that shine after 3:30 in the morning. WELL SHE ISN'T."+    , "It's a dreary downtown day, but at the end of my 40 foot leash is my little friend quiche."+    , "Girl from Ipanema, she goes to Greenland"+    , "Hot pants explosion at the factory!"+    , "You belong in Ripley's Believe It Or Not"+    ]++--+-- Quotes from the pinky and the brain cartoon+--+brain :: [String]+brain =+    [("Gee, Brain, what are we going to do tonight?\n"  +++      "The same thing we do every night, Pinky. Try to take over the world!")+    , "Narf!"+    , "Zort!"+    , "Poit!"+    , "Troz!"+    , "It must be inordinately taxing to be such a boob."+    , "Promise me something, Pinky. Never breed."+    , "Pinky, I am in considerable pain."+    , "Here we are, Pinky--at the dawn of time!"+    ,("Now, Pinky, if by any chance you are captured during this mission, \n" +++      "remember you are Gunther Heindriksen from Appenzell. You moved to Grindelwald\n" +++      "to drive the cog train to Murren.  Can you repeat that?")+    ,("Brain! Brain! You aren't going to leave me!!!???" +++      "You know what happened to Jerry Lewis after Dean Martin left him!!!")+    , "They've turned into giant Swiss leaderhosen-clad dancing yodelers. Talk about unpredictable!"+    , "Be quiet Pinky, or I shall have to hurt you."+    , "If I could reach you I would hurt you."+    ,("What can I do for fun, Pinky? That's it! I'll send several\n" +++      "bills to Senate for ratification, then veto them all!")+    , "There's only one ride that interests me - the incredible thrill ride of taking over the world!"+    ,("It is here that my cheap workforce of trained iguanas will work\n" +++      "night and day to make our shoes to my exacting specifications!")+    ,("Has it ever occurred to you, Pinklet, that your scarf is\n" +++      "constricting the bloodflow to your head?")+    , "Are you pondering what I'm pondering?"+    ] ++ brainPondering+brainPondering :: [String]+brainPondering =+    [ "But where are we going to find a duck and a hose at this hour?"+    , "But where will we find an open tattoo parlor at this time of night?"+    , "Uh... yeah, Brain, but where are we going to find rubber pants our size?"+    , "Uh, I think so, Brain, but balancing a family and a career ... ooh, it's all too much for me."+    , "Wuh, I think so, Brain, but isn't Regis Philbin already married?"+    , "Wuh, I think so, Brain, but burlap chafes me so."+    , "Uh, I think so, Brain, but we'll never get a monkey to use dental floss."+    , "Uh, I think so Brain, but this time, you wear the tutu."+    , "I think so, Brain, but culottes have a tendency to ride up so."+    , "I think so, Brain, but if they called them 'Sad Meals', kids wouldn't buy them!"+    , "I think so, Brain, but me and Pippi Longstocking -- I mean, what would the children look like?"+    , "Well, I think so, Brain, but I can't memorize a whole opera in Yiddish."+    , "I think so, Brain, but there's still a bug stuck in here from last time."+    , "Uh, I think so, Brain, but I get all clammy inside the tent."+    , "I think so, Brain, but I don't think Kaye Ballard's in the union."+    , "I think so, Brain, but, the Rockettes? I mean, it's mostly girls, isn't it?"+    , "I think so, Brain, but pants with horizontal stripes make me look chubby."+    , "Well, I think so, Brain, but pantyhose are so uncomfortable in the summertime."+    , "Well, I think so, Brain, but it's a miracle that this one grew back."+    , "Well, I think so, Brain, but first you'd have to take that whole bridge apart, wouldn't you?"+    , "Well, I think so, Brain, but 'apply North Pole' to what?"+    , "Umm, I think so, Brain, but what if the chicken won't wear the nylons?"+    , "I think so, Brain, but isn't that why they invented tube socks?"+    , "Well, I think so Brain, but what if we stick to the seat covers?"+    , "Oooh, I think so Brain, but I think I'd rather eat the Macarena."+    , "Well, I think so, but Kevin Costner with an English accent?"+    , "I think so, Brain, but don't you need a swimming pool to play Marco Polo?"+    , "Well, I think so, Brain, but do I really need two tongues?"+    , "I think so, Brain, but we're already naked."+    , "I think so, Brain, but Lederhosen won't stretch that far."+    , "Yeah, but I thought Madonna already had a steady bloke!"+    , "I think so, Brain, but how would we ever determine Sandra Bullock's shoe size?"+    , "I think so, Brain, but a codpiece made from a real fish would get smelly after a while, wouldn?t it?"+    , "I think so, Commander Brain from Outer Space! But do we have time to grease the rockets?"+    , "I think so, Doctor. But are these really the legs of a show girl?"+    , "Whuu... I think so, BrainPan! But if running shoes had little feet, wouldn't they need their own shoes?"+    , "I think so, Brain! But ruby-studded stockings would be mighty uncomfortable wouldn't they?"+    , "I think so, Brain! How much deeper would the ocean be if there weren't sponges down there?"+    , "I think so, Brain! But do I have what it take to be the 'Lord of the Dance'?"+    , "I think so, Brain, but I didn't know 90210 was a real zip code! Will Tori be there?"+    , "The game does not conclude until the woman with the eating disorder ululates."+    ]++--+-- Girl 19, Apr 11, 2006+--+girl19 :: [[Char]]+girl19 =+    ["is this a help channel for hackers-beginners?"+    ,"I have been into not actually hacking, but social engineering"+    ,"I have stolen about 50 msn and yahoo accounts"+    ,"I'm in Moscow, Russia"+    ,"nobody can catch me"+    ,"well.. I never hacked Russians"+    ,"am I supposed to be frantic with terror and anxiety?"+    ,"LOL"+    ,"I've always found myself unequal to the intellectual pressure of programming"+    ]++--+-- v used to be a bug in @eval.  See the logs from April 9, 2006.+--+notoriousV :: [[Char]]+notoriousV =+    [show "\"\\\"\\\\\\\"\\\\\\"+    ,show "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\"+    ,show "\""+    ,show "\"#$%&'()*+,\""+    ,"Exception: <<loop>>"+    ,"Just 'J'"+    ]++protontorpedo :: [String]+protontorpedo =+    [+-- comparing haskell+    "wil haskell make mroe more money?",+    "wil I make mroe $$ than learning java or APL or smalltalk or plt scheme or ruby or perl or clisp?",+    "why is haskell bette than java? java has a shitload of frameworks. its xrazy",+    "is haskell doomed to be a mysql driver?",+    "and haskell is not a lisp. correct? holy shit then m learning haskell",+    "is haskell better than APL or perl or clisp?",+    "ok is haskell a type of lisp?",+    "hakell is not lisp or ml right?",+    "how deos haskell differ from ml or lisp?",+    "what makes haskell more fun than say clisp?",+    "here is the big one: is it mroe prctical than say python?",+    "so can haskell do what perl does but simpler?",+    "so haskell is new and improved c?",+    "how does haskell compare to j2ee?",+    "how does j2ee compare to haskell?",+    "can haskell do same stuff as J2EE but nicer?",+    "is haskell able to outdo perl or python for web?",+    "how is smalltalk different from haskell?",+    "how does haskell compare to say java?",+    "can haskell outdo java and jboss n stuff?",+    "how does haskell compare to c++?",+    "how is haskell different than java?",+    "so haskell is different from lisp?",+    "how abut vs APL",+    "what is haskell?",+    "is it nicer than APL?",+    "is haskell nicer than clisp?",+    "what does haskell do better than java perl or ruby?",+    "is it a form of lisp?",+    "why haskell over lisp?",+    "why haskell over say clsip or smalltalk?",+    "so why would one prefer haskell to say clisp or smalltalk?",+    "why haskell over say smalltalk",+    "is haskell more powerful than perl? or scheme?",+    "is haskella lisp?",+    "so haskells better than smalltalk and clsip?",++-- more questions+    "what is the best absolute beginner utorial for haskell?",+    "Im wondering if there are uncharted business waters that haskell can enable, even if it is simply by not accepting norms",+    "so is haskell going to redo x windows and make it better?",+    "is haskell going to rewite linux and make it better?",+    "is there going to be a better dns server in haskell?",+    "can haskell be used to develop databases?",+    "evaluation seems ideal for banks who want to know global balances etc.",+    "what is so good about continuations/",+    "is it fun to program in haskell?",+    "paul graham said static typing and ML types fo lisp hurt exploratory progrmaming",+    "why did someone create haskell?",+    "can u build things fast in haskell?",+    "is functional progrmaming the same as object oriented?",+    "I read somewhere that large systms get confusing and haskell ends up a s a bunch of functions",+    "is haskell more powerful than any jedii?",+    "lazy makes macro not needed?",+    "wat is lazy evaluation?",+    "so this java guy I know says that java is the best when things get really complex and u need your apps do do real work",+    "how does haskell do with large systems?",+    "so with 100s of users adn different daabases haskell does fine?",+    "so if I learn haskell i can make cool interactive websites and get rich right?",+    "what echniques can be used to scael application in haskell?",+    "whera re the end user apps?",+    "why would u write a interpreter for perl in haskell?",+    "what Is writen in haskell that gets work done?",+    "so there is no database, monitoring system, web browser, webserver, or scheduling ssytem in haskell?",+    "is there a decent scheduler in haskell? how about a netwrok monitor?",+    "is functional ebtter than oo?",+    "cant u just have data in arrays and do operations using you prog lang?",+    "troll?",+    "cmon Im asking cool questions",+    "Im not a loser",+    "so given that how does haskell let one turn business calcualtion anreocrding of info into somethng liek a big spreadsheet?",+    " and is haskell ez to debug?",+    "am I cracked?",+    "hey guys can haskeel be used to produce fast webapps?",+    "does haskell sclae up to programming in the large?",+    "or does it become a mishmash of code?",+    "as u scale and complexity grows?",+    "so how do you use haskell tools to build large programs?",+    "whats a module?",+    "and haskell is general purpose?",+    "can I build a sales database with it?",+    "can I build something that lets laptop users sync contacts and client dta over the net?",+    "are you wealthy concultants?",+    "does haskel work one windows?",+    "is there an oo db in haskell?",+    "oleg?",+    "please expalin pure and lazy a little (im igonorant i know)?",+    "so haskell is free?",+    "how fast is the haskell web serve for dynamic content? siriam from scheme says the scheme one si FAT AS HEK",+    "how can haskell automate ftp?",+    "how do we automate ftp file transfers with haskell?",+    "what is a good way to handle the ftp transfer and reading of files to mysql?",+    "some dude called topmind says that oo is bs",+    "are objects kina just subroutines",+    "smalltalk is oo",+    "hu me/",+    "its bs dude",+    "that dude is selling u  a book",+    "look at smalltalk. they invented oo proramming",+    "The things I dotn get about relatinal databases is that they take wrok to maintain",+    "I got some info b 4 about how lazy eval makes macros not needed please expand...",+    "waht is this D&D",+    "syntax ur runing my high",+    "on the haskell site they compare haskell to a spreadsheet",+    "how would haskell solve the following gnarley problem: many client distributed accross the usa, transfers must take palce in the form of file transfer, and data must be read from files, and recorded, then other partners who apply taxes to this data and then give abck new files with taxes aded, then last transers to 4th parties who get us paid for the phone calls that are the product",+    "where was haskell during th internet boom?",+    "no I cant read online for long my eyes get fuzzy",+    "help please",+    "treid comon lisp. ansi common lisp bok by graham. it sucked",+    "I dont know any programming yet at 33 dream of learning ti and gettign rich",+    "windows is validating itelf a lot during ownloads altely",+    "why haskell over smalltalk? I thought smalltalked rocked",+    "can haskell do data transfer from box to box over sockets?",+    "is ghc bad for learning?",+    "does huge or ghc have more stuff?",+    "is it hard to set up n ready my pc for programming?",++-- statements+    "im such an asshole",+    "I hear from an essay by E raymod that perl is shitty for large projects",+    "ok so say I ftp files from some 50 remote servers now, and then read them inot mysql, then ftp back to an ohter 50 servers some info they read into thier informix db",+    "I personally emailed paul graham the lisp guy today after reading about python in E raymonds essay he metions ruby n python is u cant use lisp",+    "I had one guy tell me he was 16x as fast to develop something in smalltalk",+    "check otu squeak seems dope",+    "I have perl bok but saw haskell and am woner hey this is new and improved and seems powerful because MIT guy philip green says haskell adn lisp are only langs where u spend more tie thinking than coding",+    "paul graham said static typing is a problem for macros building",+    "I dont think tcl cn do that",+    "I am banned from like 6 rooms",+    "scheme, lisp, php, python, perl, tcl, al banned",+    "Im really only a bash person and even then Im tin",+    "i have a win xp box"+    ]++-- farberisms from http://www.cs.arizona.edu/icon/oddsends/farber.htm+farberList :: [String]+farberList =+    [+    "We need to rein in our horns.",+    "A problem swept under the table occasionally comes home to roost.",+    "From here on up, it's down hill all the way.",+    "Don't look a charlie horse in the mouth.",+    "He's cornered on all sides.",+    "I don't trust him farther than you can bat an eye.",+    "Don't talk to me with your clothes on.",+    "Put yourself in his boat.",+    "If that happened to me, I'd clean my ears out with a pistol.",+    "It's a white elephant around my neck.",+    "What can we do to shore up these problems?",+    "I have a green thumb up to my elbow.",+    "Let's bend a few lapels.",+    "I'm over the hilt.",+    "The viewpoints run from hot to cold.",+    "Don't look for your balls in someone else's court.",+    "We've taken our eyes off the wrong ball.",+    "That's the way the cookie bounces.",+    "He's sawing his limb off.",+    "Nobody's going to put his neck out on a limb.",+    "Now he's sweating in his own pool.",+    "We have a difference of agreement.",+    "I want to go into that at short length.",+    "The sword works two ways.",+    "Better to toil in anonymity than to have that happen.",+    "Please come here ipso pronto.",+    "I just pulled those out of the seat of my pants.",+    "He's leading down the path to the chicken coup.",+    "I'm gaining weight hand over fist.",+    "I'll fight him hand and nail.",+    "Don't roll up your nostrils at me.",+    "It's wrought with problems.",+    "It's your ball of wax, you unravel it.",+    "Let them fry in their socks.",+    "I'm not a lily-livered sea horse.",+    "It's the vilest smell I ever heard.",+    "It goes in one era and out the other.",+    "It's a lot of passed water under the bridge.",+    "Just remember, this too will come to pass.",+    "Eventually, I want it now.",+    "You're bonking up the wrong tree.",+    "My socks are all bent out of shape.",+    "It's a monkey wrench in your ointment.",+    "He's being pruned for the job.",+    "One doesn't swallow the whole cake at the first sitting.",+    "Let's not cook the goose until it's hatched.",+    "People in glass houses shouldn't call the kettle black.",+    "Familiarity breed strange bed linen.",+    "They're cooking on all cylinders.",+    "We can dig ourselves out of this hole.",+    "It's like the flood of the Hesperis.",+    "It hit the epitome of it.",+    "My mind slipped into another cog.",+    "That would throw a monkey wrench into their ointment.",+    "I'm going to feel it out by the ear.",+    "He's taking the bark off the wrong tree.",+    "He waxed incensive.",+    "I just got my car fixed and it's runnin' like a dime.",+    "Clean up your own can of worms!",+    "We just have to take the grit in our teeth and do it.",+    "It's enough to curl your socks.",+    "Be careful not to throw out the bath water with the baby.",+    "We're biting the foot the feeds us.",+    "He's got a tough axe to hoe.",+    "Don't rattle the cage that feeds you.",+    "Fade out in a blaze of glory.",+    "When in doubt, tread on oily water.",+    "That may cool some socks.",+    "They've reached a new level of lowness.",+    "Take this time line with a large grain of salt.",+    "He's taking his half out of our middle.",+    "He's a little clog in a big wheel.",+    "Float off into several individual conferees.",+    "I've been bitten by the hand that feeds me.",+    "Those guys are as independent as hogs on ice.",+    "Don't bite the hand that stabs you in the back.",+    "I'm going to resolve it by ear.",+    "You can't get more out of a turnip than you put in.",+    "Shoot it up the flag pole.",+    "It's just another coffin nail driven into the morality of the United States.",+    "If I'm going to suffer, I might as well suffer in comfort.",+    "I've got to get my ass together.",+    "Don't look a gift horse in the pocketbook.",+    "I don't want to put all my monkeys in one barrel.",+    "It is better to have tried and failed than never to have failed at all.",+    "Hindsight is 50-50.",+    "I'm smarting at the seams.",+    "Keep the water as firm as possible until a fellow has his feet on the ground.",+    "I won't do it if it's the last thing I do!",+    "Omens are made to be broken.",+    "He came in on my own volition.",+    "His foot is in his mouth up to his ear.",+    "I had to throw some feathers on the troubled water.",+    "It's bouncing like a greased pig.",+    "That's when I first opened an eyelash.",+    "They're arriving like flies.",+    "As a token of my unfliching love ... .",+    "They keep petering in.",+    "They don't stand a tea bag's chance in hell.",+    "I'm your frontface in this matter.",+    "Why put off today what you can do tomorrow?",+    "That's a camel's eye strained through a gnat's tooth.",+    "We know a lot more than we're not telling.",+    "Mother's a little slow around the gills.",+    "You're barking up a tree with no branches.",+    "It's a future idea of the past.",+    "I'd like to put another foot into the pot.",+    "It's sloppy mismanagement.",+    "It was a maelstrom around his neck.",+    "I'm as happy as a pig in a blanket.",+    "They've dumped you in the briar patch and told you to sink or swim.",+    "Conceptual things are in the eye of the beholder.",+    "An enigma is only as good as it's bottom line.",+    "Let's all corrugate over here to view the artist's contraception of our new building.",+    "That was a mere peanut in the bucket.",+    "Sometimes I don't have both sails in the water.",+    "One pig must be the guinea.",+    "Let's skin another can of worms.",+    "It rolls off like a boulder on a duck's back.",+    "If the shoe fits, lie in it.",+    "It's been ubiquitously absent.",+    "That took the edge off the pumpkin.",+    "I'm talking up a dead alley.",+    "Give him enough rope and he will run away with it.",+    "Fry him by his bootstraps.",+    "Does he think he walks on water any differently than anyone else?",+    "Don't lead them down the garden path and cut them off at the knees.",+    "He's got his intentions crossed.",+    "She makes Raquel Welch look like Twiggy standing backwards.",+    "This is a land-breaking case.",+    "He's so far above me I can't reach his bootstraps.",+    "We need to screw our noses to the grindstone.",+    "It's not his bag of tea.",+    "It's like trying to squeeze blood out of a stone.",+    "All our feathers came home to roost.",+    "I'm going to litigate it to the eyeballs.",+    "Don't twiddle your kneecaps at me!",+    "My marbles went over the wall.",+    "She attracted men like flypaper.",+    "He puts on his shirt one leg at a time like everyone else.",+    "It has the potential to peel away a curious can of worms.",+    "He's one of the world's greatest flamingo dancers.",+    "Judge him by his actions, not his deeds.",+    "People who live in ivory towers shouldn't throw glass bricks.",+    "We'll cross that bridge after we've burned it behind us.",+    "You really can't compare us -- our similarities are different.",+    "It's something you're all dying to wait for.",+    "I don't feel any older than I used to be.",+    "That took the starch out of my sails.",+    "Too many cooks upset the apple cart.",+    "No Californian will walk a mile if possible.",+    "The aggressor is on the wrong foot.",+    "Don't throw out the bath water with the baby.",+    "Put that in your pocket and smoke it!",+    "That didn't amount to a hill of worms.",+    "Half a worm is better than none.",+    "I shot my ass in the foot.",+    "She stepped full-face on it.",+    "You're barking up the wrong totem pole.",+    "It rolls off her back like a duck.",+    "I guess I'd better get my duff on the road.",+    "It was a heart-rendering decision.",+    "I'm not sure it's my bag of tea.",+    "Look before you turn the other cheek.",+    "We're willing to throw away the baby with the bath water.",+    "I don't want to be the pie that upset the apple cart.",+    "Nostalgia just isn't what it used to be.",+    "It's just a small kink in the ointment.",+    "I came within a hair's breathe of it.",+    "Don't talk to me while I'm interrupting.",+    "He's just a big bullyrag.",+    "Is he an Amazon!",+    "I'll take it one bird at a time.",+    "It's not an easy thing to get your teeth wet on.",+    "I hear the handwriting on the wall.",+    "Pandora's cat is out of the bag.",+    "Rome wasn't built on good intentions alone.",+    "I have no personal bones to grind about it.",+    "Our company is like a living orgasm.",+    "We've got a cash cow that's turning into a dog that needs milking.",+    "You're about as observant as a wet hen.",+    "It's like Goliath and Gomorrah.",+    "Her enthusiasm got carried away.",+    "A rocky road is easier to travel than a stone wall.",+    "Let me flame your fan.",+    "The bloom is off the pumpkin.",+    "I'm going right over the bend.",+    "They'll carve that spectrum any way we desire it.",+    "Don't pour oil on muddy water.",+    "You saw right through my transparency.",+    "He grates me the wrong way.",+    "Let's shoot holes at it.",+    "Don't put all your chickens in one basket.",+    "I did it sitting flat on my back.",+    "I have ears like a hawk.",+    "He won't last. He's just a flash in the pants.",+    "That really throws a monkey into their wrench.",+    "You bet your bottom bootie I don't!",+    "I don't want to open up a red herring here.",+    "They are just prostituting the ills of the world.",+    "I'm walking on cloud nine.",+    "I wouldn't take him on a ten foot pole.",+    "Run it up the flag pole and see if it salutes.",+    "It flows like water over the stream.",+    "If I've told you a hundred times, I've told you twice.",+    "99% of this game is half mental.",+    "I'm as happy as a clam in a fritter.",+    "He's as deaf as a bat.",+    "Any night in a storm.",+    "I'm bored out of my tree.",+    "Today's forecast is for wildly scattered showers.",+    "He's out of his shallow.",+    "Good riddance aforethought.",+    "If I could drop dead right now, I'd be the happiest man alive.",+    "Don't put all your ducks in one basket.",+    "There are no easy bullets.",+    "Try thinking outside the egg carton for a change.",+    "I'm up to my earballs in confusion.",+    "The grocer's son always has shoes.",+    "It runs the full width of the totem pole.",+    "We'll have to sandwich everything we do under this one umbrella.",+    "I don't toe to any cow.",+    "He's a shirking violet.",+    "Don't jump off the gun.",+    "Let's not reinvent a dead horse.",+    "He has a marvelous way of extruding you.",+    "Don't count your fleas before they find dogs.",+    "That's worse than running chalk up and down your back.",+    "They run across the gamut.",+    "I'm as happy as cheese at high tide.",+    "It went over like a thud.",+    "My off-the-head reaction is negative.",+    "Make hash while time flies.",+    "Those words were very carefully weasled.",+    "She's steel wool and a yard wide.",+    "I wouldn't give it to a wet dog.",+    "The future is not what it used to be.",+    "I case my ground very well before I jump into it.",+    "A shoe in time saves nine.",+    "All the hills of beans in China don't matter.",+    "You're barking down the wrong well.",+    "It has more punch to the unch.",+    "I'm not much for tooting my own galoot.",+    "This ivory tower we're living in is a glass house.",+    "Clean up or fly right.",+    "Hold on real quick.",+    "Beggars can't look a gift horse in the mouth.",+    "He got up on his high heels.",+    "There's no point in spilling milk on a barn door that has hatched.",+    "It's like trying to light a fire under a lead camel.",+    "He should be gracious for small favors.",+    "It's as flat as a door knob.",+    "That's a kettle of different fish.",+    "Let sleeping uncertainties lie.",+    "There's a wart in the ointment.",+    "Fish or get off the pot!",+    "Boy, he sure gandered her.",+    "It's milk under the dam.",+    "That's a whole different ball of wax.",+    "At the end of every pot of gold, there's a rainbow.",+    "It goes out one ear and in the other.",+    "No sooner said, the better.",+    "I'm keeping me ear to the grindstone.",+    "Go fly your little red wagon somewhere else.",+    "Dig yourself a hole and bury it.",+    "Erase that indelibly from your memory.",+    "He's as loony as a fruitcake.",+    "He was walking along with his head in the sand.",+    "Everyone has a monkey on their back; you just have to spank your monkey.",+    "Our backs are up the wall.",+    "He's as happy as a stuffed pig.",+    "It's the Achilles' heel of the Trojan Horse.",+    "I'm close to the edge of my rope.",+    "To write a really good letter of recommendation, use all the best expletives.",+    "That just muddles the water.",+    "I'm up a wrong alley.",+    "I've worked my shins to the bone.",+    "Don't make a molehill out of a can of beans.",+    "I need to get on my Little Red Riding Horse.",+    "He has the character of navel lint.",+    "Give him a project to get his teeth wet on.",+    "Any storm in a port.",+    "Put the onus on the other foot.",+    "Do not fumble with a woman's logic.",+    "Don't bite the hand of the goose that lays the golden eggs.",+    "The project is going down the toilet in flames.",+    "I run to my own drummer.",+    "Roll out the Ouija ball.",+    "My impasse hit a roadblock.",+    "It always looks the worst after the water is under the bridge.",+    "I need to rein in my horns.",+    "If you see loose strings that have to be tied down that are not nailed up, see me about it.",+    "It got left out in the lurch.",+    "I've got a real beef to grind with that guy.",+    "He hit the nose right on the head.",+    "I'm not going to get side tracked onto a tangent.",+    "He was left out on the lurch.",+    "I'll stay away from that like a 10-foot pole.",+    "The groundwork is thoroughly broken.",+    "I have a rot-gut feeling about that.",+    "Hey, let's not go off half-crocked.",+    "Don't do anything I wouldn't do standing up in a hammock.",+    "A chain is only as strong as its missing link.",+    "Let's not open the skeleton in that closet.",+    "That's no sweat off my back.",+    "He popped out of nowhere like a jack-in-the-bean-box.",+    "I've got a card in my hole.",+    "Trying to get a doctor on Wednesday is like trying to shoot a horse on Sunday.",+    "There's going to be hell and high water to pay.",+    "It's a sight for sore ears.",+    "It's like harnessing a hare to a tortoise.",+    "There aren't any worms in his backyard.",+    "I'm going to cast my rocks to the wind.",+    "I was really impressed by the mask of Two Ton Carmen.",+    "It's a hot issue that dried up.",+    "Man cannot eat by bread alone.",+    "That's the other end of the coin.",+    "There's a dark cloud on every rainbow's horizon.",+    "I sit corrected.",+    "The atmosphere militates against a solution.",+    "What could help might work in retrospect.",+    "He's paying through the neck.",+    "The ball is in our lap.",+    "There hasn't been much of a peep about it.",+    "He's the pineapple of my eye.",+    "Mind your own petard!",+    "We didn't know which facts were incorrect.",+    "They don't like to dictate themselves to the problem.",+    "He was a living legend while he was alive.",+    "I know what we have to do to get our feet off the ground.",+    "Don't just stand there like a sitting duck.",+    "Sometimes you can learn a lot by watching.",+    "He smokes like a fish.",+    "I'm out of my bloomin' loon.",+    "Indiscretion is the better part of valor.",+    "One man's curiosity is another man's Pandora's box.",+    "His feet have come home to roost.",+    "Let's not drag out dead ghosts.",+    "She had an aurora of goodness about her.",+    "French-fried hairballs!",+    "I must stop beating my head against a dead horse.",+    "She has eyes like two holes in a burnt blanket.",+    "Never the twixt should change.",+    "It's a mare's nest in sheep's clothing.",+    "I'll let it circulate around to my post-frontal lobes.",+    "The yard arm is in your court.",+    "Don't push the flap on the envelope.",+    "I'll descend on them to the bone.",+    "Don't upset the apple sauce.",+    "The pipeline has ramped up.",+    "They're be chick peas in every pot.",+    "Don't hang you dirty linen on my caboose.",+    "I'm as happy as a stuck pig.",+    "Keep your ear peeled!",+    "I have my oars in too many boats.",+    "He's a fruit-ball.",+    "In this period of time, its getting very short.",+    "Not me, I didn't open my peep.",+    "Don't muddle the waters.",+    "I pulled my feet out from under my rug.",+    "She looks like she's been dead for several years, lately.",+    "He's feathering his own empire.",+    "If you can't do it at all, don't do it well.",+    "To sweeten the pie, I'll add some cash.",+    "There's some noise afoot about the problem.",+    "He keeps his ear to the vine.",+    "A buck in the hand is worth two on the books.",+    "He's procrastinating like a bandit.",+    "I's as finished as I'm going to take.",+    "They should goose up their technical support.",+    "It's no chip off my clock.",+    "Nobody marches with the same drummer.",+    "We shoot ourselves in the wrong feet sometimes.",+    "That's a two-edged circle.",+    "Don't look a dead horse in the mouth.",+    "A two-pawn approach is necessary.",+    "We have all passed a lot of water since then.",+    "Three hands make for lighter work.",+    "I want quality, not quantity, but lots of it.",+    "Now the laugh is on the other foot!",+    "Somebody's flubbing his dub.",+    "I need to get my ass on.",+    "He bought his own limb and crawled out on it.",+    "That's a bird of a different color.",+    "This office requires a president who will work right up to the hilt.",+    "You are never going to fail unless you try.",+    "He's reached the crescent of his success.",+    "There's no point in grasping at straws when you're barking up the wrong tree.",+    "It's the screws of progress.",+    "My head is closing in on me.",+    "You can just take your hand basket to hell!",+    "Why procrastinate now when you can wait until tomorrow?",+    "He pulled himself up on top of his own bootstraps.",+    "It's all water under the dam.",+    "My ebb is running low.",+    "Uneasy sits the head ... .",+    "They were made up to the gills.",+    "I've got to put my duff to the grindstone.",+    "Don't look a mixed bag in the mouth.",+    "It's going to knock his socks right off his kneecaps.",+    "It's a catch 20-20.",+    "Like the shoemaker's children, we have computers running out of our ears.",+    "It scared him off his pants.",+    "It might have been a figment of my illusion.",+    "I'm listening with baited ears.",+    "A stitch in time saves oil on troubled waters.",+    "He's got the guts to be courageous.",+    "It's a fluid thing that can swing on a dime.",+    "We're up to our armpits in frozen alligators.",+    "We have some outstanding gray areas.",+    "It's the straw that broke the ice.",+    "He's working like a banshee.",+    "I can't get a straight thought in edgewise.",+    "Have we been cast a strange eye at?",+    "Let a sleeping dog call the kettle black.",+    "That's the way the old ball game bounces.",+    "I have people crawling out of my ears.",+    "We got the story post hoc.",+    "I've got the fort nailed down.",+    "Cheapness doesn't come free.",+    "He disappeared from nowhere.",+    "Boy, is that decapitated.",+    "Don't stick your oar in muddy waters.",+    "When in Rome, do as the Romans do: stay away from the place.",+    "It's a fiat accompli.",+    "We'd better jump under the bandwagon before the train leaves the station.",+    "A bachelor's life is no life for a single man.",+    "This is a farbarbarism!",+    "My foot is going out of its mind.",+    "Don't pull a panic button.",+    "I'm the top dog lion.",+    "No one can predict the wheel of fortune as it falls.",+    "You're treading on thin water.",+    "You've always been the bone of human kindness.",+    "He's salivating at the chops.",+    "We're caught between a rock and a wet spot.",+    "Let's look at it from the other side of the view.",+    "I don't want to throw a wrench in the ointment.",+    "Don't cut off your ass to spite your face.",+    "In one nose, out the other.",+    "He's seething at the teeth.",+    "This will shock you nude.",+    "It's a new high in lows.",+    "They just want to chew the bull.",+    "He's a splitting image of the candidate.",+    "His eyeballs perked up.",+    "He's stone blind.",+    "Get the hot poop right off the vine.",+    "Keep this under your vest.",+    "It may seem incredulous, but it's true.",+    "It's your turn in the apple cart.",+    "It goes from one gamut to another.",+    "I'm not trying to grind anybody's axes.",+    "HE doesn't look like he has a scruple in his head.",+    "He's a key cog in the ointment.",+    "He's a real squash buckler.",+    "There's a strong over current here.",+    "I'm signing my own death knell.",+    "You're barking  up the wrong tree stump.",+    "My ears are ringing off the wall.",+    "They're breathing down our nose.",+    "I'm losing pens like they were dishwater.",+    "They fell all over their faces.",+    "I need to get my ass together.",+    "Any golden parachute in a storm.",+    "She's greasing her own spoon.",+    "Don't rattle the cage that bites you.",+    "Let's go outside and commiserate with nature.",+    "He reminds me of Zorba the Geek.",+    "It's a tempest in a teacup.",+    "This is for your FYI.",+    "If you're waiting for Hell to freeze over, you're skating on thin ice.",+    "That was almost half done unconsciously.",+    "That's a measle-worded statement if I ever heard one.",+    "Beware a horse weaving a Trojan blanket.",+    "If you'd let me, I'd forget the shirt off my back.",+    "That would drive him right out of his banana.",+    "One does not want to let the government's nose under the camel.",+    "They've got the bull by the tail now.",+    "We don't want a neophyte we have to wet nurse.",+    "It plunged all over the place.",+    "I have to get my act in gear.",+    "He's too smart for his own bootstraps.",+    "Everything's all ruffled over.",+    "That sure takes the steam out of the sails.",+    "We'll burn that bridge when we get to it.",+    "I'm wimping at the seams.",+    "I'm ground up to a high pitch.",+    "I guess I'm putting all my birds in one pie.",+    "The importance of that cannot be underestimated.",+    "Give him a square shake.",+    "Put your knuckles to the grindstone.",+    "I can do it with one eye tied behind me.",+    "Let's stop beating around a dead horse and cut right to the mustard.",+    "It's going to go up the tubes.",+    "Nobody could fill his socks.",+    "I'm going to blow their socks out of the water.",+    "That makes me as mad as a wet hatter.",+    "There's a missing gap somewhere.",+    "Now we have some chance to cut new water.",+    "The system got caught with its pants down.",+    "She could charm the door knobs off the top of a temple.",+    "That doesn't cut any weight with him.",+    "That aspect permutes the whole situation.",+    "I'm Pepto-bilious.",+    "I'm up against a blind wall.",+    "I'd as soon wipe my nose with a pot holder as get in bed with him.",+    "Necessity is the mother of strange bed linen.",+    "They closed the doors after the barn was stolen.",+    "It was an infringement of my imagination.",+    "Better sorry than safe.",+    "I'm going right out of my bonker.",+    "You're a sore sight for eyes.",+    "It peaked my interest.",+    "There's a lot of blanche here to carte.",+    "They're like two chick peas in a pod.",+    "It's a tough road to haul.",+    "The eggs we put all in one basket have come home to roost.",+    "Don't oil your feathers with troubled water.",+    "I'm just about to lose my gourd.",+    "I wouldn't throw a wet blanket on a cold turkey if I were you.",+    "He's barking down the wrong tree.",+    "It's a sight to make your eyes water.",+    "This makes me so sore it gets my dandruff up.",+    "Get off the stick and do something.",+    "Sometimes fact is stranger than truth.",+    "I'm up to my earballs in garbage.",+    "It's the blind leading the deaf.",+    "He's trying to get his bearing together.",+    "They're germs in the rough.",+    "It's not my cup of pie.",+    "Peanut butter jelly go together hand over fist.",+    "He's singing a little off-keel.",+    "I can smell the finish line.",+    "That's way down in the chicken feed.",+    "I don't always play with a full house of cards.",+    "It's not that kind of zero.",+    "That's a different cup of fish.",+    "It's under closed doors.",+    "Screwed by my own petard, as it were.",+    "The lights are so bright the air is opaque.",+    "If we keep going this way, somebody is going to be left standing at the church with his pants on.",+    "They've done that before and in the past.",+    "He's as happy as clam chowder.",+    "I heard it out of the corner of my ear.",+    "You hit it right on the nail.",+    "I was thinking out of the corner of my eye.",+    "I had to make a split decision.",+    "It's a small weenie in the fast-food restaurant of life.",+    "He's spending a lot of brunt on the task.",+    "I want to get more fire into the iron.",+    "I don't know what else I can do ... my shoes are tied.",+    "I'm mad enough to fry a wet hen.",+    "It's going to fall on its ass from within.",+    "He's off in a cloud of \"hearty heigh-ho Silver\".",+    "It's the bird song of paradise.",+    "You're eating like wildfire.",+    "If there's no fire, don't make waves.",+    "You should talk to her; she's a mind field of information.",+    "He's somewhere down wind of the innuendo.",+    "Speaking off the hand, I'd advise you to quit.",+    "Don't open Pandora's can of worms.",+    "He's as ugly as Godzilla the Hun.",+    "Don't throw a monkey wrench into the apple cart.",+    "Let me take you under my thumb.",+    "Don't pull out the rug from under the horses in midstream.",+    "Vision is in the eyes of the beholder.",+    "The domestic problems are a terrible can of worms.",+    "I'm bored stuffless.",+    "I'd lose my screw if it wasn't on my head.",+    "I'm in my reclining years.",+    "All you have to do is fill in the missing blanks.",+    "Play one excuse against another.",+    "I'm parked somewhere in the boondoggles.",+    "They're falling on hollow ears.",+    "Don't morbidize me!",+    "We are on equally unfooted ground.",+    "It's good to get a taste of someone else's moccasins.",+    "It caught me out of the blue.",+    "All the lemmings are coming home to roost.",+    "Let's talk to the horse's mouth.",+    "Bend over backwards too far and you'll fall flat on your face.",+    "If anything, I bend over on the backwards side.",+    "He would forget his head if it weren't screwed up.",+    "That's enough to make your sock explode.",+    "The world is closing in on my head.",+    "Things are going to a hand basket in hell.",+    "No loaf is better than half a loaf at all.",+    "It's your turn in the bottom of the barrel.",+    "Go for the juggler!",+    "He doesn't let any moss grow under him.",+    "A look from here would melt his socks.",+    "He's like a wine glass in a storm.",+    "I only mentioned it to give you another side of the horse.",+    "Don't count your chickens until the barn door is closed.",+    "He doesn't know his hole from an ass in the ground.",+    "To be a leader, you have to develop a spear de corps.",+    "He's king bee.",+    "Don't pour troubled oil into the water.",+    "That report reads like a bleached whale.",+    "Our product will eat the pants off the competition!",+    "If they do it there won't be a living orgasm left.",+    "I apologize on cringed knees.",+    "It's an ill wind that doesn't dry someone's clothes.",+    "It's going to bog everybody up.",+    "Right off the top of my cuff, I don' know what to say.",+    "He has an agenda to grind.",+    "I've had more girls than you've got hair between your teeth.",+    "They've got their heads squirreled upside down.",+    "Put it in a guinea sack.",+    "He's bailing him out of the woods.",+    "Don't kiss a gift horse in the mouth.",+    "I'm torn between a rock and a hard place.",+    "It's all above and beyond board.",+    "Your ass is going to be mud.",+    "We might as well be hanged for an inch as for a mile.",+    "He has his ass on the wrong end of his head.",+    "It's the sine quo non of necessity.",+    "The restaurants are terrible -- the town is completely indigestible.",+    "I have the mind of a steel trap.",+    "This business is being run by bean-pushers.",+    "It leaks like a fish.",+    "We'll put our mouth where our money is.",+    "Not by the foggiest stretch of the imagination!",+    "Don't throw feathers on oily water.",+    "We're on the foreskin of modern technology.",+    "I'm just about out of my bonker.",+    "His position is not commiserate with his abilities.",+    "Come down off your charlie horse.",+    "Do you have your screws on right?",+    "That's going to be the gravy on the cake!",+    "I'm creaking at the seams.",+    "We'd better toe the yard arm.",+    "When the tough get going they let sleeping does lie.",+    "His limitations are limitless.",+    "There are two sides to every marshmallow.",+    "I threw the tie iron in the fire.",+    "They're dropping his course like flies.",+    "No dust grows under her feet.",+    "Don't let the government's nose under the camel.",+    "It's like a raft on roller skates.",+    "They've got everything from soup to hairballs.",+    "My antipathy runneth over.",+    "Don't father-hen me!",+    "It's a fool's paradise wrapped in sheep's clothing.",+    "Not in a pig's bladder you don't.",+    "Don't upset the apple pie.",+    "Don't count your high horses before they come home to roost.",+    "Every cloud has a blue horizon.",+    "Half the lies they tell me aren't true.",+    "That's an unexpected surprise.",+    "I'll give you a definite maybe.",+    "Don't throw the baby out with the dishwasher.",+    "A woman has no hell like a fury scorned.",+    "I think you might have hit the nail on the button.",+    "Let me clarify my fumbling.",+    "He's clam bait.",+    "He's trying to pull the buffalo over our eyes.",+    "I'm going to read between your lines.",+    "I can't underestimate how good he is.",+    "I think I've lost my bonkers.",+    "I heard it out of the corner of my eye.",+    "It's the holy grail of naughtiness.",+    "The autumn leaves are in full bloom.",+    "See the forest through the trees.",+    "It's enough to drive a bat up the wall.",+    "Get that albatross off his back!",+    "I'm all raveled up.",+    "We'd be biting off a new can of worms.",+    "Fellow alumni run thicker than water.",+    "We have a wild card in the soup.",+    "I reject it out of the whole cloth.",+    "It's as easy as falling off a piece of cake.",+    "She's trying to feather her own bush.",+    "You can't feed old tricks to a new dog.",+    "They don't work worth lima beans.",+    "I'm not going to bail him out of his own juice.",+    "He puts his pants on two legs at a time like everyone else.",+    "That throws a monkey wrench in the soup.",+    "He wears his finger on his sleeve.",+    "There's nothing like stealing the barn door after the horse is gone.",+    "If you don't want words put in your mouth, don't leave it hanging open.",+    "He has his crutches around her throat.",+    "They are very far and few between.",+    "They're spreading like wild flowers.",+    "They're over the pale.",+    "That's a horse of a different feather.",+    "She's got it up to her ears.",+    "We were looking out for our own bootstraps.",+    "Let's not hurdle into too many puddles at once.",+    "I worked my toes to the bonenail.",+    "Today I was singing 'Snowflakes roasting on an open file'.",+    "He's as elusive as the abdominal snowman.",+    "I resent the insinuendoes.",+    "This wine came from a really great brewery.",+    "He didn't flinch an eyelid.",+    "It's a tour de farce.",+    "It's a virgin field pregnant with possibilities.",+    "There's a little life in the old shoe yet.",+    "Don't sink the boat that lays the golden egg.",+    "Don't criticize him for lack of inexperience.",+    "That restaurant is so crowded no one goes there anymore.",+    "Go ahead; I'm all ear lobes.",+    "It's too much for it's own boots.",+    "I'm so hungry I could eat a cannibal.",+    "We won't turn a deaf shoulder to the problem.",+    "We're biting ourselves in the foot.",+    "He's been living off his laurels for years.",+    "Have the seeds we've sown fallen on deaf ears?",+    "The people are too nameless to number.",+    "Just remember that, and then forget it.",+    "That's not my sack of worms.",+    "I owe you a great gratitude of thanks.",+    "It's so unbelievable you wouldn't believe it.",+    "You're barking up the wrong lamp post.",+    "He's foot sure and fancy free.",+    "I'm as happy as a clambake.",+    "An ounce of prevention is better than pounding the table.",+    "It's the other end of the kettle of fish.",+    "I'm weighted down with baited breath.",+    "It's like finding hen's teeth in August.",+    "I've built enough fudge into that factor.",+    "He has the courage of a second-story man.",+    "That puts the onus on the other shoe.",+    "Get off your Little red Riding Hood.",+    "The seeds I've sown have come home to roost.",+    "Let it slip between the cracks.",+    "We have to read between the tea leaves.",+    "I'm losing touch by leaps and bounds.",+    "Let's get down to brass facts.",+    "I have too many cooks in the pot already.",+    "I'm the happiest little clam in the fritter.",+    "It's no sweat off my nose.",+    "I'm going off tangentially.",+    "One back scratches another.",+    "I wouldn't trust her to throw out the baby with the bath water.",+    "The horse is stolen before the barn even gets its door closed.",+    "I had her by the nap of the neck.",+    "That's spilt water under the bridge.",+    "Abandon ship, all ye who enter here.",+    "I'm right on the edge of my rope.",+    "That makes the hair on the back of my neck really stick in my craw.",+    "There's laughing on the outside, paneling on the inside.",+    "A lot of these arguments are fetious.",+    "I've had it up to the hilt.",+    "He's like Godzilla the Hun.",+    "I'm too uptight for my own bootstraps.",+    "Rolling toads gather no moss.",+    "We need to retain our strategic disadvantage.",+    "Don't look a gift horse in the left foot.",+    "All my lemmings came home to roost.",+    "They make strange bedfellows together.",+    "Don't look for a gift in the horse's mouth.",+    "You put all your eggs before the horse.",+    "This mess would make Humpty Dumpty bleed.",+    "There's some trash to be separated from the chaff.",+    "Look at the camera and say 'bird'.",+    "If King Tut were still alive, we'd be dead meat.",+    "You pay through the noodle for it.",+    "There are just too many hands to feed.",+    "I had to scratch in the back recesses of my memory.",+    "I'll be there in the next foreseeable future.",+    "He's the king of queens.",+    "I's got rats in his belfry.",+    "I wouldn't do it for a ton of bricks.",+    "Not on your bootstraps!",+    "He's the kind of guy that doesn't like it when anything out of the abnormal happens.",+    "They're very far and few between.",+    "I had a monumental idea last night, but I didn't like it.",+    "I can't hum a straight tune.",+    "I'm on my last nerve with that person.",+    "It hit me to the core.",+    "You have to take the bitter with the sour.",+    "Actually, I'm a day owl.",+    "Let a dead horse rest.",+    "Dot your t's and cross your i's.",+    "We better cover our ass and put it on their heads.",+    "Time and tide strike but once.",+    "You need some hair of the chicken.",+    "Things are getting a little sloppy around the gills.",+    "I'm pulling something over on you.",+    "There's one difficult apple in the barrel.",+    "It's spearing like wildflowers!",+    "It's a silk purse stuffed with sow's ears.",+    "I put the onus entirely on my own shoes.",+    "There's more than one way to swing a cat.",+    "I want to see the play like a hole in the head.",+    "I've been eating peanuts like they were coming out of my ears.",+    "I think that we are making an out-and-out molehill of this issue.",+    "I think the real crux is the matter.",+    "If they had to stand on their own two feet, they would have gone down the drain a long time ago.",+    "Better safe than sadistic.",+    "I'm sitting on the edge of my ice.",+    "Don't pull an enigma on me.",+    "He's riding the crest of his momentum.",+    "Don't burn your bridges until you come to them.",+    "For a change, the foot is on the other sock.",+    "It will take a while to ravel down.",+    "I would imagine he chafes a bit.",+    "They're a bunch of pushers and shavers.",+    "It's another millstone in the millpond of life.",+    "It goes from tippy top to tippy bottom.",+    "He can't hack the other can of worms.",+    "He's not breathing a muscle.",+    "Everything is going all bananas.",+    "Don't let the camels get their feet in the door.",+    "It's a Byzantine thicket of quicksand.",+    "Don't rock the boat that feeds you.",+    "She makes Atilla the Nun look like the Virgin Mary.",+    "He's got a rat's nest by the tail.",+    "They've beaten the bushes to death.",+    "He's up a creek with his paddles leaking.",+    "I see several little worms raising their heads around the corner.",+    "We have to understand the theoretical tenants here.",+    "Part of the verbiage is a language thing.",+    "History is just a repetition of the past.",+    "That's a pretty dicament.",+    "It's a mute point.",+    "I have other cats to fry.",+    "It looks like it's going to go on ad infinitum for a while.",+    "I'll fight to the nail.",+    "That's a sight for deaf ears.",+    "It's an abomination in sheep's clothing.",+    "I haven't bitten off an easy nut.",+    "I did it from start to scratch.",+    "Don't cast a gander upon the water.",+    "They sure dipsied his doodle.",+    "He's lying through his britches.",+    "The customer is always right-handed.",+    "The fruits of our labors are about to be felt.",+    "The meaning of the phrase should be clear after some medication.",+    "If they do that, they'll be committing suicide for the rest of their lives.",+    "Don't cast doubts on troubled waters.",+    "Hair balls of the world, unite!",+    "We all have to die some day, if we live long enough.",+    "And I take the blunt of it!",+    "I'm getting my revenge back.",+    "I wouldn't take it for granite, if I were you.",+    "Too many cooks call the kettle black.",+    "Good grace is in the eye of the beholder.",+    "That old witch gave me the eagle eye.",+    "It will spurn a lot of furious action.",+    "That would pry the socks off a dead cat.",+    "Those are good practices to avoid.",+    "I can't remember, but it's right on the tip of my head.",+    "Everything is ipso facto.",+    "It's hanging out like a sore tongue.",+    "They're breathing down my door.",+    "We don't want to get enhangled in that either.",+    "Take advantage of the carpe diem.",+    "Let's play the other side of the coin.",+    "That's the whole kettle of fish in a nutshell.",+    "The grass is always greener when you can't see the forest for the trees.",+    "Tread lightly on the face of the void.",+    "It's not really hide nor hair.",+    "I have feedback on both sides of the coin.",+    "Drop the other foot, for Christ's sake!",+    "He's running off at the seams.",+    "We're teetering on the edge of the brink.",+    "Between these words, fathoms have been said.",+    "He might be barking at a red herring.",+    "The up-kick of all that will be nothing.",+    "In the kingdom of the blind the one-eyed horse is king.",+    "He wants to get his nose wet in several areas.",+    "There are too many cooks and not enough Indians.",+    "It's more than the mind can boggle.",+    "He's lost his noodles.",+    "Let me transition away.",+    "That job is at the bottom of the rung.",+    "Don't disgruntle my feathers.",+    "The hand is on the wall.",+    "I'm tired from being exhausted.",+    "We snarled our teeth.",+    "That's a whole new ball park.",+    "Being able to roll with the punches comes with the territory.",+    "That's getting to the crotch of the matter.",+    "I can remember everything -- I have a pornographic mind.",+    "In one mouth and out the other.",+    "Abandon ship all you who enter here!",+    "Watch her -- she gets on the stick very quickly.",+    "She's masquerading under false pretenses.",+    "It's like a knife through hot butter.",+    "I'll see it when I believe it.",+    "Let's not get ahead of the bandwagon.",+    "To coin a cliche, let's have at them.",+    "He behaves louder than words.",+    "I'll hit him right between the teeth.",+    "There's a rotten apple in every barrel.",+    "There's only so many times you can beat a dead horse.",+    "Would you please cast a jaundiced gander at this?",+    "I only read it in snips and snabs.",+    "I'm going to put a little variety in your spice of life.",+    "Let's roll up our elbows and get to work.",+    "I wouldn't give you a pound of belly-button lint for that.",+    "Get on with the bandwagon, or get out of the pot.",+    "He's running around like a head with its chicken cut off.",+    "Let them hang in their own juice.",+    "The initiative is on the wrong foot.",+    "I thought I'd fall out of my gourd.",+    "Never judge a book by its contents.",+    "Heads will fry over this.",+    "He has the attention span of a fig newton.",+    "There must be a Godzilla of those things in there!",+    "This town is too big for both of us.",+    "Necessity is a mother.",+    "That'll fry the socks off your feet.",+    "Friends don't let friends drive them to drink.",+    "More and more people are asking for fewer and fewer pieces of the pie.",+    "Anybody who marries her would stand out like a sore thumb.",+    "It's like pulling hen's teeth.",+    "He couldn't see his way out of a paper bag.",+    "It's like talking to a needle in a haystack.",+    "In one follicle, out the other.",+    "I don't feel like the sharpest button on the beach today.",+    "We're going to where we're going.",+    "I'll keep my nose peeled.",+    "He got taken right through the nose.",+    "He rules with an iron thumb.",+    "It sounds like roses to my ears.",+    "That really took the steam out of their sails.",+    "Never accept an out-of-state sanity check.",+    "It dates back to the Holy Roller Empire.",+    "Better never than late.",+    "I don't want to cast a pall on the water.",+    "He may be the greatest piece of cheese that ever walked down the plank.",+    "Give him an inch and he'll screw you.",+    "There's a war in my ointment.",+    "Strike while the cat is hot.",+    "I wouldn't want to be sitting in his shoes.",+    "I see the carrot at the end of the tunnel.",+    "Too many chiefs spoil the soup.",+    "Don't pour oil on troubled feathers.",+    "It's music to your eyes.",+    "I need to find out where his head is coming from.",+    "He's an incremental creep.",+    "We're scraping the bottom of the iceberg.",+    "Don't jump on a ship that's going down in flames.",+    "Let him try this in his own petard!",+    "The next time I take you anywhere, I'm leaving you at home.",+    "My train of thought went out to lunch.",+    "Medicate on it.",+    "I don't know which dagger to clothe it in.",+    "Feather your den with somebody else's nest.",+    "My head is twice its size.",+    "A lot of things are going to be bywashed.",+    "I was working my balls to the bone.",+    "It gets grained into you.",+    "Cut bait and talk turkey.",+    "I got you by the nap of your neck.",+    "He's too clever for his own bananas.",+    "Pick them up from their bootstraps.",+    "He's as loony as a jay bird.",+    "He was running around like a person with his chicken cut off.",+    "I'd better get my horse on it's ass.",+    "My gourd is up a tree.",+    "He was hoisted by a skyhook on his own petard!",+    "I listen with a very critical eye.",+    "It was nothing. You planted the seed and I ran with it.",+    "I have an open mind &mdash; like a sieve.",+    "You're blowing it all out of context.",+    "It's crumbling at the seams.",+    "I was treading on silk gloves.",+    "I have post-naval drip.",+    "He out-positioned me.",+    "They just want to shoot the fat.",+    "This befalls on all of us.",+    "I'm casting the dye on the face of the water.",+    "Do it now, before the worm turns.",+    "You're skating on thin eggs.",+    "It's about as satisfactory as falling off a log.",+    "If you want to be heard, go directly to the horse's ear.",+    "We're treading on new water.",+    "He was a living legend when he was still alive.",+    "Pour midnight oil on troubled waters.",+    "Were you by yourself or alone?",+    "He didn't even bat an eyebrow.",+    "For all intensive purposes, the act is over.",+    "They kicked the tar out of our ass.",+    "She had a missed conception.",+    "We have achieved a wide specter of support.",+    "I wouldn't marry her with a twenty-foot pole.",+    "All the lemmings are going home to roost.",+    "He's the best programmer east of the Mason-Dixon line.",+    "I'm throwing those ideas to you off the top of my hat.",+    "She was sitting there with an insidious look on her face.",+    "I'm running around like a one-armed paper bandit.",+    "That'll rattle your socks.",+    "We need an escape goat.",+    "You have to bite the bullet, take the bull by the horns and make him face the music.",+    "They don't see eye for eye with us.",+    "I'm being raped over the coals.",+    "It's an off-the-cheek comment.",+    "He kicked the nail right in the head.",+    "Somebody is going to have to take a forefront here.",+    "He's going to fall flat on his feet.",+    "I accept it with both barrels.",+    "I'm tickled green.",+    "She'll fight it tooth and toenail.",+    "I'm burning my bridges out from under me!",+    "The town is a simmering powder keg.",+    "The faculty has cast a jaundiced eye upon the waters.",+    "Look up that word in your catharsis!",+    "I'm willing to throw my two cents into the fire.",+    "Let's throw some feathers on the oily water.",+    "I'm ready to go when the bell opens.",+    "There's a lot of credibility in that gap!",+    "It's a hairy can of worms.",+    "She can stew in her own rhubarb.",+    "I have to put my knuckles to the grindstone.",+    "My mind went blank and I had to wait until the dust cleared.",+    "He flipped his cork.",+    "Pictures speak louder than words.",+    "It's burned to shreds.",+    "It's better to be a big fish than a little pond.",+    "I could tell you stories that would curdle your hair.",+    "He's running from gamut to gamut.",+    "I never liked you and I always will.",+    "There are more feathers here than there are marbles in a candy store.",+    "Don't Chicken-Little me!",+    "It went through the palm of my shoe.",+    "Half a loaf is better than two in the bush.",+    "I'm waiting for her to get enough resultage.",+    "Let's get our signals crossed before the meeting.",+    "That's a project of a different horse.",+    "They descended on me like a hoar of locust.",+    "I know those woods like the back of my head.",+    "I sloughed it under the rug.",+    "That's a matter for sore eyes.",+    "I can meet your objections.",+    "Don't cut off the limb you've got your neck strung out on.",+    "They're working their bones off.",+    "Don't throw ruffled feathers on troubled water.",+    "He's being shifted from shuttle to cock.",+    "It's as dry as dish water.",+    "He needs to get blown out of his water.",+    "We worked at a meticulous pace.",+    "Don't discombonbulate the apple cart.",+    "I've got applicants up to the ears.",+    "We're biting our foot to spite our nose.",+    "I contributed to the charity of my cause.",+    "Shit or cut bait.",+    "He's tossing symbols around like a percussionist in a John Philip Sousa band.",+    "Let's grab the initiative by the horns.",+    "He's a nut-cake.",+    "They wrecked havoc in the kitchen.",+    "I'm not my keeper's brother.",+    "Old habits die young.",+    "Are there any problems we haven't beat out to death?",+    "He's as fruity as a loon.",+    "He's crazier than Jude's fruitcake.",+    "They're eating out of our laps.",+    "We pulled the cork on Pandora's Box.",+    "I'm so proud of myself I could pop a hissy.",+    "He's a young peeksqueek.",+    "You can lead a pig to pearls, but you can't make a sow's ear drink.",+    "They's chomping their lips at the prospect.",+    "I was bleeding like a pig stuck in a trough.",+    "I'm looking at it with a jaundiced ear.",+    "I'm waiting for him to drop the other foot.",+    "I'm as happy as a clam in pig broth.",+    "I won't cow-tail to anyone.",+    "I'd like to strike while the inclination is hot.",+    "A little hindsight is forethought.",+    "Their attitude is to let lying dogs sleep.",+    "They rolled their eyebrows at me.",+    "In this vein I will throw out another item for Pandoras' box.",+    "The fervor is so deep you can taste it.",+    "Each day I never cease to be amazed.",+    "We are paying for the sins of serenity.",+    "If you listen in the right tone of voice, you'll hear what I mean.",+    "I need to glue my nose to the grind stone.",+    "It's about 15 feet as the eye flies.",+    "Getting him to do anything is like pulling hen's teeth.",+    "They're colder than blue blazes.",+    "Please don't leave me out with the wolves to dry!",+    "Don't blow a hissie.",+    "I'm a mere fragment of my imagination.",+    "They went after him tooth and fang.",+    "The ball is in the other person's lap.",+    "I don't care if the rain don't shine.",+    "I don't want to violate anyone's toenails.",+    "Jesus died to save our sins.",+    "He's as crazy as a fruitcake.",+    "It was an unintentional accident.",+    "Let's raise our horizons.",+    "They laid their guts on the line.",+    "She'll whine bloody murder.",+    "Let sleeping dogs bite the hand that feeds them.",+    "I'd better jack up my bootstraps and get going.",+    "You're opening a complete can of Pandora's worms there.",+    "There's less money in the pie than there used to be.",+    "There's always a rotten monkey in every barrel.",+    "He's screw-loose and fancy free.",+    "He rammed it down their ears.",+    "Don't push the envelope over the edge of the cliff.",+    "It's the greatest thing since fired whiskey.",+    "It's a fine-feathered kettle of fish.",+    "I don't want to stick my hand in the mouth that's feeding me.",+    "He faded out of anonymity.",+    "No moss grows on his stone.",+    "Don't put all you irons on the fire in one pot.",+    "Don't look a Trojan horse in the mouth.",+    "I'm within a hairshirt of being done.",+    "I come to you on bended bootstrap.",+    "He puts his heads on one neck at a time.",+    "He's got so much zap he can barely twitch.",+    "There's more than one way to lick a cat.",+    "He's guilty of obfuscation of justice.",+    "This thing kills me to the bone.",+    "I'm losing my gourd.",+    "Don't through midnight candles on oily water.",+    "I'm just a cog in the wheel.",+    "He faked a bluff.",+    "Just use your own excretion.",+    "You're going to have fun whether you like it or not.",+    "You're scraping the top of the barrel.",+    "Anything he wants is a friend of mine.",+    "That's the straw that broke the camel's hump.",+    "Pledge now and join the list of growing members.",+    "Don't buy a greased pig in a poke.",+    "He's the last straw on the camel's back to be called.",+    "After that, we'll break our gums on the computer.",+    "He threw an extra wrench into the pot.",+    "I'm going to take my vendetta out on them.",+    "He and his group are two different people.",+    "He was hoisted by his own canard.",+    "You get more for your mileage that way.",+    "We're overpaying him, but he's worth it.",+    "Well, it's no skin off my teeth.",+    "He has his foot in the pie.",+    "There was danger lurking under the tip of an iceberg.",+    "Those guys weld a lot of power.",+    "There is some milk of contention between us.",+    "You can't clothe a sow's ear in a silk gown.",+    "If you want to get your jollies off, watch this!",+    "Don't bury your bridges before you cross them.",+    "Sometimes you've just got to grab the cow by the tail and face the music.",+    "When you're jumping on sacred cows, you've got to watch your step.",+    "Its coming down like buckets outside.",+    "If you're sick, you'd better not come in. I don't want you to start an academic.",+    "Let he who casts the first stone cast it in concrete.",+    "I'm not going to beat a dead horse to death.",+    "Who needs mental health when you can have Prozac?",+    "Too many drinks spoil the broth.",+    "It's a hairy banana.",+    "They're coming farther between.",+    "If you ask him he could wax very quickly on that subject.",+    "I'm pissed out of my bootstraps.",+    "We have to make sure we're all swimming on the same page.",+    "That's water under the dam.",+    "I need to get my high horse in gear.",+    "They're moving as fast as molasses wheels.",+    "Today was like the day Rome was built in; we can't afford to have any fiddlers.",+    "It's raining like a bandit.",+    "There's a flaw in the ointment.",+    "Don't put all your flamingos in one basket.",+    "I'm deathly curious.",+    "Take care of two stones with one bird.",+    "You take the chicken and run with me.",+    "I'd rather be tight than right.",+    "Don't strike any bells while the fire is hot.",+    "It's a mare's nest of rat nests.",+    "He's running around like a chicken with his ass cut off.",+    "He has feet of molasses.",+    "They also wait who only stand and stare.",+    "He's got a lot of fires to burn.",+    "I have to get my guts up.",+    "I don't have any monkey wrenches in my closet.",+    "A sock in time saves none.",+    "It's perfect, but it will have to do.",+    "I'll be there with spades one.",+    "Make hay while the apple is ripe.",+    "That puts the icing on the kibosh.",+    "Don't look a door knocker in the nose.",+    "People who live in glass houses should be the last ones to throw the first stone.",+    "All good things come to pass.",+    "We're cooking on all cylinders.",+    "We have a real messy ball of wax.",+    "I'm going to clean your cake!",+    "He's like sheep in a bullpen.",+    "A nickel ain't worth a dime anymore.",+    "Don't rock the boat that launched the cat.",+    "I haven't gotten the knack down yet.",+    "Don't throw out the baby with the sheep dip.",+    "This is a magnitude of the first water.",+    "There's a lot of bad blood in the water between those two.",+    "Godzilla, the Hun.",+    "I'm just a hog loose in the woodwork.",+    "The egg is cracked and there's no way to scramble it.",+    "Cast an eyeball over troubled waters.",+    "Don't make a tempest out of a teapot.",+    "I'm as happy as a pig at high tide.",+    "I don't like the feel of this ball of wax.",+    "He's restoring order to chaos.",+    "I'm soaked to the teeth.",+    "Don't worry, I've got an ace up my hole.",+    "We've been eating our hump for a long time.",+    "He doesn't know A from Z.",+    "Let me say a word before I throw in the reins.",+    "He takes to water like a duck takes to tarmac.",+    "If the sock fits, wear it.",+    "They're grasping for needles.",+    "Don't kill the gander that laid the golden egg.",+    "Thanks giving is early this year because the first Thursday fell on a Monday.",+    "He's running around like a bull with his head cut off.",+    "That opens up a whole other kettle of songs.",+    "He screwed himself into a corner.",+    "They run like flies when he comes near.",+    "It's an ill wind that doesn't blow somebody.",+    "Your socks are toast!",+    "He's getting pretty down in the tooth.",+    "I'm not sure we're all speaking from the same sheet of music.",+    "A penny saved is worth two in the bush.",+    "It's a slap in the chaps.",+    "Row, row, row your boat, gently down the drain.",+    "She's melting out punishment.",+    "They locked the door after the house was stolen.",+    "Have we gone too fast too far?",+    "That was the pan he was flashed in.",+    "Don't bite the gift horse.",+    "They are straining at nits.",+    "He doesn't have the brains God gave a goose egg.",+    "Not all the irons in the fire will bear fruit or even come home to roost.",+    "Necessity is the invention of strange bedfellows.",+    "It's an old hat and a yard wide.",+    "It's one more cog in the wheel.",+    "I'm flapping at the gills.",+    "Put it on the back burner and let it simper.",+    "Heads are rolling in the aisles.",+    "We got another thing out of it that I want to heave in.",+    "It's a home of contention.",+    "The foot that rocks the cradle is usually in the mouth.",+    "My chicken house has come home to roost.",+    "Don't let the skeletons out of the bushes.",+    "He's got bells in his batfry.",+    "Don't cast an eyeball on the face of the water.",+    "Sex is an aphrodisiac.",+    "He's on the back of the pecking order.",+    "It's enough to make you want to rot your socks.",+    "I'm all puckered down.",+    "We've got our necks strung out.",+    "I'm wound up like a cork.",+    "Everything is mutually intertangled.",+    "You've got to get the bull by the teeth.",+    "Trying to do anything is like a tour de force.",+    "We can clean ourselves right up to date.",+    "The meeting was a first-class riot squad.",+    "This program has many weaknesses, but its strongest weakness remains to be seen.",+    "He has a mind like a steel hinge.",+    "Is there any place we can pull a chink out of the log jam?",+    "Lay a bugaboo to rest.",+    "I only hope your every wish is desired.",+    "I'll reek the benefits.",+    "Misery loves strange bedfellows.",+    "Don't look a sawhorse in the mouth.",+    "Let's solve two problems with one bird.",+    "You ninney-wit!",+    "She's got her ass up a tree.",+    "I'm as healthy as a stuck pig.",+    "Deep water runs in strange ways.",+    "That's the whole kit and caboose.",+    "I'll buckle my nose down.",+    "It's a pot of crock.",+    "I heard it out of the corner of my eyes.",+    "Every rainbow has a silver lining.",+    "I have my neck hung out on an open line.",+    "It's like baiting a dead fish.",+    "Let's blow out all the stops.",+    "We've been sold up stream.",+    "His self-esteem doesn't hold water.",+    "It's a caterpillar in pig's clothing.",+    "Keep your nose to the plow.",+    "She's a virgin who has never been defoliated.",+    "That really burns my craw!",+    "If the harmonica fits, wear it.",+    "When crunch comes to shove ...",+    "I've gone over the bend.",+    "Let's pour some holy water on the troubled feathers.",+    "Women don't change their spots.",+    "You're barking your shins on the wrong tree.",+    "The sock is fried now.",+    "There are enough cooks in the pot already.",+    "If the onus fits, wear it.",+    "I like the cut of your giblets.",+    "Have it prepared under my signature.",+    "No moss grows under Charlie's rock.",+    "His head's too big for his britches.",+    "I'm walking on thin water.",+    "Run your socks up the flag pole to see if anyone salutes them.",+    "I should have stood in bed.",+    "It's no skin off my stiff upper lip.",+    "He was stark raving nude.",+    "In the last year, you've turned around 150%.",+    "Somebody pushed the panic nerve.",+    "That went through my mind and right out the other nostril.",+    "There are too many people in the soup.",+    "Before they made him they broke the mold.",+    "He's in over his head up to his ass.",+    "That was the corker in the bottle.",+    "The idea did cross my head.",+    "I want to embark upon your qualms.",+    "I'm in transit on that point.",+    "We're boggled down.",+    "I'm working my blood up into a fervor.",+    "I'm not going to stand for this lying down.",+    "He's as fruity as a loon cake.",+    "He said it thumb in cheek.",+    "Don't count your Easter eggs before they hatch.",+    "Just cool your horses.",+    "I rushed around like a chicken out of my head.",+    "I want to get to know them on a face-to-name basis.",+    "Well, darn my socks!",+    "One stitch in nine saves time.",+    "Let's put out a smeller.",+    "Too many hands spoil the soap.",+    "Your wild oats have come home to roost.",+    "That fills a lot of gray areas.",+    "I'm going to pass it on to my predecessor.",+    "I'm going to plant a seed in her ear.",+    "We need to offset the gaps in our product line.",+    "I'm having a hard time getting my handles around that one.",+    "I'm going to hide my nook in a cranny.",+    "That took the steam out of my sails.",+    "He drinks like a sieve.",+    "He doesn't know his ass from his rear end.",+    "That's a ball of another wax.",+    "I speak only with olive branches dripping from the corners of my mouth.",+    "He choked on his own craw.",+    "My stomach gets all knotted up in rocks.",+    "He's completely lost his gourd.",+    "Let's kill two dogs with one bone.",+    "I'm going to put my horn in.",+    "If the shoe fits, put it in your mouth.",+    "The left foot doesn't know what shoe it's in.",+    "Don't count your chickens before the barn door is closed.",+    "Deep water runs still.",+    "We sure pulled the wool over his socks.",+    "It's a road of hard knocks.",+    "I'm in for the count.",+    "That's just putting the gravy on the cake.",+    "You can make a prima donna sing, but you can't make her dance.",+    "My fuse is running out.",+    "He's a real jerk-wad.",+    "He's in a class by himself with maybe three or four others.",+    "It's an idea whose future is past.",+    "We threw everything in the kitchen sink at them.",+    "I'm just about to the end of my bee's wax.",+    "The skeleton is there; you just have to sharpen it and put the decorations on the tree.",+    "You sure take the prize cake.",+    "I'm going to take my venom out on you.",+    "Hold your cool!",+    "I'm a victim of extraneous circumstances.",+    "He's fruitier than a nut cake.",+    "He's worse than Godzilla the Hun.",+    "My tail feathers have dry rot.",+    "Necessity is the mother of strange bedfellows.",+    "You gotta strike while the shoe is hot or the iron may be on the other foot.",+    "We haven't found a smoking baton.",+    "That's just cutting your throat to spite your face.",+    "He was hung by his own bootstraps.",+    "The wishbone's connected to the kneebone.",+    "I think I've committed a fore paw.",+    "This is a case if the pot calling the fruitcake black.",+    "Screw the bastards, full speed ahead!",+    "It's dressing on the cake.",+    "A lot of water has gone over the bridge since then.",+    "Don't put all your ducks in one barrel.",+    "It might break the straw that holds the camel's back.",+    "He's so ego-testicle.",+    "Half a brain is better than no loaf at all.",+    "Another day, a different dollar.",+    "That's like the pot calling the cattle black.",+    "You can't judge a book by its contents.",+    "Have more discretion in the face of valor.",+    "You gotta walk with your pants on.",+    "It floated right to the bottom.",+    "No rocks grow on Charlie.",+    "The early worm catches the fish.",+    "Gee, it must have fallen into one of my cracks.",+    "He's capable of playing every button on his clarinet.",+    "He's as crazy as a bloody loon!",+    "He was screwed by his own petard.",+    "I'm basking in his shadow.",+    "I may not be the brightest light in...the...light drawer!",+    "Keep your eyes geared to the situation.",+    "It's time to pour on the midnight oil.",+    "He's become the real vocal point on this.",+    "You can blow it up and down.",+    "Let him be rent from limb to limb.",+    "Dig a hole and bury it.",+    "You have sowed a festering cow pie of suspicion.",+    "He's breathing down my throat.",+    "There's a lot of bull in the china shop.",+    "Gore no ox before its time.",+    "If you can't stand the heat, get out of the chicken.",+    "I read the sign, but it went in one ear and out the other.",+    "I won't kick a gift horse in the mouth.",+    "Don't throw the dog's blanket over the horse's nose.",+    "There's a vortex swimming around out there.",+    "Keep your nose to the mark.",+    "He pulled out all the punches.",+    "Go fry a kite!",+    "He's fuming at the seams.",+    "You're not going to get anymore until you've eaten what you've already eaten.",+    "I'd like to intersperse a comment.",+    "We're out of hear shot.",+    "Pour sand on troubled waters.",+    "Don't cash in your chips until the shill is down.",+    "It's all in knowing when to let a dead horse die.",+    "There is no surefool way of proceeding.",+    "To all intensive purposes, the cause is lost.",+    "Don't rock the status quo.",+    "Not in a pig's bladder you don't!",+    "Sounds like we're swimming an uphill battle.",+    "We've ported it to every platform under the world.",+    "You have your oar up the wrong tree.",+    "That's money we'll save right off the top of the hat.",+    "That curdles my toes.",+    "Necessity is the mother of reality.",+    "Hindsight is better than a foot in the mouth.",+    "He's a wolf in sheep's underwear.",+    "It's got all the bugs and whistles.",+    "That really burns my goat!",+    "He has an utter lack of disregard.",+    "Let's get out flamingos in a row.",+    "He's faster than a weeping alligator.",+    "I'm going to throw myself into the teeth of the gamut.",+    "If you can't read minds, don't.",+    "Don't look a gift horse in the face.",+    "We'll overlook things from top to bottom and bottom to top.",+    "That really uprooted the apple cart.",+    "A stitch in time wastes nine.",+    "We brought this can of worms into the open.",+    "It's like a greased pig in a wet blanket.",+    "When they go downstairs, you can hear neither hide nor hair of them.",+    "An avalanche is nipping at their heels.",+    "I worked my bone to a nubbin.",+    "We're just going to ad-hoc our way through it.",+    "Not in a cocked hat, you don't!",+    "That problem is getting pushed into the horizon.",+    "He's three socks to the wind.",+    "He has a very weak indigestion.",+    "He was putrified with fright.",+    "Any excuse in a storm.",+    "It sure hits the people between the head.",+    "Our deal fell through the boards.",+    "Don't get your eye out of joint.",+    "Together again for the first time.",+    "Beware a Trojan bearing a horse.",+    "Let him fry in his own juice.",+    "Strange bedfellows flock together.",+    "A stop-gap measure is better than no gap at all.",+    "He's got his tail in really deep.",+    "We're getting down to bare tacks.",+    "It's not all peaches and gravy.",+    "I'm going to down-peddle that aspect.",+    "To hell with your hand basket!",+    "No problem is so formidable that you can't just walk away from it.",+    "This field of research is so virginal that no human eye has set foot on it.",+    "I gave him a lot of rope and he took it, hook, line, and sinker.",+    "You've overgrown your welcome.",+    "I don't want to throw another monkey at the wrench right now.",+    "He's a fart off the old block.",+    "That's obviously a very different cup of fish.",+    "I'd have been bent out of shape like spades.",+    "They'll dazzle you out of your socks.",+    "There's no two ways around it.",+    "I don't want to start hurdling profanity.",+    "A squeaky wheel gathers no moss.",+    "She's madder than a wet hornet.",+    "Don't eat with your mouth full.",+    "It looks real enough to be artificial.",+    "I thought I'd have an aneurism.",+    "I have reasonably zero desire to do it.",+    "Never feed a hungry dog an empty loaf of bread.",+    "We have a wide range of broad-gauge people.",+    "There's no point in crying over skim milk.",+    "He has a wool of steel.",+    "We definitely don't want to nail ourselves into a corner.",+    "It's the greatest little seaport in town.",+    "I'm not the brightest bean in the hole.",+    "There's no place in the bowl for another spoon to stir the broth.",+    "It cuts like a hot knife through solid rock.",+    "I'll procrastinate when I get around to it.",+    "Prices are dropping like flies.",+    "He's faster than the naked eye.",+    "A lot of people my ages are dead at the present time.",+    "I'm going to have an apocalyptic fit.",+    "I'm going to scatter them like chaff before the wind.",+    "If you're going to break a chicken, you have to scramble a few eggs.",+    "They're from out neck of the family.",+    "It's not completely an unblessed advantage.",+    "People who live in glass houses shouldn't throw cow pies.",+    "It sticks like sixty.",+    "We have to fill the gaff.",+    "He has his pot in too many pies.",+    "It's always better to be safe than have your neck out on a limb.",+    "Don't count your chick peas until they hatch.",+    "He's running around with his chicken cut off.",+    "We're dislodging some inertia.",+    "She's flying off the deep end.",+    "Let me throw a monkey into the wrench.",+    "I'm just a worm in the ointment.",+    "You're preoccupying the bathroom.",+    "I'm impressed out of my gourd.",+    "We're up to our earballs in garbage.",+    "I think I've lost my gourd.",+    "He knows which side of his bread his goose is buttered on.",+    "A carpenter's son doesn't have shoes.",+    "It's a hiatus on the face of the void.",+    "We groove in the same ballpark.",+    "To the cook goes the broth!",+    "He doesn't have the brain to rub two nickels together.",+    "He gave me a blanket check.",+    "It's within the pall of reason.",+    "Hands were made before feet.",+    "He was guilty of statuary rape.",+    "Let's kick the bucket with a certain amount of daintiness.",+    "We can throw a lot of muscle into the pot.",+    "It's a travesty on the face of the void.",+    "It needs a bad case of washing.",+    "The onus is on the other foot.",+    "Don't sweep your dirty laundry under the rug.",+    "His credentials are too many to mention.",+    "Judas Proust!",+    "She hit the nail on the nose.",+    "I was distracted beyond all recognition.",+    "I'm going to scream right out of my gourd.",+    "She's too goody-bunny-shoes for me.",+    "Never screw a gift-horse in the mouth.",+    "I'd kill a dog to bite that man.",+    "It's a travesty to the human spirit.",+    "He's a real slime-burger.",+    "It's the first inauguration of their idea.",+    "My impatience is running out.",+    "That plant looks cyanotic.",+    "We haven't begun to scratch the tip of the iceberg.",+    "I don't want to rock the boat whose hand is in the cradle.",+    "It's a lot like recumbent DNA.",+    "Let's strike the fire before the iron gets hot.",+    "He's a wolf in sheep's underware.",+    "He's shot in the ass with himself.",+    "I put all my marbles in one basket.",+    "He's so mad he is spitting wooden nickels.",+    "He's a child progeny.",+    "He deserves a well-rounded hand of applause.",+    "There is one niche in his armor.",+    "We need to get over organized.",+    "He's going to go up like tinder smoke.",+    "It was oozing right out of the lurches.",+    "We have a real ball of wax to unravel.",+    "I'm a little woozy around the gills.",+    "If you want something bad enough, you have to pay the price.",+    "He has his priorities screwed on right.",+    "My steam is wearing down.",+    "I transgressed from the subject.",+    "Men, women, and children first!",+    "If you're going to break eggs, you have to make an omelette.",+    "He's got bees in his belfry.",+    "I really took the bull by the hands.",+    "I'll sue their pants on backwards.",+    "I've milked that dead end for all it's worth.",+    "Don't rattle the boat.",+    "That puts me up a worse creek.",+    "If the shoe is on the other foot, wear it.",+    "Things are all up in a heaval.",+    "I'm stone cold sane.",+    "It happened for the last two hours, including yesterday.",+    "It's the highest of the lows.",+    "He won't last as long as a crow flies.",+    "I won't hang my laurels on it.",+    "That solves two stones with one bird.",+    "He's a bulldog in a china shop.",+    "As long as somebody let the cat out of the bag, we might as well spell it correctly.",+    "It's more than magnificent &mdash; it's mediocre.",+    "Let's wreck havoc!",+    "Don't cast any dispersions.",+    "It fills a well-needed gap.",+    "There is a prolifery of new ideas.",+    "I guess that muddled the waters.",+    "It's just a matter of sweeping the rug under the carpet.",+    "He just sat there like a bump on a wart.",+    "The gremlins have gone off to roost on someone else's canard.",+    "I'm just about to spring a gasket.",+    "It was really amazing to see the spectra of people there.",+    "He's foot sore and fancy free.",+    "If Calvin Coolidge were alive today, he'd turn over in his grave.",+    "I want to see him get a good hands-on feel.",+    "There will be fangs flying.",+    "How old is your 2-year old?",+    "It's as predictable as cherry pie.",+    "He's as batty as a fruitcake.",+    "Those are not the smartest cookies under the Christmas tree.",+    "It puts feathers under my wings.",+    "We opened a big ball of worms.",+    "The early bird will find his can of worms.",+    "That's pushing a dead horse.",+    "Nobody is going to give you the world in a saucer.",+    "The whole thing is a hairy potpourri.",+    "They're dying off like fleas.",+    "I'm woefully glad you're here.",+    "A hand in the bush is worth two anywhere else.",+    "I need to pick up my head and dust it off.",+    "I'm as happy as a pig in clam broth.",+    "It's hot off the vine.",+    "He knows which side his pocketbook is buttered on.",+    "Things keep falling out of it, three or four years at a time.",+    "No crumbs gather under his feet.",+    "I only hear half of what I believe.",+    "That will sooth your savage brow.",+    "The sink is shipping.",+    "I'm beat up around the gills.",+    "It's time to take off our gloves and talk from the heart.",+    "You're too big for your ass.",+    "They're atrophying on the vine.",+    "I feel like hell and high water.",+    "I said it beneath my breath.",+    "That's a different jar of worms.",+    "You can't make a silk cow out of a sow.",+    "They are unscrupulously honest.",+    "I was held up about an hour casting feathers on oily water.",+    "He went out in a poof of glory.",+    "I'm as happy as a fried clam.",+    "I'm creaming off the top of my head.",+    "He'll get his neck in hot water.",+    "She'll show up if she cares which side her ass is buttered on.",+    "He tried to sweep the skeleton under the rug.",+    "Does it joggle any bells?",+    "Just cut a thin slither of it.",+    "We're off in a cloud of hooves.",+    "If you can't stand the heat, get off the car hood.",+    "That's the whole ball of snakes.",+    "Don't leave the nest that feeds you.",+    "Things have slowed down to a terrible halt.",+    "I'm standing over your shoulder.",+    "He has his neck out on a limb.",+    "I'll bet there's one guy out in the woodwork.",+    "I wouldn't touch that with a glass parrot.",+    "Put every marble in its socket.",+    "He's sweating like a stuck pig.",+    "You can't make a sow's ear out of a silk purse.",+    "I'll feather my own mare's nest, thank you!",+    "Gander your eye at that!",+    "The onus of responsibility lies on his shoulders.",+    "The die has been cast on the face of the waters.",+    "It makes my chops drool.",+    "I'd like to feel you up about taking on the job.",+    "Put it on the back of the stove and let it simper.",+    "If you can't imitate him, don't copy him.",+    "I flew it by ear.",+    "He's biting the shaft and getting the short end of the problem.",+    "Someone took the steam out of my sails.",+    "I never put on a pair of shoes until I've worn then five years.",+    "I smell a needle in the haystack.",+    "He's got four sheets in the wind.",+    "Don't talk with your mouth open.",+    "It's a tough nut to hoe.",+    "I had to throw in the white flag.",+    "Your irons in the fire are coming home to roost.",+    "We're dragging out dead skeletons.",+    "You just sawed yourself right off my tree.",+    "Don't count your marbles before they hatch.",+    "It was deja vu all over again.",+    "There's more than one way to skin an egg without letting the goose out of the bag.",+    "This is an exercise in fertility.",+    "I don't give a Ricardo's Montalban what you think.",+    "That's the wart that sank the camel's back.",+    "Don't rattle the cage that rocks the cradle.",+    "We can't get through the forest for the trees.",+    "They are pushing us into a panic that does not exist.",+    "The analogy is a deeply superficial one.",+    "He's sinking to new heights.",+    "Right off the top of my hand, I'd say no.",+    "Put your mouth where your money is.",+    "I'm quaking in my oats.",+    "Not over my dead body, you don't!",+    "He's as quick as an eyelash.",+    "It drove me to no wits end.",+    "If not us, when?",+    "It costs a Jewish princess's ransom.",+    "There're not enough daisies on the chain.",+    "It's a typical case of alligator mouth and hummingbird ass.",+    "A squeaking hinge gathers no moss.",+    "You're barking your shins up the wrong tree.",+    "I'll lend you a  jaundiced ear.",+    "May I inveigle on you?",+    "I looked at it with some askance.",+    "His little red wagon came home to roost.",+    "We sure pulled the wool over their socks.",+    "Picasso wasn't born in a day.",+    "Two thoughts but with a single mind.",+    "I have other pigs to fry.",+    "He's splitting up at the seams.",+    "That would have been right up Harry's meat.",+    "It's a useful ace in the pocket.",+    "The screws of progress grind fine.",+    "By the time we unlock the bandages, he will have gone down the drain.",+    "Let me feast your ears.",+    "My mind is a vacuum of information.",+    "He doesn't know which side his head is buttered on.",+    "I want half a cake and eat it too.",+    "We have the whole gambit to select from.",+    "We got on board at ground zero.",+    "Someone is going to be left in the church with his pants on.",+    "Make haste while the snow falls.",+    "I could count it on the fingers of one thumb.",+    "Let's not drag any more dead herrings across the garden path.",+    "They were hunkering for a shut out.",+    "That's a tough nut to carry on your back.",+    "When you get to the end of your rope, tie a knot and jump off.",+    "He's as happy as a pig at high tide.",+    "I gave him a real mouthful.",+    "He had the eyes of a bat.",+    "This is a really tough wretchimen.",+    "Straighten up or fly right.",+    "Do it now; don't dingle-dally over it.",+    "I've got other socks to fry.",+    "He is as dishonest as the day is long.",+    "A dog under any other coat is still a dog.",+    "Dishwater is duller than he is.",+    "A verbal contract isn't worth the paper it's printed on.",+    "Any kneecap of yours is a friend of mine.",+    "We're revisiting deja vu.",+    "It' not an easy thing to get your teeth around.",+    "I'm going to take a hiatus.",+    "I'm willing to listen to the other side of the coin.",+    "Put that in your teapot and smoke it!",+    "You can't break an egg without making an omelette.",+    "It causes my goose to bump.",+    "He's downstream from upstage.",+    "They sucked all the cream off the crop.",+    "I'm collapsing around the seams.",+    "It's time for me to get my high-horse on.",+    "Is he gay or an omnivore?",+    "Nothing is good enough for our customers.",+    "This work was the understatement of the year.",+    "I'm as happy as a clam in pig's broth.",+    "There are a lot of areas for efficiency reduction.",+    "I'll take any warm body in a storm.",+    "It's like asking a man to stop eating in the middle of a starvation diet.",+    "He'll grease any palm that will pat his ass.",+    "He has a good mind, if only we could light a fire under it.",+    "This bit of casting oil on troubled feathers is more than I can take.",+    "He opened up that can of worms, let him swim in them.",+    "It's a mecca of people.",+    "I think he's gone over the bend.",+    "He's within eyeshot of shore.",+    "It's a white herring.",+    "She's got a bee in her bonnet and just won't let it go.",+    "The Albatross of Damocles is hanging over your neck.",+    "Boulder dash!",+    "It's a terrible crutch to bear.",+    "He has a dire need, actually it's half-dire, but he thinks it's double-dire.",+    "The circuit breaker just kicked in.",+    "I'll take a few pegs out of his sails.",+    "Somebody should have waved a flag louder than they did.",+    "It's not my Diet of Worms.",+    "He has a brain for a rhubarb.",+    "It's the old Paul Revere bit . . . one if by two and two if by one.",+    "He reads memos with a fine tooth comb.",+    "That's their apple cart, let them choke on it.",+    "Take it with a block of salt.",+    "Where there's smoke, there're mirrors.",+    "This game is a punctuation point.",+    "We're trying very hard to maintain the high road.",+    "It's as dry as mud.",+    "I march to a different kettle of fish.",+    "This manure must be stopped dead in its tracks.",+    "He's a lion in a den of Daniels.",+    "The ideas sprang full-blown from the hydra's heads.",+    "We'll see what comes down the tubes.",+    "Put all your money where your marbles are.",+    "Each of us sleazes by at our own pace.",+    "I may not always be right, but I'm never wrong.",+    "I enjoy his smiling continence.",+    "We don't want to stick our necks out and get our asses chopped off.",+    "Just because it's there, you don't have to mount it.",+    "Sometimes things just gag me the wrong way.",+    "Don't jump off the handle.",+    "That'll blow the socks off the cat.",+    "My laurels have come home to roost.",+    "Don't feed the hand that bites you.",+    "He's trying to domestify you.",+    "We don't want to go at it like a wild bull in Chinatown.",+    "I'm sweating like a greased pig.",+    "I have the self-discipline of a mouse.",+    "It's not the only bowl of fish in the ocean.",+    "Step up to the plate and fish or cut bait.",+    "He's a clod of the first water.",+    "That sure muddles the water.",+    "I'd avoid him like sixty.",+    "I'll be ready just in case a windfall comes down the pike.",+    "That was like getting the horse before the barn.",+    "Let's lurch into the next hour of the show.",+    "A lot of wine has gone under the bridge since we last met.",+    "They unspaded some real down to earth data.",+    "I'll keep my eyes out in case I hear anything.",+    "There were foot-high puddles.",+    "He got his socks off on it.",+    "We need to do it ex-post-hasto.",+    "Stick that in your hat and smoke it!",+    "He's doing a great job in spades.",+    "May the wind at your back never be your own.",+    "I wish somebody could drop the other foot.",+    "Some bigger fish knocked on the door, wanting to be fried.",+    "He doesn't have an ox to grind.",+    "When I want your opinion, I'll give it to you.",+    "My dog was pent up all day.",+    "I'm sticking my neck out on a ledge.",+    "There's more intelligence in this town than you can shake a stick at.",+    "Let me see if I have my eggs on straight.",+    "I'm scared out of my witless.",+    "I've been burning the midnight hours.",+    "Wait until the cows come home to roost!",+    "He's letting ground grow under his feet.",+    "It's right on the tip of my head.",+    "Let's set up a straw vote and knock it down.",+    "I just got indicted into the Hall of Fame.",+    "Let me throw a monkey wrench in the ointment.",+    "He's casting a red herring on the face of the water.",+    "By a streak of coincidence, it really happened.",+    "Stick that in your peace pipe and smoke it.",+    "Those people have no bones to grind.",+    "He's sharp as a whip.",+    "Just say whatever pops into your mouth.",+    "Sounds like it's time to sever the apron string.",+    "She's just another chick in the china shop.",+    "It's not going to rock any apple carts.",+    "It's the old chicken-in-the-egg problem.",+    "That curdles the milk of human kindness.",+    "A whole hog is better than no hole at all.",+    "I keep stubbing my shins." ]++-- from jose nazario+nixonList :: [String]+nixonList =+    [+    "A man is not finished when he is defeated. He is finished when he quits.",+    "A man who has never lost himself in a cause bigger than himself has missed one of life's mountaintop experiences. Only in losing himself does he find himself. Only then does he discover all the latent strengths he never knew he had and which otherwise would have remained dormant.",+    "A public man must never forget that he loses his usefulness when he as an individual, rather than his policy, becomes the issue.",+    "Always remember that others may hate you but those who hate you don't win unless you hate them. And then you destroy yourself.",+    "Americans admire a people who can scratch a desert and produce a garden. The Israelis have shown qualities that Americans identify with: guts, patriotism, idealism, a passion for freedom. I have seen it. I know. I believe that.",+    "Any change is resisted because bureaucrats have a vested interest in the chaos in which they exist.",+    "Any lady who is first lady likes being first lady. I don't care what they say, they like it. ",+    "Castro couldn't even go to the bathroom unless the Soviet Union put the nickel in the toilet. ",+    "Certainly in the next 50 years we shall see a woman president, perhaps sooner than you think. A woman can and should be able to do any political job that a man can do.",+    "Don't get the impression that you arouse my anger. You see, one can only be angry with those he respects. ",+    "Finishing second in the Olympics gets you silver. Finishing second in politics gets you oblivion.",+    "I am not a crook.",+    "I believe in the battle-whether it's the battle of a campaign or the battle of this office, which is a continuing battle. ",+    "I brought myself down. I impeached myself by resigning.",+    "I can see clearly now... that I was wrong in not acting more decisively and more forthrightly in dealing with Watergate.",+    "I can take it. The tougher it gets, the cooler I get.",+    "I don't know anything that builds the will to win better than competitive sports. ",+    "I reject the cynical view that politics is a dirty business.",+    "I played by the rules of politics as I found them.",+    "I'm glad I'm not Brezhnev. Being the Russian leader in the Kremlin. You never know if someone's tape recording what you say. ",+    "If you think the United States has stood still, who built the largest shopping center in the world?",+    "It is necessary for me to establish a winner image. Therefore, I have to beat somebody.",+    "Once you get into this great stream of history, you can't get out. ",+    "People react to fear, not love; they don't teach that in Sunday School, but it's true.",+    "Politics would be a helluva good business if it weren't for the goddamned people. ",+    "Scrubbing floors and emptying bedpans has as much dignity as the Presidency.",+    "Solutions are not the answer.",+    "Sure there are dishonest men in local government. But there are dishonest men in national government too.",+    "The presidency has many problems, but boredom is the least of them.",+    "The press is the enemy.",+    "Voters quickly forget what a man says.",+    "Voters quickly forget what a man says.",+    "When the President does it, that means that it is not illegal.",+    "You won't have Nixon to kick around anymore, because, gentlemen, this is my last press conference.",+    "Don't try to take on a new personality; it doesn't work.",+    "The Chinese use two brush strokes to write the word 'crisis.' One brush stroke stands for danger; the other for opportunity. In a crisis, be aware of the danger - but recognize the opportunity.",+    "I've never canceled a subscription to a newspaper because of bad cartoons or editorials. If that were the case, I wouldn't have any newspapers or magazines to read.",+    "The second point is that coming out--coming back and saying that black Americans aren't as good as black Africans--most of them , basically, are just out of the trees.  Now, let's face it, they are.",+    "Government enterprise is the most inefficient and costly way of producing jobs.",+    "In a flat choice between smoke and jobs, we're for jobs...But just keep me out of trouble on environmental issues.",+    "This is a great day for France!",+    "I don't want to see this country to go that way.  You know what happened to the Greeks.  Homosexuality destroyed them. Sure, Aristotle was a homo, we all know that, so was Socrates.",+    "They're not like us. They smell different, they look different, they act different.  The trouble is, you can't find one that's honest.",+    "You know, it's a funny thing, every one of the bastards that are out for legalizing marijuana is Jewish. What the Christ is the matter with the Jews, Bob? What is the matter with them? I suppose it is because most of them are psychiatrists.",+    "Do you know what happened to the Romans?  The last six Roman emperors were fags. . . .  You know what happened to the popes?  It's all right that popes were laying the nuns.",+    "You have to face the fact that whole problem is really the blacks. The key is to divise a system that reconizes this while not appearing to...",+    "Your boys will be home for Christmas." ]++harrop :: [String]+harrop = +    [ "Our conclusion is, of course, that we are not going to consider diversifying into the Haskell market, at least not until it matures. Right now, Scala is looking much more viable."+    , "These remarkable new figures show that Haskell is still a virgin language: despite a huge number of open source projects being started in Haskell, virtually none reach maturity and the vast majority of those never garner a significant user base (i.e. they remain untested)."+    , "almost all of the examples of Haskell's use in industry are fakes"+    , "On Mr. Harrop: \"Where exactly did we pick up this, er, individual?  Would they please take it back as defective?\""     ]
+ Plugin/Scheck.hs view
@@ -0,0 +1,88 @@+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, PatternGuards #-}+-- Copyright (c) 6 DonStewart - http://www.cse.unsw.edu.au/~dons+-- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)++-- | Test a property with SmallCheck+module Plugin.Scheck where++import File (findFile)+import Plugin+import Lambdabot.Parser+import qualified Text.Regex as R++$(plugin "Small")++instance Module SmallModule () where+    moduleCmds   _     = ["scheck"]+    moduleHelp _ _     = "scheck <expr>\nYou have SmallCheck and 3 seconds. Test something."+    process _ _ to _ s = ios80 to (check s)++binary :: String+binary = "mueval"+++check :: String -> IO String+check src = do+    case parseExpr src of+        Left e  -> return e+        Right _ -> do+            file <- findFile "L.hs"+            (out,err,_) <- popen binary ["--loadfile=", file, "-E", "-e", "mysmallcheck " ++ src ++ ""] Nothing+            let o = munge out+                e = munge err+            return $ case () of {_+                                 | null o && null e -> "Terminated\n"+                                 | null o           -> " " ++ e+                                 | otherwise        -> " " ++ o+            }+            where munge = id+                  f []   = []+                  f [x]  = [x]+                  f (x:y)= [x ++ " " ++ (concat . intersperse ", ") y]++clean_ :: String -> String+clean_ s+    |  no_io      `matches'`    s = "No IO allowed\n"+    |  terminated `matches'`    s = "Terminated\n"+    |  hput       `matches'`    s = "Terminated\n"+    |  stack_o_f  `matches'`    s = "Stack overflow\n"+    |  loop       `matches'`    s = "Loop\n"+    |  undef      `matches'`    s = "Undefined\n"+    |  type_sig   `matches'`    s = "Add a type signature\n"++    | Just (_,m,_,_) <- ambiguous  `R.matchRegexAll` s = m+    | Just (_,_,b,_) <- inaninst   `R.matchRegexAll` s = clean_ b+    | Just (_,_,b,_) <- irc        `R.matchRegexAll` s = clean_ b+    | Just (_,m,_,_) <- nomatch    `R.matchRegexAll` s = m+    | Just (_,m,_,_) <- notinscope `R.matchRegexAll` s = m+    | Just (_,m,_,_) <- hsplugins  `R.matchRegexAll`  s = m+    | Just (a,_,_,_) <- columnnum  `R.matchRegexAll`  s = a+    | Just (a,_,_,_) <- extraargs  `R.matchRegexAll`  s = a+    | Just (_,_,b,_) <- filename'  `R.matchRegexAll`  s = clean_ b+    | Just (a,_,b,_) <- filename   `R.matchRegexAll`  s = a ++ clean_ b+    | Just (a,_,b,_) <- filepath   `R.matchRegexAll`   s = a ++ clean_ b+    | Just (a,_,b,_) <- runplugs   `R.matchRegexAll`  s = a ++ clean_ b++    | otherwise      = s++    where+        -- s/<[^>]*>:[^:]: //+        type_sig   = regex' "add a type signature that fixes these type"+        no_io      = regex' "No instance for \\(Show \\(IO"+        terminated = regex' "waitForProc"+        stack_o_f  = regex' "Stack space overflow"+        loop       = regex' "runplugs: <<loop>>"+        irc        = regex' "\n*<irc>:[^:]*:[^:]*:\n*"+        filename   = regex' "\n*<[^>]*>:[^:]*:\\?[^:]*:\\?\n* *"+        filename'  = regex' "/tmp/.*\\.hs[^\n]*\n"+        filepath   = regex' "\n*/[^\\.]*.hs:[^:]*:\n* *"+        undef      = regex' "Prelude.undefined"+        ambiguous  = regex' "Ambiguous type variable `a\' in the constraints"+        runplugs   = regex' "runplugs: "+        notinscope = regex' "Variable not in scope:[^\n]*"+        hsplugins  = regex' "Compiled, but didn't create object"+        extraargs  = regex' "[ \t\n]*In the [^ ]* argument"+        columnnum  = regex' " at <[^\\.]*\\.[^\\.]*>:[^ ]*"+        nomatch    = regex' "Couldn't match[^\n]*\n"+        inaninst   = regex' "^[ \t]*In a.*$"+        hput       = regex' "<stdout>: hPutStr"
Plugin/Search.hs view
@@ -1,19 +1,18 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-} -- | Search various things, Wikipedia and google for now. -- -- (c) 2005 Samuel Bronson -- (c) 2006 Don Stewart---+ -- Joel Koerwer 11-01-2005 generalized query for different methods --   and added extractConversion to make things like @google 1+2 work--- module Plugin.Search (theModule) where  import Plugin import Control.Monad            (mplus) import qualified Text.Regex as R -PLUGIN Search+$(plugin "Search")  engines :: [(String, (String, String))] engines =@@ -46,7 +45,7 @@     body    <- io $ queryit "GET" engine rest     case getHeader "Location" headers `mplus` extractConversion body of       Just url -> do-        title <- io $ urlPageTitle url (proxy config)+        title <- io $ runWebReq (urlPageTitle url) (proxy config)         return $ maybe [url] (\t -> [url, t]) title       Nothing  -> return ["No Result Found."] 
Plugin/Seen.hs view
@@ -1,18 +1,18 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, TypeSynonymInstances #-} -- Copyright (c) 2004 Thomas Jaeger -- Copyright (c) 2005-6 Don Stewart - http://www.cse.unsw.edu.au/~dons -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)---+ -- | Keep track of IRC users.--- module Plugin.Seen (theModule) where  import Data.Binary +import File (findFile) import Plugin-import Lib.AltTime-import Lib.Error         (tryError)-import Lib.Util          (lowerCaseString)+import Lambdabot.AltTime+import Lambdabot.Error         (tryError)+import Lambdabot.Util          (lowerCaseString)  import qualified Message as G (Message, names, channels, nick, packNick, unpackNick, Nick(..), body, lambdabotName, showNick, readNick) @@ -28,7 +28,7 @@ import Control.Arrow       (first) import Text.Printf -PLUGIN Seen+$(plugin "Seen")  -- Try using packed strings? @@ -195,12 +195,12 @@       lift $ tryError $ send . G.names "freenode" . map G.nName =<< ircGetChannels        -- and suck in our state. We read directly from the handle, to avoid copying-      b <- io $ doesFileExist "State/seen"-      when b $ io (do-            s <- io (P.readFile "State/seen")-            let ls = L.fromChunks [s]-            return (decode ls)) >>= writeMS +      c <- io $ findFile "seen"+      s <- io $ P.readFile c+      let ls = L.fromChunks [s]+      return (decode ls) >>= writeMS+     moduleExit _ = do       chans <- lift $ ircGetChannels       unless (null chans) $ do@@ -208,7 +208,7 @@             modifyMS $ \(n,m) -> (n, botPart ct (map G.packNick chans) m)          -- and write out our state:-      withMS $ \s _ -> io ( encodeFile "State/seen" s)+      withMS $ \s _ -> io ( findFile "seen" >>= \ c -> encodeFile c s)  lcNick :: G.Nick -> G.Nick lcNick (G.Nick svr nck) = G.Nick svr (lowerCaseString nck)@@ -335,10 +335,10 @@   | otherwise      = case M.lookup nick fm of       Just (Present mct xs) ->         case xs \\ (msgChans msg) of-          [] -> Right $ M.insert nick+          [] -> Right $! M.insert nick                  (NotPresent ct zeroWatch xs)                  fm-          ys -> Right $ M.insert nick+          ys -> Right $! M.insert nick                                  (Present mct ys)                                  fm       _ -> Left "someone who isn't known parted"@@ -346,14 +346,14 @@ -- | when somebody quits quitCB :: G.Message a => a -> SeenMap -> ClockTime -> Nick -> Either String SeenMap quitCB _ fm ct nick = case M.lookup nick fm of-    Just (Present _ct xs) -> Right $ M.insert nick (NotPresent ct zeroWatch xs) fm+    Just (Present _ct xs) -> Right $! M.insert nick (NotPresent ct zeroWatch xs) fm     _ -> Left "someone who isn't known has quit"  -- | when somebody changes his\/her name nickCB :: G.Message a => a -> SeenMap -> ClockTime -> Nick -> Either String SeenMap nickCB msg fm _ nick = case M.lookup nick fm of    Just status -> let fm' = M.insert nick (NewNick lcnewnick) fm-                  in  Right $ M.insert lcnewnick status fm'+                  in  Right $! M.insert lcnewnick status fm'    _           -> Left "someone who isn't here changed nick"    where    newnick = drop 1 $ head (G.body msg)@@ -377,7 +377,7 @@ msgCB :: G.Message a => a -> SeenMap -> ClockTime -> Nick -> Either String SeenMap msgCB _ fm ct nick =   case M.lookup nick fm of-    Just (Present _ xs) -> Right $+    Just (Present _ xs) -> Right $!       M.insert nick (Present (Just (ct, noTimeDiff)) xs) fm     _ -> Left "someone who isn't here msg us" 
Plugin/Slap.hs view
@@ -1,12 +1,11 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-} -- | Support for quotes--- module Plugin.Slap (theModule) where  import Plugin import qualified Message (nick, showNick) -PLUGIN Quote+$(plugin "Quote")  instance Module QuoteModule () where     moduleCmds _           = ["slap", "smack"]@@ -41,7 +40,7 @@     ,(\x -> "/me clobbers " ++ x ++ " with an untyped language")     ,(\x -> "/me pulls " ++ x ++ " through the Evil Mangler")     ,(\x -> "/me secretly deletes " ++ possesiveForm x ++ " source code")-    ,(\x -> "/me places her fist firmely on " ++ possesiveForm x ++ " jaw")+    ,(\x -> "/me places her fist firmly on " ++ possesiveForm x ++ " jaw")     ,(\x -> "/me locks up " ++ x ++ " in a Monad")     ,(\x -> "/me submits " ++ possesiveForm x ++ " email address to a dozen spam lists")     ,(\x -> "/me moulds " ++ x ++ " into a delicous cookie, and places it in her oven")@@ -54,6 +53,7 @@     ,(\x -> "/me hits " ++ x ++ " with an assortment of kitchen utensils")     ,(\x -> "/me slaps " ++ x ++ " with a slab of concrete")     ,(\x -> "/me puts on her slapping gloves, and slaps " ++ x)+    ,(\x -> "/me decomposes " ++ x ++ " into several parts using the Banach-Tarski theorem and reassembles them to get two copies of " ++ x ++ "!")     ]  -- | The possesive form of a name, "x's"
− Plugin/Small.hs
@@ -1,75 +0,0 @@------ Copyright (c) 6 DonStewart - http://www.cse.unsw.edu.au/~dons--- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)---------- | Test a property with SmallCheck----module Plugin.Small where--import Plugin-import Lib.Parser-import qualified Text.Regex as R--PLUGIN Small--instance Module SmallModule () where-    moduleCmds   _     = ["scheck"]-    moduleHelp _ _     = "scheck <expr>\nYou have SmallCheck and 3 seconds. Test something."-    process _ _ to _ s = ios80 to (check s)--binary :: String-binary = "./smallcheck"--check :: String -> IO String-check src = case parseExpr src of-    Left  e -> return e-    Right _ -> run binary src $ expandTab . dropWhile (=='\n') . dropNL . clean_--clean_ :: String -> String-clean_ s-    |  no_io      `matches'`    s = "No IO allowed\n"-    |  terminated `matches'`    s = "Terminated\n"-    |  hput       `matches'`    s = "Terminated\n"-    |  stack_o_f  `matches'`    s = "Stack overflow\n"-    |  loop       `matches'`    s = "Loop\n"-    |  undef      `matches'`    s = "Undefined\n"-    |  type_sig   `matches'`    s = "Add a type signature\n"--    | Just (_,m,_,_) <- ambiguous  `R.matchRegexAll` s = m-    | Just (_,_,b,_) <- inaninst   `R.matchRegexAll` s = clean_ b-    | Just (_,_,b,_) <- irc        `R.matchRegexAll` s = clean_ b-    | Just (_,m,_,_) <- nomatch    `R.matchRegexAll` s = m-    | Just (_,m,_,_) <- notinscope `R.matchRegexAll` s = m-    | Just (_,m,_,_) <- hsplugins  `R.matchRegexAll`  s = m-    | Just (a,_,_,_) <- columnnum  `R.matchRegexAll`  s = a-    | Just (a,_,_,_) <- extraargs  `R.matchRegexAll`  s = a-    | Just (_,_,b,_) <- filename'  `R.matchRegexAll`  s = clean_ b-    | Just (a,_,b,_) <- filename   `R.matchRegexAll`  s = a ++ clean_ b-    | Just (a,_,b,_) <- filepath   `R.matchRegexAll`   s = a ++ clean_ b-    | Just (a,_,b,_) <- runplugs   `R.matchRegexAll`  s = a ++ clean_ b--    | otherwise      = s--    where-        -- s/<[^>]*>:[^:]: //-        type_sig   = regex' "add a type signature that fixes these type"-        no_io      = regex' "No instance for \\(Show \\(IO"-        terminated = regex' "waitForProc"-        stack_o_f  = regex' "Stack space overflow"-        loop       = regex' "runplugs: <<loop>>"-        irc        = regex' "\n*<irc>:[^:]*:[^:]*:\n*"-        filename   = regex' "\n*<[^>]*>:[^:]*:\\?[^:]*:\\?\n* *"-        filename'  = regex' "/tmp/.*\\.hs[^\n]*\n"-        filepath   = regex' "\n*/[^\\.]*.hs:[^:]*:\n* *"-        undef      = regex' "Prelude.undefined"-        ambiguous  = regex' "Ambiguous type variable `a\' in the constraints"-        runplugs   = regex' "runplugs: "-        notinscope = regex' "Variable not in scope:[^\n]*"-        hsplugins  = regex' "Compiled, but didn't create object"-        extraargs  = regex' "[ \t\n]*In the [^ ]* argument"-        columnnum  = regex' " at <[^\\.]*\\.[^\\.]*>:[^ ]*"-        nomatch    = regex' "Couldn't match[^\n]*\n"-        inaninst   = regex' "^[ \t]*In a.*$"-        hput       = regex' "<stdout>: hPutStr"
Plugin/Source.hs view
@@ -1,16 +1,15 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, TypeSynonymInstances #-} -- Plugin.Source -- Display source for specified identifiers--- module Plugin.Source (theModule) where  import Plugin-import Lib.Util+import Lambdabot.Util import qualified Data.Map as M import qualified Data.ByteString.Char8 as P import Data.ByteString.Char8 (pack,ByteString) -PLUGIN Source+$(plugin "Source")  type Env = M.Map ByteString ByteString @@ -20,7 +19,7 @@      -- all the hard work is done to build the src map.     -- uses a slighly custom Map format-    moduleSerialize _= Just . readOnly $ M.fromList . map pair . splat . P.lines . gunzip+    moduleSerialize _= Just . readOnly $ M.fromList . map pair . splat . P.lines         where             pair (a:b) = (a, P.unlines b)             splat []   = []
Plugin/Spell.hs view
@@ -1,16 +1,15 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, PatternGuards #-} -- Copyright (c) 2004-6 Don Stewart - http://www.cse.unsw.edu.au/~dons -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html) -- -- | Interface to /aspell/, an open source spelling checker, from a -- suggestion by Kai Engelhardt. Requires you to install aspell.--- module Plugin.Spell where  import Plugin import qualified Text.Regex as R -PLUGIN Spell+$(plugin "Spell")  instance Module SpellModule Bool where     moduleCmds   _   = ["spell", "spell-all"]@@ -117,5 +116,6 @@  -- path to the master dictionary instance Show Dictionary where+    -- TODO: use findFile from File.hs. But does this module even work anymore?     showsPrec _ Lambdabot = showString "State/lambdabot" 
Plugin/State.hs view
@@ -1,12 +1,11 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, TypeSynonymInstances #-} -- | Persistent state -- A demo plugin--- module Plugin.State (theModule) where  import Plugin -PLUGIN State+$(plugin "State")  instance Module StateModule String where     moduleCmds      _ = [] -- ["state","++"]
Plugin/System.hs view
@@ -1,16 +1,15 @@---+{-# LANGUAGE TemplateHaskell, FlexibleInstances, MultiParamTypeClasses, Rank2Types #-} -- | System module : IRC control functions--- module Plugin.System (theModule) where  import Plugin-import Lib.AltTime+import Lambdabot.AltTime import qualified Message (Message, Nick, joinChannel, partChannel, server, readNick) import qualified Data.Map as M       (Map,keys,fromList,lookup,union,insert,delete)  import Control.Monad.State      (MonadState(get, put), gets) -PLUGIN System+$(plugin "System")  instance Module SystemModule (ClockTime, TimeDiff) where     moduleCmds   _   = M.keys syscmds@@ -34,7 +33,7 @@        ,("listmodules", "listmodules. Show available plugins")        ,("listservers", "listservers. Show current servers")        ,("list",        "list [module|command]\n"++-                        "show all commands or command for [module]. http://www.cse.unsw.edu.au/~dons/lambdabot/COMMANDS")+                        "show all commands or command for [module]. http://code.haskell.org/lambdabot/COMMANDS")        ,("echo",        "echo <msg>. echo irc protocol string")        ,("uptime",      "uptime. Show uptime")] @@ -62,7 +61,7 @@   "listmodules" -> return [pprKeys (ircModules s) ]   "listservers" -> return [pprKeys (ircServerMap s)]   "listall"     -> lift listAll-  "list"| null rest -> return ["http://www.cse.unsw.edu.au/~dons/lambdabot/COMMANDS"]+  "list"| null rest -> return ["http://code.haskell.org/lambdabot/COMMANDS"]         | otherwise -> lift $ listModule rest >>= return . (:[])    ------------------------------------------------------------------------
Plugin/Tell.hs view
@@ -1,4 +1,5 @@-{- | Leave a message with lambdabot, the faithful secretary.+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, TypeSynonymInstances #-}+{- Leave a message with lambdabot, the faithful secretary  > 17:11 < davidhouse> @tell dmhouse foo > 17:11 < hsbot> Consider it noted@@ -32,7 +33,7 @@ >                  messages, because there have been some new ones posted. > 17:14 < dmhouse> @print-notices > 17:14 < hsbot> {"dmhouse":=(Just Thu Jun  8 17:13:46 BST 2006,[Note {noteSender = "davidhouse", noteContents =->                "foobar", noteTime = Thu Jun  8 17:12:50 BST 2006, noteType = Tell},Note {noteSender = +>                "foobar", noteTime = Thu Jun  8 17:12:50 BST 2006, noteType = Tell},Note {noteSender =                  "davidhouse", noteContents = "barfoo", noteTime = Thu Jun  8 17:12:55 BST 2006, noteType = Ask}])} > 17:15 < dmhouse> There you can see the two notes. The internal state is a map from recipient nicks to a pair of >                  (when we last buzzed them about having messages, a list of the notes they've got stacked up).@@ -51,7 +52,7 @@ import qualified Data.Map as M import Text.Printf (printf) -import Lib.AltTime+import Lambdabot.AltTime import Message import Plugin @@ -59,7 +60,7 @@ data NoteType    = Tell | Ask deriving (Show, Eq, Read) -- | The Note datatype. Fields self-explanatory. data Note        = Note { noteSender   :: Nick,-                          noteContents :: String, +                          noteContents :: String,                           noteTime     :: ClockTime,                           noteType     :: NoteType }                    deriving (Eq, Show, Read)@@ -67,9 +68,9 @@ --   messages themselves) type NoticeBoard = M.Map Nick (Maybe ClockTime, [Note]) -- | A nicer synonym for the Tell monad.-type Telling a   = ModuleT NoticeBoard LB a +type Telling a   = ModuleT NoticeBoard LB a -PLUGIN Tell+$(plugin "Tell")  instance Module TellModule NoticeBoard where     moduleCmds      _ = ["tell", "ask", "messages", "messages?", "clear-messages"]@@ -89,7 +90,7 @@         return ["Messages purged."]      -- | Clear a user's notes-    process _ msg _ "clear-messages" _ = +    process _ msg _ "clear-messages" _ =       clearMessages (nick msg) >> return ["Messages cleared."]      -- | Check whether a user has any messages@@ -103,7 +104,7 @@     -- | Write down a note     process _ msg _ "tell" args = doTell args msg Tell -    -- | Really just a synonym for @tell, but phrases it as a question instead.+    -- | Really just a synonym for "@tell", but phrases it as a question instead.     process _ msg _ "ask" args = doTell args msg Ask      -- | Give a user their messages@@ -115,7 +116,7 @@      -- | Hook onto contextual. Grab nicks of incoming messages, and tell them     --   if they have any messages, if it's less than a day since we last did so.-    contextual _ msg _ _ = do +    contextual _ msg _ _ = do       let sender = nick msg       remp <- needToRemind sender       if remp@@ -158,7 +159,7 @@   st  <- readMS   now <- io getClockTime   return $ case M.lookup n st of-             Just (Just lastTime, _) -> +             Just (Just lastTime, _) ->                let diff = now `diffClockTimes` lastTime                in diff > noTimeDiff { tdDay = 1 }              Just (Nothing,       _) -> True@@ -166,10 +167,10 @@  -- | Add a note to the NoticeBoard writeDown :: Nick -> Nick -> String -> NoteType -> Telling ()-writeDown to from what ntype = do +writeDown to from what ntype = do   time <- io getClockTime-  let note = Note { noteSender   = from, -                    noteContents = what, +  let note = Note { noteSender   = from,+                    noteContents = what,                     noteTime     = time,                     noteType     = ntype }   modifyMS (M.insertWith (\_ (_, ns) -> (Nothing, ns ++ [note]))@@ -177,7 +178,7 @@  -- | Return a user's notes, or Nothing if they don't have any getMessages :: Message m => m -> Nick -> Telling (Maybe [String])-getMessages msg n = do +getMessages msg n = do   st   <- readMS   time <- io getClockTime   case M.lookup n st of@@ -196,7 +197,7 @@  -- | Execute a @tell or @ask command. doTell :: Message m => String -> m -> NoteType -> Telling [String]-doTell args msg ntype = do +doTell args msg ntype = do   let args'     = words args       recipient = readNick msg (head args')       sender    = nick msg@@ -209,13 +210,13 @@  -- | Remind a user that they have messages. doRemind :: Message m => m -> Nick -> Telling [String]-doRemind msg sender = do +doRemind msg sender = do   ms  <- getMessages msg sender   now <- io getClockTime   modifyMS (M.update (Just . first (const $ Just now)) sender)   return $ case ms of-             Just msgs -> -               let (messages, pronoun) = +             Just msgs ->+               let (messages, pronoun) =                      if length msgs > 1                        then ("messages", "them") else ("message", "it")                in [printf "%s: You have %d new %s. '/msg %s @messages' to read %s."
+ Plugin/Ticker.hs view
@@ -0,0 +1,147 @@+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-}++-- | Pull quotes down from yahoo.+module Plugin.Ticker (theModule) where++import Plugin hiding((<$>))+import Data.Either+import Control.Applicative ((<$>))+-- import Control.Arrow (second)+import Text.Printf++$(plugin "Ticker")++instance Module TickerModule () where+    moduleCmds      _     = ["ticker", "bid"]+    moduleHelp _ s        = case s of+         "ticker" -> "ticker symbols.  Look up quotes for symbols"+         "bid"    -> "bid symbols.  Sum up the bid and ask prices for symbols."+    process_ _ "ticker" e = lift $ tickerCmd e+    process_ _ "bid"    e = lift $ bidsCmd e++------------------------------------------------------------------------++-- Fetch several ticker quotes and report them.+tickerCmd :: String -> LB [String]+tickerCmd []        = return ["Empty ticker."]+tickerCmd tickers = do+    quotes <- io $ fetchPage "GET" $ tickerUrl $ words tickers+    case [x | Just x <- map extractQuote quotes] of+      []       -> return ["No Result Found."]+      xs       -> return xs++-- fetch: s symbol, l1 price, c change with percent, d1 date, t1 time.+tickerUrl :: [String] -> String+tickerUrl tickers =  "http://download.finance.yahoo.com/d/quotes.csv?f=sl1cd1t1&e=.csv&s=" ++ ts+    where ts = concatWith "+" $ map urlEncode tickers++-- $ curl "http://download.finance.yahoo.com/d/quotes.csv?f=sl1cd1t1&e=.csv&s=C"+-- "C",23.19,"-0.45 - -1.90%","5/13/2008","1:32pm"+-- "GBPUSD=X",1.9478,"N/A - N/A","5/13/2008","1:52pm"+extractQuote :: String -> Maybe String+extractQuote = getQuote . csv+    where+        getQuote [sym, price, change, date, time] =+            Just $ printf "%s: %s %s@ %s %s" sym price change' date time+            where change' = case words change of+                              ("N/A":_)    -> ""+                              [ch, _, pch] -> ch ++ " (" ++ pch ++ ") "+                              _            -> ""+        getQuote _ = Nothing++-- Fetch quotes for tickers and sum their bid/ask prices.+bidsCmd :: String -> LB [String]+bidsCmd tickers =+    case words tickers of+        [] -> return [printf "Invalid argument '%s'" tickers]+        xs -> io $ (:[]) <$> calcBids xs++-- fetch: b bid, a ask+bidsUrl :: [String] -> String+bidsUrl tickers = "http://download.finance.yahoo.com/d/quotes.csv?f=ba&e=.csv&s=" ++ ts+    where ts = concatWith "+" $ map urlEncode tickers++getBidAsks :: [String] -> IO [Maybe (Float, Float)]+getBidAsks tickers = do+    xs <- fetchPage "GET" $ bidsUrl tickers+    return $ map (extractPrice.csv) xs+    where+        extractPrice :: [String] -> Maybe (Float, Float)+        extractPrice [bid,ask] = liftM2 (,) (readMaybe bid) (readMaybe ask)+        extractPrice _         = Nothing++type AccumVal = Either String (Float, Float)++-- If we have a new bid/ask pair, accumulate it (normally add, but+-- if the ticker starts with '-' then subtract).  If there is no+-- value, make a note that it is an error.+accumOption :: AccumVal -> (String, Maybe (Float, Float)) -> AccumVal+accumOption err@(Left _) _ = err+accumOption (Right _) (ticker, Nothing) = Left $ printf "Can't find '%s'" ticker+accumOption (Right (a,b)) (('-':_), Just (a',b')) = Right (a-b', b-a')+accumOption (Right (a,b)) (_, Just (a',b')) = Right (a+a', b+b')++-- Take a list of tickers which are optionally prefixed with '+' or '-'+-- and add up (or subtract) the bid/ask prices on the based on the prefix.+calcBids :: [String] -> IO String+calcBids ticks = do+    xs <- getBidAsks $ map noPrefix ticks+    return $ case foldl accumOption (Right (0,0)) (zip ticks xs) of+        (Left err)        -> err+        (Right (bid,ask)) -> printf "%s: bid $%.02f, ask $%.02f" s bid ask+    where+        s = unwords ticks+        noPrefix ('+':xs) = xs+        noPrefix ('-':xs) = xs+        noPrefix xs = xs+++---- Library routines, consider moving elsewhere. ----++-- | Fetch a page via HTTP and return its body as a list of lines.+fetchPage :: String -> String -> IO [String]+fetchPage meth url = cleanup <$> readPage (proxy config) uri request ""+    where Just uri = parseURI url+          abs_path = uriPath uri ++ uriQuery uri ++ uriFragment uri+          request  = case proxy config of+                        Nothing -> [meth ++ " " ++ abs_path ++ " HTTP/1.0", ""]+                        _       -> [meth ++ " " ++ url ++ " HTTP/1.0", ""]+          dropHdr = drop 1 . dropWhile (not.null)+          cleanup = dropHdr . (map (filter (/= '\r')))++-- | Split a list into two lists based on a predicate.+splitWhile :: (a -> Bool) -> [a] -> ([a], [a])+splitWhile p xs = (takeWhile p xs, dropWhile p xs)++-- | Unfoldr, continuing while the predicate is true.+{-+unfoldrp :: (b -> Bool) -> (b -> Maybe (a, b)) -> b -> [a]+unfoldrp p f = unfoldr (\x -> guard (p x) >> f x)+-}++-- | Split a list on a distinguished character (which is eliminated).+{-+splitList :: (Eq a) => a -> [a] -> [[a]]+splitList ch = unfoldrp (not.null) (return.f)+    where f = (second (drop 1)) . (splitWhile (/= ch))+-}++-- | Return a list of comma-separated values.+-- Quotes allowed in CSV if it's the first character of a field.+csv :: String -> [String]+csv ('"':xs) = case splitWhile (/= '"') xs of+                  (word, '"':',':rest) -> word : csv rest+                  (word, '"':[])       -> word : []+                  _                    -> error "invalid CSV"+csv xs = case splitWhile (/= ',') xs of+             (word, ',':rest) -> word : csv rest+             ([], [])         -> []+             (word, [])       -> [word]+             _                -> error "shouldn't happen"++-- | Read a value from a string.+readMaybe :: Read a => String -> Maybe a+readMaybe x = case readsPrec 0 x of+                [(y,"")] -> Just y+                _        -> Nothing+
Plugin/Todo.hs view
@@ -1,15 +1,14 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, PatternGuards, PatternSignatures, TypeSynonymInstances #-} -- | A todo list--- --- (c) 2005 Samuel Bronson --+-- (c) 2005 Samuel Bronson module Plugin.Todo (theModule) where  import Plugin import Message (Message, nick, packNick, unpackNick, showNick) import qualified Data.ByteString.Char8 as P -PLUGIN Todo+$(plugin "Todo")  -- A list of key/elem pairs with an ordering determined by its position in the list type TodoState = [(P.ByteString, P.ByteString)]@@ -39,30 +38,30 @@ getTodo :: Message.Message m => m -> TodoState -> String -> ModuleLB TodoState getTodo msg todoList [] = return [formatTodo msg todoList] getTodo _ _ _           = error "@todo has no args, try @todo-add or @list todo"- + -- | Pretty print todo list formatTodo :: Message.Message m => m -> [(P.ByteString, P.ByteString)] -> String formatTodo _ [] = "Nothing to do!" formatTodo msg todoList =-    unlines $ map (\(n::Int, (idea, nick_)) -> concat $ +    unlines $ map (\(n::Int, (idea, nick_)) -> concat $             [ show n,". ",showNick msg $ unpackNick nick_,": ",P.unpack idea ]) $-                zip [0..] todoList +                zip [0..] todoList  -- | Add new entry to list addTodo :: P.ByteString -> String -> ModuleLB TodoState-addTodo sender rest = do +addTodo sender rest = do     modifyMS (++[(P.pack rest, sender)])     return ["Entry added to the todo list"]  -- | Delete an entry from the list delTodo :: String -> ModuleLB TodoState-delTodo rest -    | Just n <- readM rest = withMS $ \ls write -> case () of   +delTodo rest+    | Just n <- readM rest = withMS $ \ls write -> case () of       _ | null ls -> return ["Todo list is empty"]         | n > length ls - 1 || n < 0         -> return [show n ++ " is out of range"] -        | otherwise -> do +        | otherwise -> do             write (map snd . filter ((/= n) . fst) . zip [0..] $ ls)             let (a,_) = ls !! n             return ["Removed: " ++ P.unpack a]
Plugin/Topic.hs view
@@ -1,10 +1,9 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-} -- | The Topic plugin is an interface for messing with the channel topic. --   It can alter the topic in various ways and keep track of the changes. --   The advantage of having the bot maintain the topic is that we get an --   authoritative source for the current topic, when the IRC server decides --   to delete it due to Network Splits.--- module Plugin.Topic (theModule) where  import Plugin@@ -13,7 +12,7 @@  import Control.Monad.State (gets) -PLUGIN Topic+$(plugin "Topic")  instance Module TopicModule () where   moduleHelp _ s = case s of
Plugin/Type.hs view
@@ -1,4 +1,4 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, PatternGuards #-} -- |   The Type Module - another progressive plugin for lambdabot -- -- pesco hamburg 2003-04-05@@ -16,13 +16,12 @@ -- --     Well, what do you know, this plugin enables lambdabot to automate --     that lookup for you and your fellow lambda hackers.--- module Plugin.Type where-+import File import Plugin import qualified Text.Regex as R -PLUGIN Type+$(plugin "Type")  instance Module TypeModule () where      moduleCmds        _  = ["type", "kind"]@@ -61,7 +60,7 @@ stripComments :: String -> String stripComments []          = [] stripComments ('\n':_)    = [] -- drop any newwline and rest. *security*-stripComments ('-':'-':_) = []  -- +stripComments ('-':'-':_) = []  -- stripComments ('{':'-':cs)= stripComments (go 1 cs) stripComments (c:cs)      = c : stripComments cs @@ -69,7 +68,7 @@ go :: Int -> String -> String go 0 xs         = xs go _ ('-':[])   = []   -- unterminated-go n ('-':x:xs) +go n ('-':x:xs)     | x == '}'  = go (n-1) xs     | otherwise = go n (x:xs) go _ ('{':[])   = []  -- unterminated@@ -86,9 +85,9 @@ --     selecting the last subset match on each matching line before finally concatting --     the whole lot together again. ---extract_signatures :: String -> String+extract_signatures :: String -> Maybe String extract_signatures output-        = reverse . removeExp . reverse .+        = fmap reverse . removeExp . reverse .           unwords . map (dropWhile isSpace . expandTab) .           mapMaybe ((>>= last') . R.matchRegex signature_regex) .           lines $ output@@ -96,17 +95,17 @@         last' [] = Nothing         last' xs = Just $ last xs -        removeExp :: String -> String-        removeExp [] = []+        removeExp :: String -> Maybe String+        removeExp [] = Nothing         removeExp xs = removeExp' 0 xs-        -        removeExp' :: Int -> String -> String-        removeExp' 0 (' ':':':':':' ':_) = []-        removeExp' n ('(':xs)            = '(':removeExp' (n+1) xs-        removeExp' n (')':xs)            = ')':removeExp' (n-1) xs-        removeExp' n (x  :xs)            = x  :removeExp'  n    xs-        removeExp' _ []                  = error "invalid ghci output: no type signature" +        removeExp' :: Int -> String -> Maybe String+        removeExp' 0 (' ':':':':':' ':_) = Just []+        removeExp' n ('(':xs)            = ('(':) `fmap` removeExp' (n+1) xs+        removeExp' n (')':xs)            = (')':) `fmap` removeExp' (n-1) xs+        removeExp' n (x  :xs)            = (x  :) `fmap` removeExp'  n    xs+        removeExp' _ []                  = Nothing+ -- --     With this the command handler can be easily defined using popen: --@@ -114,14 +113,25 @@ -- query_ghci' :: String -> String -> IO String query_ghci' cmd expr = do-       (output, errors, _) <- popen (ghci config) ["-v0","-fglasgow-exts","-fno-th","-iscripts"]+       importHeader <- findFile "imports.h"+       imports <- fmap (map (unwords . drop 1 . words)+                        . filter (null+                                  . intersect ["as","hiding","qualified"]+                                  . words)+                        . filter (isPrefixOf "import")+                        . lines)+                       (readFile importHeader)+       l <- findFile "L.hs"+       let context = ":load "++l++"\n" ++ concatMap ((":m + " ++) . (++"\n")) imports+       (output, errors, _) <- popen (ghci config) ["-v0","-fglasgow-exts","-fno-th","-iState","-iscripts","-XNoMonomorphismRestriction"]                                        (Just (context ++ command cmd (stripComments expr)))        let ls = extract_signatures output-       return $ if null ls-                then unlines . take 3 . filter (not . null) . map cleanRE2 .-                     lines . expandTab . cleanRE . filter (/='\r') $ errors -- "bzzt" -                else ls+       return $ case ls of+                  Nothing -> unlines . take 3 . filter (not . null) . map cleanRE2 .+                             lines . expandTab . cleanRE . filter (/='\r') $ errors -- "bzzt"+                  Just t -> t   where+     {-      context = ":l L\n" ++ (concatMap (\m -> ":m + "++m++"\n") $                     prehier ++ datas ++ qualifieds ++ controls ++ other ++ extras) @@ -129,7 +139,7 @@         ["Text.Printf"         ,"Text.PrettyPrint.HughesPJ"] -     prehier    = ["Char", "List", "Maybe", "Numeric", "Random" ]+     prehier    = ["Numeric"]       qualifieds = [] @@ -186,6 +196,7 @@         ,"Parallel"         ,"Parallel.Strategies"         ]+     -}       cleanRE, cleanRE2 :: String -> String      cleanRE s
Plugin/UnMtl.hs view
@@ -1,11 +1,12 @@+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-} ---------------------------------------------------------------------- -- | -- Module      : Plugin.UnMtl -- Copyright   : Don Stewart, Lennart Kolmodin 2007, Twan van Laarhoven 2008 -- License     : GPL-style (see LICENSE)--- --- Unroll the MTL monads with your favorite bot!  --+-- Unroll the MTL monads with your favorite bot!+-- ----------------------------------------------------------------------  module Plugin.UnMtl where@@ -14,11 +15,11 @@  import Language.Haskell.Syntax import Language.Haskell.Parser-import Lib.Parser (prettyPrintInLine)+import Lambdabot.Parser (prettyPrintInLine)  import Plugin as P -PLUGIN UnMtl+$(plugin "UnMtl")  instance P.Module UnMtlModule () where     moduleCmds   _ = ["unmtl"]@@ -152,7 +153,7 @@ mtlParser input = do     HsModule _ _ _ _ decls <- liftE $ parseModule ("type X = "++input++"\n")     hsType <- case decls of-        (HsTypeDecl _ _ _ hsType:_) -> return hsType +        (HsTypeDecl _ _ _ hsType:_) -> return hsType         _ -> fail "No parse?"     let result = mtlParser' hsType     case pError result of
Plugin/Undo.hs view
@@ -1,18 +1,18 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-}+ -- Copyright (c) 2006 Spencer Janssen -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)---  module Plugin.Undo where  import Plugin-import Lib.Parser+import Lambdabot.Parser import Language.Haskell.Syntax hiding (Module) import Data.Generics import qualified Data.Set as Set import Control.Monad (guard) -PLUGIN Undo+$(plugin "Undo")  instance Module UndoModule () where     moduleCmds   _ = ["undo", "redo"]@@ -42,11 +42,11 @@     f [HsQualifier e]          = e     f (HsQualifier e     : xs) = infixed e ">>" $ f xs     f (HsLetStmt   ds    : xs) = HsLet ds $ f xs-    f (HsGenerator s p e : xs) +    f (HsGenerator s p e : xs)         | irrefutable p = infixed e ">>=" $ HsLambda s [p] $ f xs-        | otherwise     = infixed e ">>=" $ -                            HsLambda s [pvar v] $ -                                HsCase (var v) +        | otherwise     = infixed e ">>=" $+                            HsLambda s [pvar v] $+                                HsCase (var v)                                     [ alt p (f xs)                                     , alt HsPWildCard $                                         HsApp@@ -59,11 +59,11 @@     f []                       = HsList [e]     f (HsQualifier g     : xs) = HsIf g (f xs) nil     f (HsLetStmt   ds    : xs) = HsLet ds $ f xs-    f (HsGenerator s p l : xs) +    f (HsGenerator s p l : xs)         | irrefutable p = concatMap' $ HsLambda s [p] $ f xs-        | otherwise     = concatMap' $ -                            HsLambda s [pvar v] $ -                                HsCase (var v) +        | otherwise     = concatMap' $+                            HsLambda s [pvar v] $+                                HsCase (var v)                                     [ alt p (f xs)                                     , alt HsPWildCard nil                                     ]@@ -94,7 +94,7 @@  redo :: String -> HsExp -> HsExp redo _ (HsLet ds (HsDo s)) = HsDo (HsLetStmt ds : s)-redo v e@(HsInfixApp l (HsQVarOp (UnQual (HsSymbol op))) r) = +redo v e@(HsInfixApp l (HsQVarOp (UnQual (HsSymbol op))) r) =     case op of         ">>=" ->             case r of
Plugin/Unlambda.hs view
@@ -1,16 +1,15 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-} -- Copyright (c) 2006 Don Stewart - http://www.cse.unsw.edu.au/~dons -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html) -- -- | A plugin for the Haskell interpreter for the unlambda language -- -- http://www.madore.org/~david/programs/unlambda/--- module Plugin.Unlambda (theModule) where  import Plugin -PLUGIN Unlambda+$(plugin "Unlambda")  instance Module UnlambdaModule () where     moduleCmds   _     = ["unlambda"]
Plugin/Url.hs view
@@ -1,6 +1,5 @@---+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, PatternGuards #-} -- | Fetch URL page titles of HTML links.--- module Plugin.Url (theModule) where  import Plugin@@ -8,7 +7,7 @@  import qualified Text.Regex as R -- legacy -PLUGIN Url+$(plugin "Url")  instance Module UrlModule Bool where     moduleHelp  _ "url-title"     = "url-title <url>. Fetch the page title."@@ -46,7 +45,7 @@ -- | Fetch the title of the specified URL. fetchTitle :: String -> LB [String] fetchTitle url = do-    title <- io $ urlPageTitle url (proxy config)+    title <- io $ runWebReq (urlPageTitle url) (proxy config)     return $ maybe [] return title  -- | base url for fetching tiny urls@@ -55,16 +54,16 @@  -- | Fetch the title of the specified URL. fetchTiny :: String -> LB [String]-fetchTiny url +fetchTiny url     | Just uri <- parseURI (tinyurl ++ url) = do-        tiny <- io $ getHtmlPage uri (proxy config)+        tiny <- io $ runWebReq (getHtmlPage uri) (proxy config)         return $ maybe [] return $ findTiny $ foldl' cat "" tiny     | otherwise = return $ maybe [] return $ Just url     where cat x y = x ++ " " ++ y  -- | Tries to find the start of a tinyurl findTiny :: String -> Maybe String-findTiny text = do +findTiny text = do   (_,kind,rest,_) <- R.matchRegexAll begreg text   let url = takeWhile (/=' ') rest   return $ stripSuffixes ignoredUrlSuffixes $ kind ++ url@@ -72,13 +71,13 @@   begreg = R.mkRegexWithOpts "http://tinyurl.com/" True False  -- | List of strings that, if present in a contextual message, will--- prevent the looking up of titles.  This list can be used to stop +-- prevent the looking up of titles.  This list can be used to stop -- responses to lisppaste for example.  Another important use is to--- another lambdabot looking up a url title that contains another --- url in it (infinite loop).  Ideally, this list could be added to +-- another lambdabot looking up a url title that contains another+-- url in it (infinite loop).  Ideally, this list could be added to -- by an admin via a privileged command (TODO). ignoredStrings :: [String]-ignoredStrings = +ignoredStrings =     ["paste",                -- Ignore lisppaste, rafb.net      "cpp.sourcforge.net",   -- C++ paste bin      "HaskellIrcPastePage",  -- Ignore paste page@@ -113,7 +112,7 @@  -- | Utility function to check of any of the Strings in the specified -- list are substrings of the String.-areSubstringsOf :: [String] -> String -> Bool +areSubstringsOf :: [String] -> String -> Bool areSubstringsOf = flip (any . flip isSubstringOf)     where       isSubstringOf s str = any (isPrefixOf s) (tails str)
Plugin/Version.hs view
@@ -1,28 +1,20 @@-{-# OPTIONS -cpp #-}--#include "config.h"----+{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-} -- Copyright (c) 2005-6 Don Stewart - http://www.cse.unsw.edu.au/~dons -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)--- --- -- | Lambdabot version information--- module Plugin.Version where  import Plugin+import Paths_lambdabot (version)+import Data.Version (showVersion) -PLUGIN Version+$(plugin "Version")  instance Module VersionModule () where     moduleCmds   _ = ["version"]-    moduleHelp _ _ = "version/source. Report the build date, ghc version " ++ +    moduleHelp _ _ = "version/source. Report the version " ++                      "and darcs repo of this bot"     process_ _ _ _ = ios . return $ concat-                ["lambdabot 4p", PATCH_COUNT, ", ",-                 "GHC ", GHC_VERSION, " (", PLATFORM,-                 if null CPU then [] else " " ++ CPU , ")",-                 "\n", "darcs get ", REPO_PATH ]-+                [ "lambdabot ", showVersion version, "\n"+                , "darcs get http://code.haskell.org/lambdabot" ]
Plugin/Vixen.hs view
@@ -1,23 +1,26 @@---+{-# LANGUAGE TemplateHaskell, FlexibleInstances, MultiParamTypeClasses #-}+ -- | Talk to hot chixxors.---+ -- (c) Mark Wotton -- Serialisation (c) 2007 Don Stewart---+ module Plugin.Vixen where  -- import Data.Int (for code to read old state data) import Data.Binary import Data.Binary.Put import Data.Binary.Get-import Plugin  import Control.Arrow ((***)) import System.Directory import qualified Data.ByteString.Char8 as P -PLUGIN Vixen+import File (findFile)+import Plugin +$(plugin "Vixen")+ instance Module VixenModule (Bool, String -> IO String) where     moduleCmds   _   = ["vixen"]     modulePrivs  _   = ["vixen-on", "vixen-off"] -- could be noisy@@ -43,15 +46,13 @@     -- suck in our (read only) regex state from disk     -- compile it, and stick it in the plugin state     moduleInit _     = do-      b <- io $ doesFileExist file+      b <- io $ doesFileExist =<< findFile "vixen"       when b $ do-          s <- io $ do st <- decodeFile file+          s <- io $ do st <- decodeFile =<< findFile "vixen"                        let compiled = map (regex *** id) st                        return (vixen (mkResponses compiled))           modifyMS $ \(v,_) -> (v, s) -      where file = "State/vixen"- ------------------------------------------------------------------------  vixen :: (String -> WTree) -> String -> IO String@@ -66,12 +67,10 @@     filter (\(reg,_) -> matches' reg them) choices  --------------------------------------------------------------------------- -- serialisation for the vixen state -- -- The tree of regexes and responses is written in binary form to -- State/vixen, and we suck it in on module init, then lazily regexify it all---  data WTree = Leaf !P.ByteString | Node ![WTree]              deriving Show@@ -106,7 +105,7 @@           getPair = liftM2 (,)            getBS   = getShort >>= getByteString-          +           getWTree = do             tag <- getWord8             case tag of
Plugin/Where.hs view
@@ -1,5 +1,6 @@------ | +{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, TypeSynonymInstances #-}++-- | -- Module    : Where -- Copyright : 2003 Shae Erisson --@@ -7,15 +8,14 @@ -- -- Slightly specialised version of Where for associating projects with their urls. -- Code almost all copied.--- module Plugin.Where (theModule) where  import Plugin-import Lib.Util (confirmation)+import Lambdabot.Util (confirmation) import qualified Data.ByteString.Char8 as P import qualified Data.Map as M -PLUGIN Where+$(plugin "Where")  type WhereState         = M.Map P.ByteString P.ByteString type WhereWriter        = WhereState -> LB ()
− README
@@ -1,85 +0,0 @@- _                   _          _         _             _-/ \                 / |        | \       / |           | \_-| |    ___ _  _ _ _ | \__    __/ | ___ _ | \__   ____  |  _|-| |   /  _` || ` ` ||  _ \  / _  |/  _` ||  _ \ /  _ \ | |-| \__ | |_| || | | || |_| || |_| || |_| || |_| || |_| || \__-\____|\___,_/|_|_|_|\____/  \____/\___,_/\____/ \____/ \____|--BUILDING:--You'll need GHC >= 6.4--If you're *not* using ghc 6.6, build the Data.ByteString library at-http://www.cse.unsw.edu.au/~dons, version 0.7 and later are ok.--You need the zlib library:-    http://hackage.haskell.org/cgi-bin/hackage-scripts/package/zlib--Build with cabal (simple)-    $ vi Config.hs-    $ ./build-    $ ./lambdabot { -e command }--If the ./Setup.hs step doesn't seem to like the cabal file, you likely-need to install an updated version of Cabal:-    $ cd $place_you_want_to_put_cabal-    $ darcs get http://darcs.haskell.org/packages/Cabal-    $ cd Cabal-    $ runghc -cpp Setup.lhs configure && runghc -cpp Setup.lhs build-    # runghc -cpp Setup.lhs install--Note: If you want lambdabot to be able to evaluate expressions-(e.g., "> 1 + 1" evaluates to 2) then you'll need hs-plugins and also-before './Setup.hs configure --bindir=`pwd`' you need to copy-lambdabot.cabal.plugins to lambdabot.cabal.--Or with ghci (fastest turn around). But first you have to build with-cabal as above anyway. So this is mostly for development purposes.-    $ vi Config.hs-    $ sh configure-    $ sh ghci Main.hs-then-    *Main> main-or-    *Main> online <list>-where <list> is a list of commands to execute, as with -e.--OFFLINE MODE:-    ./lambdabot--CONNECTING:-    ./lambdabot -e 'rc online.rc'--SSL MODE (with stunnel):--append the following to your stunnel.conf-    client = yes-    [irc]-    accept = 6667-    connect = ssl-irc-server.org:6667--and edit online.rc to use localhost as server, then restart the stunnel-server and restart lambdabot with:--    ./lambdabot -e 'rc online.rc'--SCRIPTS:-    The scripts directory contains some shell scripts for Vim editor support-    They are self-explanatory--BUGS:--Bug reports, patches, new modules etc, contact:--	Don Stewart <dons@cse.unsw.edu.au>-	aka dons on #haskell--REPOSITORY:--Our darcs repository is located at:-    http://code.haskell.org/lambdabot--CONTRIBUTING:--Use 'darcs send' to submit patches to dons. Add yourself to the AUTHORS-file if you haven't already.
− STYLE
@@ -1,110 +0,0 @@------------------------------------------------------------------------------This document describes various style recommendations for the-lambdabot code. The goal is that all of the lambdabot source code should-respect this style guide, although it is not yet the case. You are therefore-encouraged to change source code such that it fits the style guide.-------------------------------------------------------------------------------*** Import lists--{{{--module QuoteModule (-        Type(..),-        value1,-        value2,-    )-}}}--*** RCS tags--$Id .. $ tags should be removed, as we are using darcs now.--*** Order of imports--import statements should be ordered as so:-{{{-        Local application-        Local application qualified/as--        Old-style Haskell2 modules-        Data.*-        Control.*-        System.*--        GHC.*-}}}--*** Function naming conventions--The convention for naming functions are as follows:--* Give meaningful names to functions. ``splitFirstWord'' is a good name,-  but ``fooFunc'' is not.--* When composing multiple words into a function name, do not separate them-  with a underscore (``_'') character. Just concatenate the words together.--* The first word is written in all lowercase. The words following are-  capitalized.--Thus one should write:--splitFirstWord, join, breakOnGlue, debugStr, lookupSet, etc.--*** Use hierarchical modules--Old style non-hierarchical module imports should be replaced with-their hierachial module counterpart. The List module, as an example,-should be replaced with Data.List.--*** Use non-deprecated modules--Deprecated modules should be replaced by their non-deprecated-counterparts since it prevents bitrot of the source code.--*** Minimalize namespace--The namespace of a module should be minimized. Restrict imports such-that only used function calls and data types are imported. Furthermore-use qualified imports to split of the namespace in comprehensible parts.---ddump-minimal-imports is useful for keeping a lid on this.--*** Provide explicit type signatures--We require all source code to build with -Werror. As a consequence-explicit type signatures for all functions should be provided.--*** Haddock documentation--We use Haddock as an API documentation tool. You should therefore-provide haddock comments for all exported functions, and preferably-for internal functions too. Proper documentation in Haddock will-provide other people an easier access to your modules, and will make-it easier to spot intent or catch errors.--*** Portability--Provide portable source code that works with ghc >= 6.2.2. Lambdabot-has a number of portability layer modules to ease the transition; the-most prominent being Map.hs, as it provides a portability layer to-Data.Map/Data.FiniteMap.--*** More references--We try to adopt the coding guidelines of the GHC project. Take a look at-the GHC libraries, in particular Data.Map, as the library modules follows-the guiding principles well.--*** Writing Module instances--moduleHelp should be provided for each command.-The help format is:-    "command <arg1> <arg2>. Description goes here"--No leading @ should be prefixed to the command (as this is meaningless-in offline mode). The command should end in a fullstop, followed by a-sentence or two describing the command.--Check in offline mode that 'help command' looks good.
Shared.hs view
@@ -1,12 +1,11 @@---+{-# LANGUAGE Rank2Types, TypeOperators #-}+ -- Copyright (c) 2005 Don Stewart - http://www.cse.unsw.edu.au/~dons -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)---  -- | Shared types between static and dynamic code. This is the only -- module that is linked both statically and dynamically. (And doing so -- breaks us from running the whole of the bot in ghci -- so sue me).---  module Shared (Module(..), Symbol, DynLoad(..)) where 
State/L.hs view
@@ -1,40 +1,82 @@ module L where -import Prelude hiding (mapM, sequence, mapM_, sequence_)-import Numeric+import Control.Applicative+import Control.Arrow hiding (pure)+import Control.Arrow.Operations+import Control.Monad+import Control.Monad.Cont+import Control.Monad.Error+import Control.Monad.Fix+import Control.Monad.Identity+import Control.Monad.Instances+import Control.Monad.Logic+import Control.Monad.RWS+import Control.Monad.Reader+import Control.Monad.ST (ST, runST, fixST)+import Control.Monad.State+import Control.Monad.State+import Control.Monad.Writer+import Control.Parallel+import Control.Parallel.Strategies import Data.Array-import Data.Complex-import Data.Generics import Data.Bits import Data.Bool import Data.Char+import Data.Complex import Data.Dynamic import Data.Either+import Data.Eq+import Data.Fixed+import Data.Function hiding ((.))+import Data.Generics hiding (GT) import Data.Graph import Data.Int import Data.Ix-import Data.List+import Data.List hiding ((++),map) import Data.Maybe+import Data.Monoid+import Data.Number.BigFloat+import Data.Number.CReal+import Data.Number.Dif+import Data.Number.Fixed+import Data.Number.Interval+import Data.Number.Natural+import Data.Number.Symbolic+import Data.Ord import Data.Ratio+import Data.STRef import Data.Tree import Data.Tuple import Data.Typeable import Data.Word+import Numeric+import ShowQ+import System.Random+import Test.QuickCheck+import Text.PrettyPrint.HughesPJ hiding (empty)+import Text.Printf+import qualified Control.Arrow.Transformer as AT+import qualified Control.Arrow.Transformer.All as AT+import qualified Data.ByteString as BS+import qualified Data.ByteString.Char8 as BSC+import qualified Data.ByteString.Lazy as BSL+import qualified Data.ByteString.Lazy.Char8 as BSLC+import qualified Data.Foldable+import qualified Data.Generics+import qualified Data.IntMap as IM+import qualified Data.IntSet as IS import qualified Data.Map as M+import qualified Data.Sequence import qualified Data.Set as S-import qualified Data.IntSet as I-import Control.Monad-import Control.Monad.Cont-import Control.Monad.State-import Control.Monad.ST-import Control.Monad.Reader-import Control.Monad.Fix-import Control.Arrow-import Text.Printf-import Test.QuickCheck-import ShowQ+import qualified Data.Traversable++import SimpleReflect hiding (var) import Math.OEIS +describeSequence = fmap description . lookupSequence++newtype Mu f = In { out :: f (Mu f) }++newtype Rec a = InR { outR :: Rec a -> a }+ {-# LINE 1 "<local>" #-}-s x y z = x z (y z); k x _ = x; i x = x-on f g x y = g x `f` g y
State/Pristine.hs view
@@ -1,41 +1,82 @@ module L where -import Prelude hiding (mapM, sequence, mapM_, sequence_)-import Char-import List-import Maybe-import Numeric-import Random+import Control.Applicative+import Control.Arrow hiding (pure)+import Control.Arrow.Operations+import Control.Monad+import Control.Monad.Cont+import Control.Monad.Error+import Control.Monad.Fix+import Control.Monad.Identity+import Control.Monad.Instances+import Control.Monad.Logic+import Control.Monad.RWS+import Control.Monad.Reader+import Control.Monad.ST (ST, runST, fixST)+import Control.Monad.State+import Control.Monad.State+import Control.Monad.Writer+import Control.Parallel+import Control.Parallel.Strategies import Data.Array-import Data.Complex-import Data.Generics import Data.Bits import Data.Bool import Data.Char+import Data.Complex import Data.Dynamic import Data.Either+import Data.Eq+import Data.Fixed+import Data.Function hiding ((.))+import Data.Generics hiding (GT) import Data.Graph import Data.Int import Data.Ix-import Data.List+import Data.List hiding ((++),map) import Data.Maybe+import Data.Monoid+import Data.Number.BigFloat+import Data.Number.CReal+import Data.Number.Dif+import Data.Number.Fixed+import Data.Number.Interval+import Data.Number.Natural+import Data.Number.Symbolic+import Data.Ord import Data.Ratio+import Data.STRef import Data.Tree import Data.Tuple import Data.Typeable import Data.Word+import Numeric+import ShowQ+import System.Random+import Test.QuickCheck+import Text.PrettyPrint.HughesPJ hiding (empty)+import Text.Printf+import qualified Control.Arrow.Transformer as AT+import qualified Control.Arrow.Transformer.All as AT+import qualified Data.ByteString as BS+import qualified Data.ByteString.Char8 as BSC+import qualified Data.ByteString.Lazy as BSL+import qualified Data.ByteString.Lazy.Char8 as BSLC+import qualified Data.Foldable+import qualified Data.Generics+import qualified Data.IntMap as IM+import qualified Data.IntSet as IS import qualified Data.Map as M+import qualified Data.Sequence import qualified Data.Set as S-import qualified Data.IntSet as I-import Control.Monad-import Control.Monad.Cont-import Control.Monad.State-import Control.Monad.ST-import Control.Monad.Reader-import Control.Monad.Fix-import Control.Arrow-import Text.Printf-import Test.QuickCheck-import ShowQ+import qualified Data.Traversable++import SimpleReflect hiding (var)+import Math.OEIS++describeSequence = fmap description . lookupSequence++newtype Mu f = In { out :: f (Mu f) }++newtype Rec a = InR { outR :: Rec a -> a }  {-# LINE 1 "<local>" #-}
State/fact view

binary file changed (958 → 20 bytes)

+ State/fresh view
@@ -0,0 +1,1 @@+0
− State/hoogle.txt
@@ -1,8653 +0,0 @@--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module GHC.PArr--module Unsafe.Coerce-unsafeCoerce :: a -> b--module Data.Tuple-fst :: (a, b) -> a-snd :: (a, b) -> b-curry :: ((a, b) -> c) -> a -> b -> c-uncurry :: (a -> b -> c) -> (a, b) -> c--module Data.String-class IsString a-fromString :: IsString a => String -> a-instance IsString [Char]--module Data.Ord-class Eq a => Ord a-compare :: Ord a => a -> a -> Ordering-(<) :: Ord a => a -> a -> Bool-(<=) :: Ord a => a -> a -> Bool-(>) :: Ord a => a -> a -> Bool-(>=) :: Ord a => a -> a -> Bool-max :: Ord a => a -> a -> a-min :: Ord a => a -> a -> a-instance Ord All-instance Ord Any-instance Ord ArithException-instance Ord ArrayException-instance Ord AsyncException-instance Ord Bool-instance Ord BufferMode-instance Ord CChar-instance Ord CClock-instance Ord CDouble-instance Ord CFloat-instance Ord CInt-instance Ord CIntMax-instance Ord CIntPtr-instance Ord CLDouble-instance Ord CLLong-instance Ord CLong-instance Ord CPtrdiff-instance Ord CSChar-instance Ord CShort-instance Ord CSigAtomic-instance Ord CSize-instance Ord CTime-instance Ord CUChar-instance Ord CUInt-instance Ord CUIntMax-instance Ord CUIntPtr-instance Ord CULLong-instance Ord CULong-instance Ord CUShort-instance Ord CWchar-instance Ord Char-instance Ord ConsoleEvent-instance Ord Double-instance Ord ExitCode-instance Ord Fd-instance Ord Float-instance Ord GeneralCategory-instance Ord IOMode-instance Ord Int-instance Ord Int16-instance Ord Int32-instance Ord Int64-instance Ord Int8-instance Ord IntPtr-instance Ord Integer-instance Ord Ordering-instance Ord SeekMode-instance Ord ThreadId-instance Ord Unique-instance Ord Version-instance Ord Word-instance Ord Word16-instance Ord Word32-instance Ord Word64-instance Ord Word8-instance Ord WordPtr-instance Ord ()-instance (Ord a, Ord b) => Ord (a, b)-instance (Ord a, Ord b, Ord c) => Ord (a, b, c)-instance (Ord a, Ord b, Ord c, Ord d) => Ord (a, b, c, d)-instance (Ord a, Ord b, Ord c, Ord d, Ord e) => Ord (a, b, c, d, e)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f) => Ord (a, b, c, d, e, f)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g) => Ord (a, b, c, d, e, f, g)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h) => Ord (a, b, c, d, e, f, g, h)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i) => Ord (a, b, c, d, e, f, g, h, i)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j) => Ord (a, b, c, d, e, f, g, h, i, j)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k) => Ord (a, b, c, d, e, f, g, h, i, j, k)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l) => Ord (a, b, c, d, e, f, g, h, i, j, k, l)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m, Ord n) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m, Ord n, Ord o) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)-instance Ord a => Ord (Dual a)-instance Ord a => Ord (First a)-instance Ord (Fixed a)-instance Ord (ForeignPtr a)-instance Ord (FunPtr a)-instance Ord a => Ord (Last a)-instance Ord a => Ord (Maybe a)-instance Ord a => Ord (Product a)-instance Ord (Ptr a)-instance Integral a => Ord (Ratio a)-instance Ord a => Ord (Sum a)-instance Ord a => Ord [a]-instance (Ix i, Ord e) => Ord (Array i e)-instance (Ord a, Ord b) => Ord (Either a b)-data Ordering-LT :: Ordering-EQ :: Ordering-instance Bounded Ordering-instance Data Ordering-instance Enum Ordering-instance Eq Ordering-instance Ix Ordering-instance Monoid Ordering-instance Ord Ordering-instance Read Ordering-instance Show Ordering-instance Typeable Ordering-comparing :: Ord a => (b -> a) -> b -> b -> Ordering--module Data.Maybe-data Maybe a-Nothing :: Maybe a-Just :: a -> Maybe a-instance Alternative Maybe-instance Applicative Maybe-instance Foldable Maybe-instance Functor Maybe-instance Monad Maybe-instance MonadFix Maybe-instance MonadPlus Maybe-instance Traversable Maybe-instance Typeable1 Maybe-instance Data a => Data (Maybe a)-instance Eq a => Eq (Maybe a)-instance Monoid a => Monoid (Maybe a)-instance Ord a => Ord (Maybe a)-instance Read a => Read (Maybe a)-instance Show a => Show (Maybe a)-maybe :: b -> (a -> b) -> Maybe a -> b-isJust :: Maybe a -> Bool-isNothing :: Maybe a -> Bool-fromJust :: Maybe a -> a-fromMaybe :: a -> Maybe a -> a-listToMaybe :: [a] -> Maybe a-maybeToList :: Maybe a -> [a]-catMaybes :: [Maybe a] -> [a]-mapMaybe :: (a -> Maybe b) -> [a] -> [b]--module Data.Eq-class Eq a-(==) :: Eq a => a -> a -> Bool-(/=) :: Eq a => a -> a -> Bool-instance Eq All-instance Eq Any-instance Eq ArithException-instance Eq ArrayException-instance Eq AsyncException-instance Eq Bool-instance Eq BufferMode-instance Eq BufferState-instance Eq CChar-instance Eq CClock-instance Eq CDouble-instance Eq CFloat-instance Eq CInt-instance Eq CIntMax-instance Eq CIntPtr-instance Eq CLDouble-instance Eq CLLong-instance Eq CLong-instance Eq CPtrdiff-instance Eq CSChar-instance Eq CShort-instance Eq CSigAtomic-instance Eq CSize-instance Eq CTime-instance Eq CUChar-instance Eq CUInt-instance Eq CUIntMax-instance Eq CUIntPtr-instance Eq CULLong-instance Eq CULong-instance Eq CUShort-instance Eq CWchar-instance Eq Char-instance Eq ConsoleEvent-instance Eq Constr-instance Eq ConstrRep-instance Eq DataRep-instance Eq Double-instance Eq Errno-instance Eq Exception-instance Eq ExitCode-instance Eq FDType-instance Eq Fd-instance Eq Fixity-instance Eq Float-instance Eq GeneralCategory-instance Eq Handle-instance Eq HandlePosn-instance Eq HashData-instance Eq IOErrorType-instance Eq IOException-instance Eq IOMode-instance Eq Inserts-instance Eq Int-instance Eq Int16-instance Eq Int32-instance Eq Int64-instance Eq Int8-instance Eq IntPtr-instance Eq Integer-instance Eq Key-instance Eq KeyPr-instance Eq Lexeme-instance Eq Ordering-instance Eq SeekMode-instance Eq ThreadId-instance Eq Timeout-instance Eq TyCon-instance Eq TypeRep-instance Eq Unique-instance Eq Version-instance Eq Word-instance Eq Word16-instance Eq Word32-instance Eq Word64-instance Eq Word8-instance Eq WordPtr-instance Eq ()-instance (Eq a, Eq b) => Eq (a, b)-instance (Eq a, Eq b, Eq c) => Eq (a, b, c)-instance (Eq a, Eq b, Eq c, Eq d) => Eq (a, b, c, d)-instance (Eq a, Eq b, Eq c, Eq d, Eq e) => Eq (a, b, c, d, e)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f) => Eq (a, b, c, d, e, f)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g) => Eq (a, b, c, d, e, f, g)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h) => Eq (a, b, c, d, e, f, g, h)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i) => Eq (a, b, c, d, e, f, g, h, i)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j) => Eq (a, b, c, d, e, f, g, h, i, j)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k) => Eq (a, b, c, d, e, f, g, h, i, j, k)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l) => Eq (a, b, c, d, e, f, g, h, i, j, k, l)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)-instance (RealFloat a, Eq a) => Eq (Complex a)-instance Eq a => Eq (Dual a)-instance Eq a => Eq (First a)-instance Eq (Fixed a)-instance Eq (ForeignPtr a)-instance Eq (FunPtr a)-instance Eq (IORef a)-instance Eq a => Eq (Last a)-instance Eq (MVar a)-instance Eq a => Eq (Maybe a)-instance Eq a => Eq (Product a)-instance Eq (Ptr a)-instance (Integral a, Eq a) => Eq (Ratio a)-instance Eq (StableName a)-instance Eq (StablePtr a)-instance Eq a => Eq (Sum a)-instance Eq (TVar a)-instance Eq a => Eq [a]-instance (Ix i, Eq e) => Eq (Array i e)-instance (Eq a, Eq b) => Eq (Either a b)-instance Eq (IOArray i e)-instance Eq (STRef s a)-instance Eq (STArray s i e)--module Data.Either-data Either a b-Left :: a -> Either a b-Right :: b -> Either a b-instance Typeable2 Either-instance Functor (Either a)-instance (Data a, Data b) => Data (Either a b)-instance (Eq a, Eq b) => Eq (Either a b)-instance (Ord a, Ord b) => Ord (Either a b)-instance (Read a, Read b) => Read (Either a b)-instance (Show a, Show b) => Show (Either a b)-either :: (a -> c) -> (b -> c) -> Either a b -> c--module Text.Show-type ShowS = String -> String-class Show a-showsPrec :: Show a => Int -> a -> ShowS-show :: Show a => a -> String-showList :: Show a => [a] -> ShowS-instance Show All-instance Show Any-instance Show ArithException-instance Show ArrayException-instance Show AsyncException-instance Show Bool-instance Show BufferMode-instance Show CChar-instance Show CClock-instance Show CDouble-instance Show CFloat-instance Show CInt-instance Show CIntMax-instance Show CIntPtr-instance Show CLDouble-instance Show CLLong-instance Show CLong-instance Show CPtrdiff-instance Show CSChar-instance Show CShort-instance Show CSigAtomic-instance Show CSize-instance Show CTime-instance Show CUChar-instance Show CUInt-instance Show CUIntMax-instance Show CUIntPtr-instance Show CULLong-instance Show CULong-instance Show CUShort-instance Show CWchar-instance Show Char-instance Show ConsoleEvent-instance Show Constr-instance Show ConstrRep-instance Show DataRep-instance Show DataType-instance Show Double-instance Show Dynamic-instance Show Exception-instance Show ExitCode-instance Show Fd-instance Show Fixity-instance Show Float-instance Show GeneralCategory-instance Show Handle-instance Show HandlePosn-instance Show HandleType-instance Show HashData-instance Show IOErrorType-instance Show IOException-instance Show IOMode-instance Show Int-instance Show Int16-instance Show Int32-instance Show Int64-instance Show Int8-instance Show IntPtr-instance Show Integer-instance Show Lexeme-instance Show Ordering-instance Show SeekMode-instance Show ThreadId-instance Show TyCon-instance Show TypeRep-instance Show Version-instance Show Word-instance Show Word16-instance Show Word32-instance Show Word64-instance Show Word8-instance Show WordPtr-instance Show ()-instance (Show a, Show b) => Show (a, b)-instance (Show a, Show b, Show c) => Show (a, b, c)-instance (Show a, Show b, Show c, Show d) => Show (a, b, c, d)-instance (Show a, Show b, Show c, Show d, Show e) => Show (a, b, c, d, e)-instance (Show a, Show b, Show c, Show d, Show e, Show f) => Show (a, b, c, d, e, f)-instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g) => Show (a, b, c, d, e, f, g)-instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h) => Show (a, b, c, d, e, f, g, h)-instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i) => Show (a, b, c, d, e, f, g, h, i)-instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j) => Show (a, b, c, d, e, f, g, h, i, j)-instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k) => Show (a, b, c, d, e, f, g, h, i, j, k)-instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l) => Show (a, b, c, d, e, f, g, h, i, j, k, l)-instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m)-instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m, n)-instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)-instance Show (a -> b)-instance (RealFloat a, Show a) => Show (Complex a)-instance Show a => Show (Dual a)-instance Show a => Show (First a)-instance HasResolution a => Show (Fixed a)-instance Show (ForeignPtr a)-instance Show (FunPtr a)-instance Show a => Show (Last a)-instance Show a => Show (Maybe a)-instance Show a => Show (Product a)-instance Show (Ptr a)-instance Integral a => Show (Ratio a)-instance Show a => Show (Sum a)-instance Show a => Show [a]-instance (Ix a, Show a, Show b) => Show (Array a b)-instance (Show a, Show b) => Show (Either a b)-instance Show (ST s a)-shows :: Show a => a -> ShowS-showChar :: Char -> ShowS-showString :: String -> ShowS-showParen :: Bool -> ShowS -> ShowS-showListWith :: (a -> ShowS) -> [a] -> ShowS--module Data.Bool-data Bool-False :: Bool-True :: Bool-instance Bounded Bool-instance Data Bool-instance Enum Bool-instance Eq Bool-instance Ix Bool-instance Ord Bool-instance Read Bool-instance Show Bool-instance Storable Bool-instance Typeable Bool-(&&) :: Bool -> Bool -> Bool-(||) :: Bool -> Bool -> Bool-not :: Bool -> Bool-otherwise :: Bool--module Data.Bits-class Num a => Bits a-(.&.) :: Bits a => a -> a -> a-(.|.) :: Bits a => a -> a -> a-xor :: Bits a => a -> a -> a-complement :: Bits a => a -> a-shift :: Bits a => a -> Int -> a-rotate :: Bits a => a -> Int -> a-bit :: Bits a => Int -> a-setBit :: Bits a => a -> Int -> a-clearBit :: Bits a => a -> Int -> a-complementBit :: Bits a => a -> Int -> a-testBit :: Bits a => a -> Int -> Bool-bitSize :: Bits a => a -> Int-isSigned :: Bits a => a -> Bool-shiftL :: Bits a => a -> Int -> a-shiftR :: Bits a => a -> Int -> a-rotateL :: Bits a => a -> Int -> a-rotateR :: Bits a => a -> Int -> a-instance Bits CChar-instance Bits CInt-instance Bits CIntMax-instance Bits CIntPtr-instance Bits CLLong-instance Bits CLong-instance Bits CPtrdiff-instance Bits CSChar-instance Bits CShort-instance Bits CSigAtomic-instance Bits CSize-instance Bits CUChar-instance Bits CUInt-instance Bits CUIntMax-instance Bits CUIntPtr-instance Bits CULLong-instance Bits CULong-instance Bits CUShort-instance Bits CWchar-instance Bits Fd-instance Bits Int-instance Bits Int16-instance Bits Int32-instance Bits Int64-instance Bits Int8-instance Bits IntPtr-instance Bits Integer-instance Bits Word-instance Bits Word16-instance Bits Word32-instance Bits Word64-instance Bits Word8-instance Bits WordPtr--module Control.Monad-class Functor f-fmap :: Functor f => (a -> b) -> f a -> f b-instance Functor IO-instance Functor Id-instance Functor Maybe-instance Functor ReadP-instance Functor ReadPrec-instance Functor STM-instance Functor ZipList-instance Functor []-instance Ix i => Functor (Array i)-instance Functor (Const m)-instance Functor (Either a)-instance Functor (ST s)-instance Functor (ST s)-instance Monad m => Functor (WrappedMonad m)-instance Functor ((,) a)-instance Functor ((->) r)-instance Arrow a => Functor (WrappedArrow a b)-class Monad m-(>>=) :: Monad m => m a -> (a -> m b) -> m b-(>>) :: Monad m => m a -> m b -> m b-return :: Monad m => a -> m a-fail :: Monad m => String -> m a-instance Monad IO-instance Monad Maybe-instance Monad P-instance Monad ReadP-instance Monad ReadPrec-instance Monad STM-instance Monad []-instance ArrowApply a => Monad (ArrowMonad a)-instance Monad (ST s)-instance Monad (ST s)-instance Monad ((->) r)-class Monad m => MonadPlus m-mzero :: MonadPlus m => m a-mplus :: MonadPlus m => m a -> m a -> m a-instance MonadPlus Maybe-instance MonadPlus P-instance MonadPlus ReadP-instance MonadPlus ReadPrec-instance MonadPlus []-mapM :: Monad m => (a -> m b) -> [a] -> m [b]-mapM_ :: Monad m => (a -> m b) -> [a] -> m ()-forM :: Monad m => [a] -> (a -> m b) -> m [b]-forM_ :: Monad m => [a] -> (a -> m b) -> m ()-sequence :: Monad m => [m a] -> m [a]-sequence_ :: Monad m => [m a] -> m ()-(=<<) :: Monad m => (a -> m b) -> m a -> m b-(>=>) :: Monad m => (a -> m b) -> (b -> m c) -> a -> m c-(<=<) :: Monad m => (b -> m c) -> (a -> m b) -> a -> m c-forever :: Monad m => m a -> m ()-join :: Monad m => m (m a) -> m a-msum :: MonadPlus m => [m a] -> m a-filterM :: Monad m => (a -> m Bool) -> [a] -> m [a]-mapAndUnzipM :: Monad m => (a -> m (b, c)) -> [a] -> m ([b], [c])-zipWithM :: Monad m => (a -> b -> m c) -> [a] -> [b] -> m [c]-zipWithM_ :: Monad m => (a -> b -> m c) -> [a] -> [b] -> m ()-foldM :: Monad m => (a -> b -> m a) -> a -> [b] -> m a-foldM_ :: Monad m => (a -> b -> m a) -> a -> [b] -> m ()-replicateM :: Monad m => Int -> m a -> m [a]-replicateM_ :: Monad m => Int -> m a -> m ()-guard :: MonadPlus m => Bool -> m ()-when :: Monad m => Bool -> m () -> m ()-unless :: Monad m => Bool -> m () -> m ()-liftM :: Monad m => (a1 -> r) -> m a1 -> m r-liftM2 :: Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r-liftM3 :: Monad m => (a1 -> a2 -> a3 -> r) -> m a1 -> m a2 -> m a3 -> m r-liftM4 :: Monad m => (a1 -> a2 -> a3 -> a4 -> r) -> m a1 -> m a2 -> m a3 -> m a4 -> m r-liftM5 :: Monad m => (a1 -> a2 -> a3 -> a4 -> a5 -> r) -> m a1 -> m a2 -> m a3 -> m a4 -> m a5 -> m r-ap :: Monad m => m (a -> b) -> m a -> m b--module Text.ParserCombinators.ReadP-data ReadP a-instance Functor ReadP-instance Monad ReadP-instance MonadPlus ReadP-get :: ReadP Char-look :: ReadP String-(+++) :: ReadP a -> ReadP a -> ReadP a-(<++) :: ReadP a -> ReadP a -> ReadP a-gather :: ReadP a -> ReadP (String, a)-pfail :: ReadP a-satisfy :: (Char -> Bool) -> ReadP Char-char :: Char -> ReadP Char-string :: String -> ReadP String-munch :: (Char -> Bool) -> ReadP String-munch1 :: (Char -> Bool) -> ReadP String-skipSpaces :: ReadP ()-choice :: [ReadP a] -> ReadP a-count :: Int -> ReadP a -> ReadP [a]-between :: ReadP open -> ReadP close -> ReadP a -> ReadP a-option :: a -> ReadP a -> ReadP a-optional :: ReadP a -> ReadP ()-many :: ReadP a -> ReadP [a]-many1 :: ReadP a -> ReadP [a]-skipMany :: ReadP a -> ReadP ()-skipMany1 :: ReadP a -> ReadP ()-sepBy :: ReadP a -> ReadP sep -> ReadP [a]-sepBy1 :: ReadP a -> ReadP sep -> ReadP [a]-endBy :: ReadP a -> ReadP sep -> ReadP [a]-endBy1 :: ReadP a -> ReadP sep -> ReadP [a]-chainr :: ReadP a -> ReadP (a -> a -> a) -> a -> ReadP a-chainl :: ReadP a -> ReadP (a -> a -> a) -> a -> ReadP a-chainl1 :: ReadP a -> ReadP (a -> a -> a) -> ReadP a-chainr1 :: ReadP a -> ReadP (a -> a -> a) -> ReadP a-manyTill :: ReadP a -> ReadP end -> ReadP [a]-type ReadS a = String -> [(a, String)]-readP_to_S :: ReadP a -> ReadS a-readS_to_P :: ReadS a -> ReadP a--module Text.ParserCombinators.ReadPrec-data ReadPrec a-instance Functor ReadPrec-instance Monad ReadPrec-instance MonadPlus ReadPrec-type Prec = Int-minPrec :: Prec-lift :: ReadP a -> ReadPrec a-prec :: Prec -> ReadPrec a -> ReadPrec a-step :: ReadPrec a -> ReadPrec a-reset :: ReadPrec a -> ReadPrec a-get :: ReadPrec Char-look :: ReadPrec String-(+++) :: ReadPrec a -> ReadPrec a -> ReadPrec a-(<++) :: ReadPrec a -> ReadPrec a -> ReadPrec a-pfail :: ReadPrec a-choice :: [ReadPrec a] -> ReadPrec a-readPrec_to_P :: ReadPrec a -> Int -> ReadP a-readP_to_Prec :: (Int -> ReadP a) -> ReadPrec a-readPrec_to_S :: ReadPrec a -> Int -> ReadS a-readS_to_Prec :: (Int -> ReadS a) -> ReadPrec a--module Text.Read.Lex-data Lexeme-Char :: Char -> Lexeme-String :: String -> Lexeme-Punc :: String -> Lexeme-Ident :: String -> Lexeme-Symbol :: String -> Lexeme-Int :: Integer -> Lexeme-Rat :: Rational -> Lexeme-EOF :: Lexeme-instance Eq Lexeme-instance Read Lexeme-instance Show Lexeme-lex :: ReadP Lexeme-hsLex :: ReadP String-lexChar :: ReadP Char-readIntP :: Num a => a -> (Char -> Bool) -> (Char -> Int) -> ReadP a-readOctP :: Num a => ReadP a-readDecP :: Num a => ReadP a-readHexP :: Num a => ReadP a--module Data.Word-data Word-instance Bits Word-instance Bounded Word-instance Data Word-instance Enum Word-instance Eq Word-instance Integral Word-instance Ix Word-instance Num Word-instance Ord Word-instance PrintfArg Word-instance Read Word-instance Real Word-instance Show Word-instance Storable Word-instance Typeable Word-data Word8-instance Bits Word8-instance Bounded Word8-instance Data Word8-instance Enum Word8-instance Eq Word8-instance Integral Word8-instance Ix Word8-instance Num Word8-instance Ord Word8-instance PrintfArg Word8-instance Read Word8-instance Real Word8-instance Show Word8-instance Storable Word8-instance Typeable Word8-data Word16-instance Bits Word16-instance Bounded Word16-instance Data Word16-instance Enum Word16-instance Eq Word16-instance Integral Word16-instance Ix Word16-instance Num Word16-instance Ord Word16-instance PrintfArg Word16-instance Read Word16-instance Real Word16-instance Show Word16-instance Storable Word16-instance Typeable Word16-data Word32-instance Bits Word32-instance Bounded Word32-instance Data Word32-instance Enum Word32-instance Eq Word32-instance Integral Word32-instance Ix Word32-instance Num Word32-instance Ord Word32-instance PrintfArg Word32-instance Read Word32-instance Real Word32-instance Show Word32-instance Storable Word32-instance Typeable Word32-data Word64-instance Bits Word64-instance Bounded Word64-instance Data Word64-instance Enum Word64-instance Eq Word64-instance Integral Word64-instance Ix Word64-instance Num Word64-instance Ord Word64-instance PrintfArg Word64-instance Read Word64-instance Real Word64-instance Show Word64-instance Storable Word64-instance Typeable Word64--module Data.Int-data Int-instance Bits Int-instance Bounded Int-instance Data Int-instance Enum Int-instance Eq Int-instance Integral Int-instance Ix Int-instance Num Int-instance Ord Int-instance PrintfArg Int-instance Read Int-instance Real Int-instance Show Int-instance Storable Int-instance Typeable Int-data Int8-instance Bits Int8-instance Bounded Int8-instance Data Int8-instance Enum Int8-instance Eq Int8-instance Integral Int8-instance Ix Int8-instance Num Int8-instance Ord Int8-instance PrintfArg Int8-instance Read Int8-instance Real Int8-instance Show Int8-instance Storable Int8-instance Typeable Int8-data Int16-instance Bits Int16-instance Bounded Int16-instance Data Int16-instance Enum Int16-instance Eq Int16-instance Integral Int16-instance Ix Int16-instance Num Int16-instance Ord Int16-instance PrintfArg Int16-instance Read Int16-instance Real Int16-instance Show Int16-instance Storable Int16-instance Typeable Int16-data Int32-instance Bits Int32-instance Bounded Int32-instance Data Int32-instance Enum Int32-instance Eq Int32-instance Integral Int32-instance Ix Int32-instance Num Int32-instance Ord Int32-instance PrintfArg Int32-instance Read Int32-instance Real Int32-instance Show Int32-instance Storable Int32-instance Typeable Int32-data Int64-instance Bits Int64-instance Bounded Int64-instance Data Int64-instance Enum Int64-instance Eq Int64-instance Integral Int64-instance Ix Int64-instance Num Int64-instance Ord Int64-instance PrintfArg Int64-instance Read Int64-instance Real Int64-instance Show Int64-instance Storable Int64-instance Typeable Int64--module Data.Char-data Char-instance Bounded Char-instance Data Char-instance Enum Char-instance Eq Char-instance IsChar Char-instance Ix Char-instance Ord Char-instance PrintfArg Char-instance Read Char-instance Show Char-instance Storable Char-instance Typeable Char-instance IsString [Char]-type String = [Char]-isControl :: Char -> Bool-isSpace :: Char -> Bool-isLower :: Char -> Bool-isUpper :: Char -> Bool-isAlpha :: Char -> Bool-isAlphaNum :: Char -> Bool-isPrint :: Char -> Bool-isDigit :: Char -> Bool-isOctDigit :: Char -> Bool-isHexDigit :: Char -> Bool-isLetter :: Char -> Bool-isMark :: Char -> Bool-isNumber :: Char -> Bool-isPunctuation :: Char -> Bool-isSymbol :: Char -> Bool-isSeparator :: Char -> Bool-isAscii :: Char -> Bool-isLatin1 :: Char -> Bool-isAsciiUpper :: Char -> Bool-isAsciiLower :: Char -> Bool-data GeneralCategory-UppercaseLetter :: GeneralCategory-LowercaseLetter :: GeneralCategory-TitlecaseLetter :: GeneralCategory-ModifierLetter :: GeneralCategory-OtherLetter :: GeneralCategory-NonSpacingMark :: GeneralCategory-SpacingCombiningMark :: GeneralCategory-EnclosingMark :: GeneralCategory-DecimalNumber :: GeneralCategory-LetterNumber :: GeneralCategory-OtherNumber :: GeneralCategory-ConnectorPunctuation :: GeneralCategory-DashPunctuation :: GeneralCategory-OpenPunctuation :: GeneralCategory-ClosePunctuation :: GeneralCategory-InitialQuote :: GeneralCategory-FinalQuote :: GeneralCategory-OtherPunctuation :: GeneralCategory-MathSymbol :: GeneralCategory-CurrencySymbol :: GeneralCategory-ModifierSymbol :: GeneralCategory-OtherSymbol :: GeneralCategory-Space :: GeneralCategory-LineSeparator :: GeneralCategory-ParagraphSeparator :: GeneralCategory-Control :: GeneralCategory-Format :: GeneralCategory-Surrogate :: GeneralCategory-PrivateUse :: GeneralCategory-NotAssigned :: GeneralCategory-instance Bounded GeneralCategory-instance Enum GeneralCategory-instance Eq GeneralCategory-instance Ix GeneralCategory-instance Ord GeneralCategory-instance Read GeneralCategory-instance Show GeneralCategory-generalCategory :: Char -> GeneralCategory-toUpper :: Char -> Char-toLower :: Char -> Char-toTitle :: Char -> Char-digitToInt :: Char -> Int-intToDigit :: Int -> Char-ord :: Char -> Int-chr :: Int -> Char-showLitChar :: Char -> ShowS-lexLitChar :: ReadS String-readLitChar :: ReadS Char--module Data.List-(++) :: [a] -> [a] -> [a]-head :: [a] -> a-last :: [a] -> a-tail :: [a] -> [a]-init :: [a] -> [a]-null :: [a] -> Bool-length :: [a] -> Int-map :: (a -> b) -> [a] -> [b]-reverse :: [a] -> [a]-intersperse :: a -> [a] -> [a]-intercalate :: [a] -> [[a]] -> [a]-transpose :: [[a]] -> [[a]]-foldl :: (a -> b -> a) -> a -> [b] -> a-foldl' :: (a -> b -> a) -> a -> [b] -> a-foldl1 :: (a -> a -> a) -> [a] -> a-foldl1' :: (a -> a -> a) -> [a] -> a-foldr :: (a -> b -> b) -> b -> [a] -> b-foldr1 :: (a -> a -> a) -> [a] -> a-concat :: [[a]] -> [a]-concatMap :: (a -> [b]) -> [a] -> [b]-and :: [Bool] -> Bool-or :: [Bool] -> Bool-any :: (a -> Bool) -> [a] -> Bool-all :: (a -> Bool) -> [a] -> Bool-sum :: Num a => [a] -> a-product :: Num a => [a] -> a-maximum :: Ord a => [a] -> a-minimum :: Ord a => [a] -> a-scanl :: (a -> b -> a) -> a -> [b] -> [a]-scanl1 :: (a -> a -> a) -> [a] -> [a]-scanr :: (a -> b -> b) -> b -> [a] -> [b]-scanr1 :: (a -> a -> a) -> [a] -> [a]-mapAccumL :: (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y])-mapAccumR :: (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y])-iterate :: (a -> a) -> a -> [a]-repeat :: a -> [a]-replicate :: Int -> a -> [a]-cycle :: [a] -> [a]-unfoldr :: (b -> Maybe (a, b)) -> b -> [a]-take :: Int -> [a] -> [a]-drop :: Int -> [a] -> [a]-splitAt :: Int -> [a] -> ([a], [a])-takeWhile :: (a -> Bool) -> [a] -> [a]-dropWhile :: (a -> Bool) -> [a] -> [a]-span :: (a -> Bool) -> [a] -> ([a], [a])-break :: (a -> Bool) -> [a] -> ([a], [a])-stripPrefix :: Eq a => [a] -> [a] -> Maybe [a]-group :: Eq a => [a] -> [[a]]-inits :: [a] -> [[a]]-tails :: [a] -> [[a]]-isPrefixOf :: Eq a => [a] -> [a] -> Bool-isSuffixOf :: Eq a => [a] -> [a] -> Bool-isInfixOf :: Eq a => [a] -> [a] -> Bool-elem :: Eq a => a -> [a] -> Bool-notElem :: Eq a => a -> [a] -> Bool-lookup :: Eq a => a -> [(a, b)] -> Maybe b-find :: (a -> Bool) -> [a] -> Maybe a-filter :: (a -> Bool) -> [a] -> [a]-partition :: (a -> Bool) -> [a] -> ([a], [a])-(!!) :: [a] -> Int -> a-elemIndex :: Eq a => a -> [a] -> Maybe Int-elemIndices :: Eq a => a -> [a] -> [Int]-findIndex :: (a -> Bool) -> [a] -> Maybe Int-findIndices :: (a -> Bool) -> [a] -> [Int]-zip :: [a] -> [b] -> [(a, b)]-zip3 :: [a] -> [b] -> [c] -> [(a, b, c)]-zip4 :: [a] -> [b] -> [c] -> [d] -> [(a, b, c, d)]-zip5 :: [a] -> [b] -> [c] -> [d] -> [e] -> [(a, b, c, d, e)]-zip6 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [(a, b, c, d, e, f)]-zip7 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [(a, b, c, d, e, f, g)]-zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]-zipWith3 :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]-zipWith4 :: (a -> b -> c -> d -> e) -> [a] -> [b] -> [c] -> [d] -> [e]-zipWith5 :: (a -> b -> c -> d -> e -> f) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f]-zipWith6 :: (a -> b -> c -> d -> e -> f -> g) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g]-zipWith7 :: (a -> b -> c -> d -> e -> f -> g -> h) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [h]-unzip :: [(a, b)] -> ([a], [b])-unzip3 :: [(a, b, c)] -> ([a], [b], [c])-unzip4 :: [(a, b, c, d)] -> ([a], [b], [c], [d])-unzip5 :: [(a, b, c, d, e)] -> ([a], [b], [c], [d], [e])-unzip6 :: [(a, b, c, d, e, f)] -> ([a], [b], [c], [d], [e], [f])-unzip7 :: [(a, b, c, d, e, f, g)] -> ([a], [b], [c], [d], [e], [f], [g])-lines :: String -> [String]-words :: String -> [String]-unlines :: [String] -> String-unwords :: [String] -> String-nub :: Eq a => [a] -> [a]-delete :: Eq a => a -> [a] -> [a]-(\\) :: Eq a => [a] -> [a] -> [a]-union :: Eq a => [a] -> [a] -> [a]-intersect :: Eq a => [a] -> [a] -> [a]-sort :: Ord a => [a] -> [a]-insert :: Ord a => a -> [a] -> [a]-nubBy :: (a -> a -> Bool) -> [a] -> [a]-deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]-deleteFirstsBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]-unionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]-intersectBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]-groupBy :: (a -> a -> Bool) -> [a] -> [[a]]-sortBy :: (a -> a -> Ordering) -> [a] -> [a]-insertBy :: (a -> a -> Ordering) -> a -> [a] -> [a]-maximumBy :: (a -> a -> Ordering) -> [a] -> a-minimumBy :: (a -> a -> Ordering) -> [a] -> a-genericLength :: Num i => [b] -> i-genericTake :: Integral i => i -> [a] -> [a]-genericDrop :: Integral i => i -> [a] -> [a]-genericSplitAt :: Integral i => i -> [b] -> ([b], [b])-genericIndex :: Integral a => [b] -> a -> b-genericReplicate :: Integral i => i -> a -> [a]--module Numeric-showSigned :: Real a => (a -> ShowS) -> Int -> a -> ShowS-showIntAtBase :: Integral a => a -> (Int -> Char) -> a -> ShowS-showInt :: Integral a => a -> ShowS-showHex :: Integral a => a -> ShowS-showOct :: Integral a => a -> ShowS-showEFloat :: RealFloat a => Maybe Int -> a -> ShowS-showFFloat :: RealFloat a => Maybe Int -> a -> ShowS-showGFloat :: RealFloat a => Maybe Int -> a -> ShowS-showFloat :: RealFloat a => a -> ShowS-floatToDigits :: RealFloat a => Integer -> a -> ([Int], Int)-readSigned :: Real a => ReadS a -> ReadS a-readInt :: Num a => a -> (Char -> Bool) -> (Char -> Int) -> ReadS a-readDec :: Num a => ReadS a-readOct :: Num a => ReadS a-readHex :: Num a => ReadS a-readFloat :: RealFrac a => ReadS a-lexDigits :: ReadS String-fromRat :: RealFloat a => Rational -> a--module Foreign.C.Types-data CChar-instance Bits CChar-instance Bounded CChar-instance Enum CChar-instance Eq CChar-instance Integral CChar-instance Num CChar-instance Ord CChar-instance Read CChar-instance Real CChar-instance Show CChar-instance Storable CChar-instance Typeable CChar-data CSChar-instance Bits CSChar-instance Bounded CSChar-instance Enum CSChar-instance Eq CSChar-instance Integral CSChar-instance Num CSChar-instance Ord CSChar-instance Read CSChar-instance Real CSChar-instance Show CSChar-instance Storable CSChar-instance Typeable CSChar-data CUChar-instance Bits CUChar-instance Bounded CUChar-instance Enum CUChar-instance Eq CUChar-instance Integral CUChar-instance Num CUChar-instance Ord CUChar-instance Read CUChar-instance Real CUChar-instance Show CUChar-instance Storable CUChar-instance Typeable CUChar-data CShort-instance Bits CShort-instance Bounded CShort-instance Enum CShort-instance Eq CShort-instance Integral CShort-instance Num CShort-instance Ord CShort-instance Read CShort-instance Real CShort-instance Show CShort-instance Storable CShort-instance Typeable CShort-data CUShort-instance Bits CUShort-instance Bounded CUShort-instance Enum CUShort-instance Eq CUShort-instance Integral CUShort-instance Num CUShort-instance Ord CUShort-instance Read CUShort-instance Real CUShort-instance Show CUShort-instance Storable CUShort-instance Typeable CUShort-data CInt-instance Bits CInt-instance Bounded CInt-instance Enum CInt-instance Eq CInt-instance Integral CInt-instance Num CInt-instance Ord CInt-instance Read CInt-instance Real CInt-instance Show CInt-instance Storable CInt-instance Typeable CInt-data CUInt-instance Bits CUInt-instance Bounded CUInt-instance Enum CUInt-instance Eq CUInt-instance Integral CUInt-instance Num CUInt-instance Ord CUInt-instance Read CUInt-instance Real CUInt-instance Show CUInt-instance Storable CUInt-instance Typeable CUInt-data CLong-instance Bits CLong-instance Bounded CLong-instance Enum CLong-instance Eq CLong-instance Integral CLong-instance Num CLong-instance Ord CLong-instance Read CLong-instance Real CLong-instance Show CLong-instance Storable CLong-instance Typeable CLong-data CULong-instance Bits CULong-instance Bounded CULong-instance Enum CULong-instance Eq CULong-instance Integral CULong-instance Num CULong-instance Ord CULong-instance Read CULong-instance Real CULong-instance Show CULong-instance Storable CULong-instance Typeable CULong-data CPtrdiff-instance Bits CPtrdiff-instance Bounded CPtrdiff-instance Enum CPtrdiff-instance Eq CPtrdiff-instance Integral CPtrdiff-instance Num CPtrdiff-instance Ord CPtrdiff-instance Read CPtrdiff-instance Real CPtrdiff-instance Show CPtrdiff-instance Storable CPtrdiff-instance Typeable CPtrdiff-data CSize-instance Bits CSize-instance Bounded CSize-instance Enum CSize-instance Eq CSize-instance Integral CSize-instance Num CSize-instance Ord CSize-instance Read CSize-instance Real CSize-instance Show CSize-instance Storable CSize-instance Typeable CSize-data CWchar-instance Bits CWchar-instance Bounded CWchar-instance Enum CWchar-instance Eq CWchar-instance Integral CWchar-instance Num CWchar-instance Ord CWchar-instance Read CWchar-instance Real CWchar-instance Show CWchar-instance Storable CWchar-instance Typeable CWchar-data CSigAtomic-instance Bits CSigAtomic-instance Bounded CSigAtomic-instance Enum CSigAtomic-instance Eq CSigAtomic-instance Integral CSigAtomic-instance Num CSigAtomic-instance Ord CSigAtomic-instance Read CSigAtomic-instance Real CSigAtomic-instance Show CSigAtomic-instance Storable CSigAtomic-instance Typeable CSigAtomic-data CLLong-instance Bits CLLong-instance Bounded CLLong-instance Enum CLLong-instance Eq CLLong-instance Integral CLLong-instance Num CLLong-instance Ord CLLong-instance Read CLLong-instance Real CLLong-instance Show CLLong-instance Storable CLLong-instance Typeable CLLong-data CULLong-instance Bits CULLong-instance Bounded CULLong-instance Enum CULLong-instance Eq CULLong-instance Integral CULLong-instance Num CULLong-instance Ord CULLong-instance Read CULLong-instance Real CULLong-instance Show CULLong-instance Storable CULLong-instance Typeable CULLong-data CIntPtr-instance Bits CIntPtr-instance Bounded CIntPtr-instance Enum CIntPtr-instance Eq CIntPtr-instance Integral CIntPtr-instance Num CIntPtr-instance Ord CIntPtr-instance Read CIntPtr-instance Real CIntPtr-instance Show CIntPtr-instance Storable CIntPtr-instance Typeable CIntPtr-data CUIntPtr-instance Bits CUIntPtr-instance Bounded CUIntPtr-instance Enum CUIntPtr-instance Eq CUIntPtr-instance Integral CUIntPtr-instance Num CUIntPtr-instance Ord CUIntPtr-instance Read CUIntPtr-instance Real CUIntPtr-instance Show CUIntPtr-instance Storable CUIntPtr-instance Typeable CUIntPtr-data CIntMax-instance Bits CIntMax-instance Bounded CIntMax-instance Enum CIntMax-instance Eq CIntMax-instance Integral CIntMax-instance Num CIntMax-instance Ord CIntMax-instance Read CIntMax-instance Real CIntMax-instance Show CIntMax-instance Storable CIntMax-instance Typeable CIntMax-data CUIntMax-instance Bits CUIntMax-instance Bounded CUIntMax-instance Enum CUIntMax-instance Eq CUIntMax-instance Integral CUIntMax-instance Num CUIntMax-instance Ord CUIntMax-instance Read CUIntMax-instance Real CUIntMax-instance Show CUIntMax-instance Storable CUIntMax-instance Typeable CUIntMax-data CClock-instance Enum CClock-instance Eq CClock-instance Num CClock-instance Ord CClock-instance Read CClock-instance Real CClock-instance Show CClock-instance Storable CClock-instance Typeable CClock-data CTime-instance Enum CTime-instance Eq CTime-instance Num CTime-instance Ord CTime-instance Read CTime-instance Real CTime-instance Show CTime-instance Storable CTime-instance Typeable CTime-data CFloat-instance Enum CFloat-instance Eq CFloat-instance Floating CFloat-instance Fractional CFloat-instance Num CFloat-instance Ord CFloat-instance Read CFloat-instance Real CFloat-instance RealFloat CFloat-instance RealFrac CFloat-instance Show CFloat-instance Storable CFloat-instance Typeable CFloat-data CDouble-instance Enum CDouble-instance Eq CDouble-instance Floating CDouble-instance Fractional CDouble-instance Num CDouble-instance Ord CDouble-instance Read CDouble-instance Real CDouble-instance RealFloat CDouble-instance RealFrac CDouble-instance Show CDouble-instance Storable CDouble-instance Typeable CDouble-data CLDouble-instance Enum CLDouble-instance Eq CLDouble-instance Floating CLDouble-instance Fractional CLDouble-instance Num CLDouble-instance Ord CLDouble-instance Read CLDouble-instance Real CLDouble-instance RealFloat CLDouble-instance RealFrac CLDouble-instance Show CLDouble-instance Storable CLDouble-instance Typeable CLDouble-data CFile-data CFpos-data CJmpBuf--module Foreign.Storable-class Storable a-sizeOf :: Storable a => a -> Int-alignment :: Storable a => a -> Int-peekElemOff :: Storable a => Ptr a -> Int -> IO a-pokeElemOff :: Storable a => Ptr a -> Int -> a -> IO ()-peekByteOff :: Storable a => Ptr b -> Int -> IO a-pokeByteOff :: Storable a => Ptr b -> Int -> a -> IO ()-peek :: Storable a => Ptr a -> IO a-poke :: Storable a => Ptr a -> a -> IO ()-instance Storable Bool-instance Storable Char-instance Storable Double-instance Storable Fd-instance Storable Float-instance Storable Int-instance Storable Int16-instance Storable Int32-instance Storable Int64-instance Storable Int8-instance Storable IntPtr-instance Storable Word-instance Storable Word16-instance Storable Word32-instance Storable Word64-instance Storable Word8-instance Storable WordPtr-instance Storable (FunPtr a)-instance Storable (Ptr a)-instance Storable (StablePtr a)--module Data.Typeable-class Typeable a-typeOf :: Typeable a => a -> TypeRep-instance Typeable ArithException-instance Typeable ArrayException-instance Typeable AsyncException-instance Typeable Bool-instance Typeable Char-instance Typeable ConsoleEvent-instance Typeable DataType-instance Typeable Double-instance Typeable Dynamic-instance Typeable Exception-instance Typeable Fd-instance Typeable Float-instance Typeable Handle-instance Typeable IOException-instance Typeable Int-instance Typeable Int16-instance Typeable Int32-instance Typeable Int64-instance Typeable Int8-instance Typeable IntPtr-instance Typeable Integer-instance Typeable Ordering-instance Typeable QSem-instance Typeable QSemN-instance Typeable RealWorld-instance Typeable ThreadId-instance Typeable Timeout-instance Typeable TyCon-instance Typeable TypeRep-instance Typeable Version-instance Typeable Word-instance Typeable Word16-instance Typeable Word32-instance Typeable Word64-instance Typeable Word8-instance Typeable WordPtr-instance Typeable ()-instance (Typeable1 s, Typeable a) => Typeable (s a)-cast :: (Typeable a, Typeable b) => a -> Maybe b-gcast :: (Typeable a, Typeable b) => c a -> Maybe (c b)-data TypeRep-instance Data TypeRep-instance Eq TypeRep-instance Show TypeRep-instance Typeable TypeRep-data TyCon-instance Data TyCon-instance Eq TyCon-instance Show TyCon-instance Typeable TyCon-showsTypeRep :: TypeRep -> ShowS-mkTyCon :: String -> TyCon-mkTyConApp :: TyCon -> [TypeRep] -> TypeRep-mkAppTy :: TypeRep -> TypeRep -> TypeRep-mkFunTy :: TypeRep -> TypeRep -> TypeRep-splitTyConApp :: TypeRep -> (TyCon, [TypeRep])-funResultTy :: TypeRep -> TypeRep -> Maybe TypeRep-typeRepTyCon :: TypeRep -> TyCon-typeRepArgs :: TypeRep -> [TypeRep]-tyConString :: TyCon -> String-typeRepKey :: TypeRep -> IO Int-class Typeable1 t-typeOf1 :: Typeable1 t => t a -> TypeRep-instance Typeable1 Chan-instance Typeable1 Complex-instance Typeable1 ForeignPtr-instance Typeable1 FunPtr-instance Typeable1 IO-instance Typeable1 IORef-instance Typeable1 MVar-instance Typeable1 Maybe-instance Typeable1 Ptr-instance Typeable1 Ratio-instance Typeable1 STM-instance Typeable1 StableName-instance Typeable1 StablePtr-instance Typeable1 TVar-instance Typeable1 Weak-instance Typeable1 []-instance (Typeable2 s, Typeable a) => Typeable1 (s a)-class Typeable2 t-typeOf2 :: Typeable2 t => t a b -> TypeRep-instance Typeable2 Array-instance Typeable2 Either-instance Typeable2 ST-instance Typeable2 STRef-instance Typeable2 (,)-instance Typeable2 (->)-instance (Typeable3 s, Typeable a) => Typeable2 (s a)-class Typeable3 t-typeOf3 :: Typeable3 t => t a b c -> TypeRep-instance Typeable3 STArray-instance Typeable3 (,,)-instance (Typeable4 s, Typeable a) => Typeable3 (s a)-class Typeable4 t-typeOf4 :: Typeable4 t => t a b c d -> TypeRep-instance Typeable4 (,,,)-instance (Typeable5 s, Typeable a) => Typeable4 (s a)-class Typeable5 t-typeOf5 :: Typeable5 t => t a b c d e -> TypeRep-instance Typeable5 (,,,,)-instance (Typeable6 s, Typeable a) => Typeable5 (s a)-class Typeable6 t-typeOf6 :: Typeable6 t => t a b c d e f -> TypeRep-instance Typeable6 (,,,,,)-instance (Typeable7 s, Typeable a) => Typeable6 (s a)-class Typeable7 t-typeOf7 :: Typeable7 t => t a b c d e f g -> TypeRep-instance Typeable7 (,,,,,,)-gcast1 :: (Typeable1 t, Typeable1 t') => c (t a) -> Maybe (c (t' a))-gcast2 :: (Typeable2 t, Typeable2 t') => c (t a b) -> Maybe (c (t' a b))-typeOfDefault :: (Typeable1 t, Typeable a) => t a -> TypeRep-typeOf1Default :: (Typeable2 t, Typeable a) => t a b -> TypeRep-typeOf2Default :: (Typeable3 t, Typeable a) => t a b c -> TypeRep-typeOf3Default :: (Typeable4 t, Typeable a) => t a b c d -> TypeRep-typeOf4Default :: (Typeable5 t, Typeable a) => t a b c d e -> TypeRep-typeOf5Default :: (Typeable6 t, Typeable a) => t a b c d e f -> TypeRep-typeOf6Default :: (Typeable7 t, Typeable a) => t a b c d e f g -> TypeRep--module Data.HashTable-data HashTable key val-new :: (key -> key -> Bool) -> (key -> Int32) -> IO (HashTable key val)-insert :: HashTable key val -> key -> val -> IO ()-delete :: HashTable key val -> key -> IO ()-lookup :: HashTable key val -> key -> IO (Maybe val)-update :: HashTable key val -> key -> val -> IO Bool-fromList :: Eq key => (key -> Int32) -> [(key, val)] -> IO (HashTable key val)-toList :: HashTable key val -> IO [(key, val)]-hashInt :: Int -> Int32-hashString :: String -> Int32-prime :: Int32-longestChain :: HashTable key val -> IO [(key, val)]--module Data.Dynamic-data Dynamic-instance Show Dynamic-instance Typeable Dynamic-toDyn :: Typeable a => a -> Dynamic-fromDyn :: Typeable a => Dynamic -> a -> a-fromDynamic :: Typeable a => Dynamic -> Maybe a-dynApply :: Dynamic -> Dynamic -> Maybe Dynamic-dynApp :: Dynamic -> Dynamic -> Dynamic-dynTypeRep :: Dynamic -> TypeRep--module Foreign.StablePtr-data StablePtr a-instance Typeable1 StablePtr-instance Typeable a => Data (StablePtr a)-instance Eq (StablePtr a)-instance Storable (StablePtr a)-newStablePtr :: a -> IO (StablePtr a)-deRefStablePtr :: StablePtr a -> IO a-freeStablePtr :: StablePtr a -> IO ()-castStablePtrToPtr :: StablePtr a -> Ptr ()-castPtrToStablePtr :: Ptr () -> StablePtr a--module System.IO.Error-type IOError = IOException-userError :: String -> IOError-mkIOError :: IOErrorType -> String -> Maybe Handle -> Maybe FilePath -> IOError-annotateIOError :: IOError -> String -> Maybe Handle -> Maybe FilePath -> IOError-isAlreadyExistsError :: IOError -> Bool-isDoesNotExistError :: IOError -> Bool-isAlreadyInUseError :: IOError -> Bool-isFullError :: IOError -> Bool-isEOFError :: IOError -> Bool-isIllegalOperation :: IOError -> Bool-isPermissionError :: IOError -> Bool-isUserError :: IOError -> Bool-ioeGetErrorType :: IOError -> IOErrorType-ioeGetLocation :: IOError -> String-ioeGetErrorString :: IOError -> String-ioeGetHandle :: IOError -> Maybe Handle-ioeGetFileName :: IOError -> Maybe FilePath-ioeSetErrorType :: IOError -> IOErrorType -> IOError-ioeSetErrorString :: IOError -> String -> IOError-ioeSetLocation :: IOError -> String -> IOError-ioeSetHandle :: IOError -> Handle -> IOError-ioeSetFileName :: IOError -> FilePath -> IOError-data IOErrorType-instance Eq IOErrorType-instance Show IOErrorType-alreadyExistsErrorType :: IOErrorType-doesNotExistErrorType :: IOErrorType-alreadyInUseErrorType :: IOErrorType-fullErrorType :: IOErrorType-eofErrorType :: IOErrorType-illegalOperationErrorType :: IOErrorType-permissionErrorType :: IOErrorType-userErrorType :: IOErrorType-isAlreadyExistsErrorType :: IOErrorType -> Bool-isDoesNotExistErrorType :: IOErrorType -> Bool-isAlreadyInUseErrorType :: IOErrorType -> Bool-isFullErrorType :: IOErrorType -> Bool-isEOFErrorType :: IOErrorType -> Bool-isIllegalOperationErrorType :: IOErrorType -> Bool-isPermissionErrorType :: IOErrorType -> Bool-isUserErrorType :: IOErrorType -> Bool-ioError :: IOError -> IO a-catch :: IO a -> (IOError -> IO a) -> IO a-try :: IO a -> IO (Either IOError a)-modifyIOError :: (IOError -> IOError) -> IO a -> IO a--module System.IO.Unsafe-unsafePerformIO :: IO a -> a-unsafeInterleaveIO :: IO a -> IO a--module Foreign.Ptr-data Ptr a-instance Typeable1 Ptr-instance Typeable a => Data (Ptr a)-instance Eq (Ptr a)-instance Ord (Ptr a)-instance Show (Ptr a)-instance Storable (Ptr a)-nullPtr :: Ptr a-castPtr :: Ptr a -> Ptr b-plusPtr :: Ptr a -> Int -> Ptr b-alignPtr :: Ptr a -> Int -> Ptr a-minusPtr :: Ptr a -> Ptr b -> Int-data FunPtr a-instance Typeable1 FunPtr-instance Eq (FunPtr a)-instance Ord (FunPtr a)-instance Show (FunPtr a)-instance Storable (FunPtr a)-nullFunPtr :: FunPtr a-castFunPtr :: FunPtr a -> FunPtr b-castFunPtrToPtr :: FunPtr a -> Ptr b-castPtrToFunPtr :: Ptr a -> FunPtr b-freeHaskellFunPtr :: FunPtr a -> IO ()-data IntPtr-instance Bits IntPtr-instance Bounded IntPtr-instance Enum IntPtr-instance Eq IntPtr-instance Integral IntPtr-instance Num IntPtr-instance Ord IntPtr-instance Read IntPtr-instance Real IntPtr-instance Show IntPtr-instance Storable IntPtr-instance Typeable IntPtr-ptrToIntPtr :: Ptr a -> IntPtr-intPtrToPtr :: IntPtr -> Ptr a-data WordPtr-instance Bits WordPtr-instance Bounded WordPtr-instance Enum WordPtr-instance Eq WordPtr-instance Integral WordPtr-instance Num WordPtr-instance Ord WordPtr-instance Read WordPtr-instance Real WordPtr-instance Show WordPtr-instance Storable WordPtr-instance Typeable WordPtr-ptrToWordPtr :: Ptr a -> WordPtr-wordPtrToPtr :: WordPtr -> Ptr a--module Foreign.Marshal.Error-throwIf :: (a -> Bool) -> (a -> String) -> IO a -> IO a-throwIf_ :: (a -> Bool) -> (a -> String) -> IO a -> IO ()-throwIfNeg :: (Ord a, Num a) => (a -> String) -> IO a -> IO a-throwIfNeg_ :: (Ord a, Num a) => (a -> String) -> IO a -> IO ()-throwIfNull :: String -> IO (Ptr a) -> IO (Ptr a)-void :: IO a -> IO ()--module Foreign.Concurrent-newForeignPtr :: Ptr a -> IO () -> IO (ForeignPtr a)-addForeignPtrFinalizer :: ForeignPtr a -> IO () -> IO ()--module Foreign.ForeignPtr-data ForeignPtr a-instance Typeable a => Data (ForeignPtr a)-instance Eq (ForeignPtr a)-instance Ord (ForeignPtr a)-instance Show (ForeignPtr a)-type FinalizerPtr a = FunPtr (Ptr a -> IO ())-type FinalizerEnvPtr env a = FunPtr (Ptr env -> Ptr a -> IO ())-newForeignPtr :: FinalizerPtr a -> Ptr a -> IO (ForeignPtr a)-newForeignPtr_ :: Ptr a -> IO (ForeignPtr a)-addForeignPtrFinalizer :: FinalizerPtr a -> ForeignPtr a -> IO ()-newForeignPtrEnv :: FinalizerEnvPtr env a -> Ptr env -> Ptr a -> IO (ForeignPtr a)-addForeignPtrFinalizerEnv :: FinalizerEnvPtr env a -> Ptr env -> ForeignPtr a -> IO ()-withForeignPtr :: ForeignPtr a -> (Ptr a -> IO b) -> IO b-finalizeForeignPtr :: ForeignPtr a -> IO ()-unsafeForeignPtrToPtr :: ForeignPtr a -> Ptr a-touchForeignPtr :: ForeignPtr a -> IO ()-castForeignPtr :: ForeignPtr a -> ForeignPtr b-mallocForeignPtr :: Storable a => IO (ForeignPtr a)-mallocForeignPtrBytes :: Int -> IO (ForeignPtr a)-mallocForeignPtrArray :: Storable a => Int -> IO (ForeignPtr a)-mallocForeignPtrArray0 :: Storable a => Int -> IO (ForeignPtr a)--module Foreign.Marshal.Alloc-alloca :: Storable a => (Ptr a -> IO b) -> IO b-allocaBytes :: Int -> (Ptr a -> IO b) -> IO b-malloc :: Storable a => IO (Ptr a)-mallocBytes :: Int -> IO (Ptr a)-realloc :: Storable b => Ptr a -> IO (Ptr b)-reallocBytes :: Ptr a -> Int -> IO (Ptr a)-free :: Ptr a -> IO ()-finalizerFree :: FinalizerPtr a--module Foreign.Marshal.Utils-with :: Storable a => a -> (Ptr a -> IO b) -> IO b-new :: Storable a => a -> IO (Ptr a)-fromBool :: Num a => Bool -> a-toBool :: Num a => a -> Bool-maybeNew :: (a -> IO (Ptr a)) -> Maybe a -> IO (Ptr a)-maybeWith :: (a -> (Ptr b -> IO c) -> IO c) -> Maybe a -> (Ptr b -> IO c) -> IO c-maybePeek :: (Ptr a -> IO b) -> Ptr a -> IO (Maybe b)-withMany :: (a -> (b -> res) -> res) -> [a] -> ([b] -> res) -> res-copyBytes :: Ptr a -> Ptr a -> Int -> IO ()-moveBytes :: Ptr a -> Ptr a -> Int -> IO ()--module Foreign.Marshal.Array-mallocArray :: Storable a => Int -> IO (Ptr a)-mallocArray0 :: Storable a => Int -> IO (Ptr a)-allocaArray :: Storable a => Int -> (Ptr a -> IO b) -> IO b-allocaArray0 :: Storable a => Int -> (Ptr a -> IO b) -> IO b-reallocArray :: Storable a => Ptr a -> Int -> IO (Ptr a)-reallocArray0 :: Storable a => Ptr a -> Int -> IO (Ptr a)-peekArray :: Storable a => Int -> Ptr a -> IO [a]-peekArray0 :: (Storable a, Eq a) => a -> Ptr a -> IO [a]-pokeArray :: Storable a => Ptr a -> [a] -> IO ()-pokeArray0 :: Storable a => a -> Ptr a -> [a] -> IO ()-newArray :: Storable a => [a] -> IO (Ptr a)-newArray0 :: Storable a => a -> [a] -> IO (Ptr a)-withArray :: Storable a => [a] -> (Ptr a -> IO b) -> IO b-withArray0 :: Storable a => a -> [a] -> (Ptr a -> IO b) -> IO b-withArrayLen :: Storable a => [a] -> (Int -> Ptr a -> IO b) -> IO b-withArrayLen0 :: Storable a => a -> [a] -> (Int -> Ptr a -> IO b) -> IO b-copyArray :: Storable a => Ptr a -> Ptr a -> Int -> IO ()-moveArray :: Storable a => Ptr a -> Ptr a -> Int -> IO ()-lengthArray0 :: (Storable a, Eq a) => a -> Ptr a -> IO Int-advancePtr :: Storable a => Ptr a -> Int -> Ptr a--module Foreign.C.String-type CString = Ptr CChar-type CStringLen = (Ptr CChar, Int)-peekCString :: CString -> IO String-peekCStringLen :: CStringLen -> IO String-newCString :: String -> IO CString-newCStringLen :: String -> IO CStringLen-withCString :: String -> (CString -> IO a) -> IO a-withCStringLen :: String -> (CStringLen -> IO a) -> IO a-charIsRepresentable :: Char -> IO Bool-castCharToCChar :: Char -> CChar-castCCharToChar :: CChar -> Char-peekCAString :: CString -> IO String-peekCAStringLen :: CStringLen -> IO String-newCAString :: String -> IO CString-newCAStringLen :: String -> IO CStringLen-withCAString :: String -> (CString -> IO a) -> IO a-withCAStringLen :: String -> (CStringLen -> IO a) -> IO a-type CWString = Ptr CWchar-type CWStringLen = (Ptr CWchar, Int)-peekCWString :: CWString -> IO String-peekCWStringLen :: CWStringLen -> IO String-newCWString :: String -> IO CWString-newCWStringLen :: String -> IO CWStringLen-withCWString :: String -> (CWString -> IO a) -> IO a-withCWStringLen :: String -> (CWStringLen -> IO a) -> IO a--module Foreign.C.Error-newtype Errno-Errno :: CInt -> Errno-instance Eq Errno-eOK :: Errno-e2BIG :: Errno-eACCES :: Errno-eADDRINUSE :: Errno-eADDRNOTAVAIL :: Errno-eADV :: Errno-eAFNOSUPPORT :: Errno-eAGAIN :: Errno-eALREADY :: Errno-eBADF :: Errno-eBADMSG :: Errno-eBADRPC :: Errno-eBUSY :: Errno-eCHILD :: Errno-eCOMM :: Errno-eCONNABORTED :: Errno-eCONNREFUSED :: Errno-eCONNRESET :: Errno-eDEADLK :: Errno-eDESTADDRREQ :: Errno-eDIRTY :: Errno-eDOM :: Errno-eDQUOT :: Errno-eEXIST :: Errno-eFAULT :: Errno-eFBIG :: Errno-eFTYPE :: Errno-eHOSTDOWN :: Errno-eHOSTUNREACH :: Errno-eIDRM :: Errno-eILSEQ :: Errno-eINPROGRESS :: Errno-eINTR :: Errno-eINVAL :: Errno-eIO :: Errno-eISCONN :: Errno-eISDIR :: Errno-eLOOP :: Errno-eMFILE :: Errno-eMLINK :: Errno-eMSGSIZE :: Errno-eMULTIHOP :: Errno-eNAMETOOLONG :: Errno-eNETDOWN :: Errno-eNETRESET :: Errno-eNETUNREACH :: Errno-eNFILE :: Errno-eNOBUFS :: Errno-eNODATA :: Errno-eNODEV :: Errno-eNOENT :: Errno-eNOEXEC :: Errno-eNOLCK :: Errno-eNOLINK :: Errno-eNOMEM :: Errno-eNOMSG :: Errno-eNONET :: Errno-eNOPROTOOPT :: Errno-eNOSPC :: Errno-eNOSR :: Errno-eNOSTR :: Errno-eNOSYS :: Errno-eNOTBLK :: Errno-eNOTCONN :: Errno-eNOTDIR :: Errno-eNOTEMPTY :: Errno-eNOTSOCK :: Errno-eNOTTY :: Errno-eNXIO :: Errno-eOPNOTSUPP :: Errno-ePERM :: Errno-ePFNOSUPPORT :: Errno-ePIPE :: Errno-ePROCLIM :: Errno-ePROCUNAVAIL :: Errno-ePROGMISMATCH :: Errno-ePROGUNAVAIL :: Errno-ePROTO :: Errno-ePROTONOSUPPORT :: Errno-ePROTOTYPE :: Errno-eRANGE :: Errno-eREMCHG :: Errno-eREMOTE :: Errno-eROFS :: Errno-eRPCMISMATCH :: Errno-eRREMOTE :: Errno-eSHUTDOWN :: Errno-eSOCKTNOSUPPORT :: Errno-eSPIPE :: Errno-eSRCH :: Errno-eSRMNT :: Errno-eSTALE :: Errno-eTIME :: Errno-eTIMEDOUT :: Errno-eTOOMANYREFS :: Errno-eTXTBSY :: Errno-eUSERS :: Errno-eWOULDBLOCK :: Errno-eXDEV :: Errno-isValidErrno :: Errno -> Bool-getErrno :: IO Errno-resetErrno :: IO ()-errnoToIOError :: String -> Errno -> Maybe Handle -> Maybe String -> IOError-throwErrno :: String -> IO a-throwErrnoIf :: (a -> Bool) -> String -> IO a -> IO a-throwErrnoIf_ :: (a -> Bool) -> String -> IO a -> IO ()-throwErrnoIfRetry :: (a -> Bool) -> String -> IO a -> IO a-throwErrnoIfRetry_ :: (a -> Bool) -> String -> IO a -> IO ()-throwErrnoIfMinus1 :: Num a => String -> IO a -> IO a-throwErrnoIfMinus1_ :: Num a => String -> IO a -> IO ()-throwErrnoIfMinus1Retry :: Num a => String -> IO a -> IO a-throwErrnoIfMinus1Retry_ :: Num a => String -> IO a -> IO ()-throwErrnoIfNull :: String -> IO (Ptr a) -> IO (Ptr a)-throwErrnoIfNullRetry :: String -> IO (Ptr a) -> IO (Ptr a)-throwErrnoIfRetryMayBlock :: (a -> Bool) -> String -> IO a -> IO b -> IO a-throwErrnoIfRetryMayBlock_ :: (a -> Bool) -> String -> IO a -> IO b -> IO ()-throwErrnoIfMinus1RetryMayBlock :: Num a => String -> IO a -> IO b -> IO a-throwErrnoIfMinus1RetryMayBlock_ :: Num a => String -> IO a -> IO b -> IO ()-throwErrnoIfNullRetryMayBlock :: String -> IO (Ptr a) -> IO b -> IO (Ptr a)-throwErrnoPath :: String -> FilePath -> IO a-throwErrnoPathIf :: (a -> Bool) -> String -> FilePath -> IO a -> IO a-throwErrnoPathIf_ :: (a -> Bool) -> String -> FilePath -> IO a -> IO ()-throwErrnoPathIfNull :: String -> FilePath -> IO (Ptr a) -> IO (Ptr a)-throwErrnoPathIfMinus1 :: Num a => String -> FilePath -> IO a -> IO a-throwErrnoPathIfMinus1_ :: Num a => String -> FilePath -> IO a -> IO ()--module Foreign.C--module Foreign.Marshal.Pool-data Pool-newPool :: IO Pool-freePool :: Pool -> IO ()-withPool :: (Pool -> IO b) -> IO b-pooledMalloc :: Storable a => Pool -> IO (Ptr a)-pooledMallocBytes :: Pool -> Int -> IO (Ptr a)-pooledRealloc :: Storable a => Pool -> Ptr a -> IO (Ptr a)-pooledReallocBytes :: Pool -> Ptr a -> Int -> IO (Ptr a)-pooledMallocArray :: Storable a => Pool -> Int -> IO (Ptr a)-pooledMallocArray0 :: Storable a => Pool -> Int -> IO (Ptr a)-pooledReallocArray :: Storable a => Pool -> Ptr a -> Int -> IO (Ptr a)-pooledReallocArray0 :: Storable a => Pool -> Ptr a -> Int -> IO (Ptr a)-pooledNew :: Storable a => Pool -> a -> IO (Ptr a)-pooledNewArray :: Storable a => Pool -> [a] -> IO (Ptr a)-pooledNewArray0 :: Storable a => Pool -> a -> [a] -> IO (Ptr a)--module Foreign.Marshal--module Foreign-unsafePerformIO :: IO a -> a--module System.Posix.Types-newtype Fd-Fd :: CInt -> Fd-instance Bits Fd-instance Bounded Fd-instance Enum Fd-instance Eq Fd-instance Integral Fd-instance Num Fd-instance Ord Fd-instance Read Fd-instance Real Fd-instance Show Fd-instance Storable Fd-instance Typeable Fd-type ByteCount = CSize-type ClockTick = CClock-type EpochTime = CTime-type FileOffset = COff-type ProcessID = CPid-type ProcessGroupID = CPid-type DeviceID = CDev-type FileID = CIno-type FileMode = CMode-type Limit = CLong--module GHC.Conc-data ThreadId-ThreadId :: ThreadId# -> ThreadId-instance Data ThreadId-instance Eq ThreadId-instance Ord ThreadId-instance Show ThreadId-instance Typeable ThreadId-forkIO :: IO () -> IO ThreadId-forkOnIO :: Int -> IO () -> IO ThreadId-numCapabilities :: Int-childHandler :: Exception -> IO ()-myThreadId :: IO ThreadId-killThread :: ThreadId -> IO ()-throwTo :: ThreadId -> Exception -> IO ()-par :: a -> b -> b-pseq :: a -> b -> b-yield :: IO ()-labelThread :: ThreadId -> String -> IO ()-threadDelay :: Int -> IO ()-registerDelay :: Int -> IO (TVar Bool)-threadWaitRead :: Fd -> IO ()-threadWaitWrite :: Fd -> IO ()-data MVar a-instance Typeable1 MVar-instance Typeable a => Data (MVar a)-instance Eq (MVar a)-newMVar :: a -> IO (MVar a)-newEmptyMVar :: IO (MVar a)-takeMVar :: MVar a -> IO a-putMVar :: MVar a -> a -> IO ()-tryTakeMVar :: MVar a -> IO (Maybe a)-tryPutMVar :: MVar a -> a -> IO Bool-isEmptyMVar :: MVar a -> IO Bool-addMVarFinalizer :: MVar a -> IO () -> IO ()-data STM a-instance Functor STM-instance Monad STM-instance Typeable1 STM-instance Typeable a => Data (STM a)-atomically :: STM a -> IO a-retry :: STM a-orElse :: STM a -> STM a -> STM a-catchSTM :: STM a -> (Exception -> STM a) -> STM a-alwaysSucceeds :: STM a -> STM ()-always :: STM Bool -> STM ()-data TVar a-instance Typeable1 TVar-instance Typeable a => Data (TVar a)-instance Eq (TVar a)-newTVar :: a -> STM (TVar a)-newTVarIO :: a -> IO (TVar a)-readTVar :: TVar a -> STM a-writeTVar :: TVar a -> a -> STM ()-unsafeIOToSTM :: IO a -> STM a-asyncRead :: Int -> Int -> Int -> Ptr a -> IO (Int, Int)-asyncWrite :: Int -> Int -> Int -> Ptr a -> IO (Int, Int)-asyncDoProc :: FunPtr (Ptr a -> IO Int) -> Ptr a -> IO Int-asyncReadBA :: Int -> Int -> Int -> Int -> MutableByteArray# RealWorld -> IO (Int, Int)-asyncWriteBA :: Int -> Int -> Int -> Int -> MutableByteArray# RealWorld -> IO (Int, Int)-ensureIOManagerIsRunning :: IO ()-data ConsoleEvent-ControlC :: ConsoleEvent-Break :: ConsoleEvent-Close :: ConsoleEvent-Logoff :: ConsoleEvent-Shutdown :: ConsoleEvent-instance Enum ConsoleEvent-instance Eq ConsoleEvent-instance Ord ConsoleEvent-instance Read ConsoleEvent-instance Show ConsoleEvent-instance Typeable ConsoleEvent-win32ConsoleHandler :: MVar (ConsoleEvent -> IO ())--module System.IO-data IO a-instance Applicative IO-instance Functor IO-instance Monad IO-instance MonadFix IO-instance Typeable1 IO-instance Typeable a => Data (IO a)-instance HPrintfType (IO a)-instance PrintfType (IO a)-fixIO :: (a -> IO a) -> IO a-type FilePath = String-data Handle-instance Data Handle-instance Eq Handle-instance Show Handle-instance Typeable Handle-stdin :: Handle-stdout :: Handle-stderr :: Handle-withFile :: FilePath -> IOMode -> (Handle -> IO r) -> IO r-openFile :: FilePath -> IOMode -> IO Handle-data IOMode-ReadMode :: IOMode-WriteMode :: IOMode-AppendMode :: IOMode-ReadWriteMode :: IOMode-instance Enum IOMode-instance Eq IOMode-instance Ix IOMode-instance Ord IOMode-instance Read IOMode-instance Show IOMode-hClose :: Handle -> IO ()-readFile :: FilePath -> IO String-writeFile :: FilePath -> String -> IO ()-appendFile :: FilePath -> String -> IO ()-hFileSize :: Handle -> IO Integer-hSetFileSize :: Handle -> Integer -> IO ()-hIsEOF :: Handle -> IO Bool-isEOF :: IO Bool-data BufferMode-NoBuffering :: BufferMode-LineBuffering :: BufferMode-BlockBuffering :: Maybe Int -> BufferMode-instance Eq BufferMode-instance Ord BufferMode-instance Read BufferMode-instance Show BufferMode-hSetBuffering :: Handle -> BufferMode -> IO ()-hGetBuffering :: Handle -> IO BufferMode-hFlush :: Handle -> IO ()-hGetPosn :: Handle -> IO HandlePosn-hSetPosn :: HandlePosn -> IO ()-data HandlePosn-instance Eq HandlePosn-instance Show HandlePosn-hSeek :: Handle -> SeekMode -> Integer -> IO ()-data SeekMode-AbsoluteSeek :: SeekMode-RelativeSeek :: SeekMode-SeekFromEnd :: SeekMode-instance Enum SeekMode-instance Eq SeekMode-instance Ix SeekMode-instance Ord SeekMode-instance Read SeekMode-instance Show SeekMode-hTell :: Handle -> IO Integer-hIsOpen :: Handle -> IO Bool-hIsClosed :: Handle -> IO Bool-hIsReadable :: Handle -> IO Bool-hIsWritable :: Handle -> IO Bool-hIsSeekable :: Handle -> IO Bool-hIsTerminalDevice :: Handle -> IO Bool-hSetEcho :: Handle -> Bool -> IO ()-hGetEcho :: Handle -> IO Bool-hShow :: Handle -> IO String-hWaitForInput :: Handle -> Int -> IO Bool-hReady :: Handle -> IO Bool-hGetChar :: Handle -> IO Char-hGetLine :: Handle -> IO String-hLookAhead :: Handle -> IO Char-hGetContents :: Handle -> IO String-hPutChar :: Handle -> Char -> IO ()-hPutStr :: Handle -> String -> IO ()-hPutStrLn :: Handle -> String -> IO ()-hPrint :: Show a => Handle -> a -> IO ()-interact :: (String -> String) -> IO ()-putChar :: Char -> IO ()-putStr :: String -> IO ()-putStrLn :: String -> IO ()-print :: Show a => a -> IO ()-getChar :: IO Char-getLine :: IO String-getContents :: IO String-readIO :: Read a => String -> IO a-readLn :: Read a => IO a-withBinaryFile :: FilePath -> IOMode -> (Handle -> IO r) -> IO r-openBinaryFile :: FilePath -> IOMode -> IO Handle-hSetBinaryMode :: Handle -> Bool -> IO ()-hPutBuf :: Handle -> Ptr a -> Int -> IO ()-hGetBuf :: Handle -> Ptr a -> Int -> IO Int-hPutBufNonBlocking :: Handle -> Ptr a -> Int -> IO Int-hGetBufNonBlocking :: Handle -> Ptr a -> Int -> IO Int-openTempFile :: FilePath -> String -> IO (FilePath, Handle)-openBinaryTempFile :: FilePath -> String -> IO (FilePath, Handle)--module GHC.Dotnet-data Object a-unmarshalObject :: Addr# -> Object a-marshalObject :: Object a -> (Addr# -> IO b) -> IO b-unmarshalString :: Addr# -> String-marshalString :: String -> (Addr# -> IO a) -> IO a-checkResult :: (State# RealWorld -> (State# RealWorld, a, Addr#)) -> IO a--module Text.Read-class Read a-readsPrec :: Read a => Int -> ReadS a-readList :: Read a => ReadS [a]-readPrec :: Read a => ReadPrec a-readListPrec :: Read a => ReadPrec [a]-instance Read All-instance Read Any-instance Read Bool-instance Read BufferMode-instance Read CChar-instance Read CClock-instance Read CDouble-instance Read CFloat-instance Read CInt-instance Read CIntMax-instance Read CIntPtr-instance Read CLDouble-instance Read CLLong-instance Read CLong-instance Read CPtrdiff-instance Read CSChar-instance Read CShort-instance Read CSigAtomic-instance Read CSize-instance Read CTime-instance Read CUChar-instance Read CUInt-instance Read CUIntMax-instance Read CUIntPtr-instance Read CULLong-instance Read CULong-instance Read CUShort-instance Read CWchar-instance Read Char-instance Read ConsoleEvent-instance Read Double-instance Read ExitCode-instance Read Fd-instance Read Float-instance Read GeneralCategory-instance Read IOMode-instance Read Int-instance Read Int16-instance Read Int32-instance Read Int64-instance Read Int8-instance Read IntPtr-instance Read Integer-instance Read Lexeme-instance Read Ordering-instance Read SeekMode-instance Read Version-instance Read Word-instance Read Word16-instance Read Word32-instance Read Word64-instance Read Word8-instance Read WordPtr-instance Read ()-instance (Read a, Read b) => Read (a, b)-instance (Read a, Read b, Read c) => Read (a, b, c)-instance (Read a, Read b, Read c, Read d) => Read (a, b, c, d)-instance (Read a, Read b, Read c, Read d, Read e) => Read (a, b, c, d, e)-instance (Read a, Read b, Read c, Read d, Read e, Read f) => Read (a, b, c, d, e, f)-instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g) => Read (a, b, c, d, e, f, g)-instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h) => Read (a, b, c, d, e, f, g, h)-instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i) => Read (a, b, c, d, e, f, g, h, i)-instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j) => Read (a, b, c, d, e, f, g, h, i, j)-instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k) => Read (a, b, c, d, e, f, g, h, i, j, k)-instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l) => Read (a, b, c, d, e, f, g, h, i, j, k, l)-instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l, Read m) => Read (a, b, c, d, e, f, g, h, i, j, k, l, m)-instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l, Read m, Read n) => Read (a, b, c, d, e, f, g, h, i, j, k, l, m, n)-instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l, Read m, Read n, Read o) => Read (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)-instance (RealFloat a, Read a) => Read (Complex a)-instance Read a => Read (Dual a)-instance Read a => Read (First a)-instance Read a => Read (Last a)-instance Read a => Read (Maybe a)-instance Read a => Read (Product a)-instance (Integral a, Read a) => Read (Ratio a)-instance Read a => Read (Sum a)-instance Read a => Read [a]-instance (Ix a, Read a, Read b) => Read (Array a b)-instance (Read a, Read b) => Read (Either a b)-type ReadS a = String -> [(a, String)]-reads :: Read a => ReadS a-read :: Read a => String -> a-readParen :: Bool -> ReadS a -> ReadS a-lex :: ReadS String-data Lexeme-Char :: Char -> Lexeme-String :: String -> Lexeme-Punc :: String -> Lexeme-Ident :: String -> Lexeme-Symbol :: String -> Lexeme-Int :: Integer -> Lexeme-Rat :: Rational -> Lexeme-EOF :: Lexeme-instance Eq Lexeme-instance Read Lexeme-instance Show Lexeme-lexP :: ReadPrec Lexeme-parens :: ReadPrec a -> ReadPrec a-readListDefault :: Read a => ReadS [a]-readListPrecDefault :: Read a => ReadPrec [a]--module Prelude-data Bool-False :: Bool-True :: Bool-instance Bounded Bool-instance Data Bool-instance Enum Bool-instance Eq Bool-instance Ix Bool-instance Ord Bool-instance Read Bool-instance Show Bool-instance Storable Bool-instance Typeable Bool-(&&) :: Bool -> Bool -> Bool-(||) :: Bool -> Bool -> Bool-not :: Bool -> Bool-otherwise :: Bool-data Maybe a-Nothing :: Maybe a-Just :: a -> Maybe a-instance Alternative Maybe-instance Applicative Maybe-instance Foldable Maybe-instance Functor Maybe-instance Monad Maybe-instance MonadFix Maybe-instance MonadPlus Maybe-instance Traversable Maybe-instance Typeable1 Maybe-instance Data a => Data (Maybe a)-instance Eq a => Eq (Maybe a)-instance Monoid a => Monoid (Maybe a)-instance Ord a => Ord (Maybe a)-instance Read a => Read (Maybe a)-instance Show a => Show (Maybe a)-maybe :: b -> (a -> b) -> Maybe a -> b-data Either a b-Left :: a -> Either a b-Right :: b -> Either a b-instance Typeable2 Either-instance Functor (Either a)-instance (Data a, Data b) => Data (Either a b)-instance (Eq a, Eq b) => Eq (Either a b)-instance (Ord a, Ord b) => Ord (Either a b)-instance (Read a, Read b) => Read (Either a b)-instance (Show a, Show b) => Show (Either a b)-either :: (a -> c) -> (b -> c) -> Either a b -> c-data Ordering-LT :: Ordering-EQ :: Ordering-instance Bounded Ordering-instance Data Ordering-instance Enum Ordering-instance Eq Ordering-instance Ix Ordering-instance Monoid Ordering-instance Ord Ordering-instance Read Ordering-instance Show Ordering-instance Typeable Ordering-data Char-instance Bounded Char-instance Data Char-instance Enum Char-instance Eq Char-instance IsChar Char-instance Ix Char-instance Ord Char-instance PrintfArg Char-instance Read Char-instance Show Char-instance Storable Char-instance Typeable Char-instance IsString [Char]-type String = [Char]-fst :: (a, b) -> a-snd :: (a, b) -> b-curry :: ((a, b) -> c) -> a -> b -> c-uncurry :: (a -> b -> c) -> (a, b) -> c-class Eq a-(==) :: Eq a => a -> a -> Bool-(/=) :: Eq a => a -> a -> Bool-instance Eq All-instance Eq Any-instance Eq ArithException-instance Eq ArrayException-instance Eq AsyncException-instance Eq Bool-instance Eq BufferMode-instance Eq BufferState-instance Eq CChar-instance Eq CClock-instance Eq CDouble-instance Eq CFloat-instance Eq CInt-instance Eq CIntMax-instance Eq CIntPtr-instance Eq CLDouble-instance Eq CLLong-instance Eq CLong-instance Eq CPtrdiff-instance Eq CSChar-instance Eq CShort-instance Eq CSigAtomic-instance Eq CSize-instance Eq CTime-instance Eq CUChar-instance Eq CUInt-instance Eq CUIntMax-instance Eq CUIntPtr-instance Eq CULLong-instance Eq CULong-instance Eq CUShort-instance Eq CWchar-instance Eq Char-instance Eq ConsoleEvent-instance Eq Constr-instance Eq ConstrRep-instance Eq DataRep-instance Eq Double-instance Eq Errno-instance Eq Exception-instance Eq ExitCode-instance Eq FDType-instance Eq Fd-instance Eq Fixity-instance Eq Float-instance Eq GeneralCategory-instance Eq Handle-instance Eq HandlePosn-instance Eq HashData-instance Eq IOErrorType-instance Eq IOException-instance Eq IOMode-instance Eq Inserts-instance Eq Int-instance Eq Int16-instance Eq Int32-instance Eq Int64-instance Eq Int8-instance Eq IntPtr-instance Eq Integer-instance Eq Key-instance Eq KeyPr-instance Eq Lexeme-instance Eq Ordering-instance Eq SeekMode-instance Eq ThreadId-instance Eq Timeout-instance Eq TyCon-instance Eq TypeRep-instance Eq Unique-instance Eq Version-instance Eq Word-instance Eq Word16-instance Eq Word32-instance Eq Word64-instance Eq Word8-instance Eq WordPtr-instance Eq ()-instance (Eq a, Eq b) => Eq (a, b)-instance (Eq a, Eq b, Eq c) => Eq (a, b, c)-instance (Eq a, Eq b, Eq c, Eq d) => Eq (a, b, c, d)-instance (Eq a, Eq b, Eq c, Eq d, Eq e) => Eq (a, b, c, d, e)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f) => Eq (a, b, c, d, e, f)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g) => Eq (a, b, c, d, e, f, g)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h) => Eq (a, b, c, d, e, f, g, h)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i) => Eq (a, b, c, d, e, f, g, h, i)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j) => Eq (a, b, c, d, e, f, g, h, i, j)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k) => Eq (a, b, c, d, e, f, g, h, i, j, k)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l) => Eq (a, b, c, d, e, f, g, h, i, j, k, l)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n)-instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)-instance (RealFloat a, Eq a) => Eq (Complex a)-instance Eq a => Eq (Dual a)-instance Eq a => Eq (First a)-instance Eq (Fixed a)-instance Eq (ForeignPtr a)-instance Eq (FunPtr a)-instance Eq (IORef a)-instance Eq a => Eq (Last a)-instance Eq (MVar a)-instance Eq a => Eq (Maybe a)-instance Eq a => Eq (Product a)-instance Eq (Ptr a)-instance (Integral a, Eq a) => Eq (Ratio a)-instance Eq (StableName a)-instance Eq (StablePtr a)-instance Eq a => Eq (Sum a)-instance Eq (TVar a)-instance Eq a => Eq [a]-instance (Ix i, Eq e) => Eq (Array i e)-instance (Eq a, Eq b) => Eq (Either a b)-instance Eq (IOArray i e)-instance Eq (STRef s a)-instance Eq (STArray s i e)-class Eq a => Ord a-compare :: Ord a => a -> a -> Ordering-(<) :: Ord a => a -> a -> Bool-(<=) :: Ord a => a -> a -> Bool-(>) :: Ord a => a -> a -> Bool-(>=) :: Ord a => a -> a -> Bool-max :: Ord a => a -> a -> a-min :: Ord a => a -> a -> a-instance Ord All-instance Ord Any-instance Ord ArithException-instance Ord ArrayException-instance Ord AsyncException-instance Ord Bool-instance Ord BufferMode-instance Ord CChar-instance Ord CClock-instance Ord CDouble-instance Ord CFloat-instance Ord CInt-instance Ord CIntMax-instance Ord CIntPtr-instance Ord CLDouble-instance Ord CLLong-instance Ord CLong-instance Ord CPtrdiff-instance Ord CSChar-instance Ord CShort-instance Ord CSigAtomic-instance Ord CSize-instance Ord CTime-instance Ord CUChar-instance Ord CUInt-instance Ord CUIntMax-instance Ord CUIntPtr-instance Ord CULLong-instance Ord CULong-instance Ord CUShort-instance Ord CWchar-instance Ord Char-instance Ord ConsoleEvent-instance Ord Double-instance Ord ExitCode-instance Ord Fd-instance Ord Float-instance Ord GeneralCategory-instance Ord IOMode-instance Ord Int-instance Ord Int16-instance Ord Int32-instance Ord Int64-instance Ord Int8-instance Ord IntPtr-instance Ord Integer-instance Ord Ordering-instance Ord SeekMode-instance Ord ThreadId-instance Ord Unique-instance Ord Version-instance Ord Word-instance Ord Word16-instance Ord Word32-instance Ord Word64-instance Ord Word8-instance Ord WordPtr-instance Ord ()-instance (Ord a, Ord b) => Ord (a, b)-instance (Ord a, Ord b, Ord c) => Ord (a, b, c)-instance (Ord a, Ord b, Ord c, Ord d) => Ord (a, b, c, d)-instance (Ord a, Ord b, Ord c, Ord d, Ord e) => Ord (a, b, c, d, e)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f) => Ord (a, b, c, d, e, f)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g) => Ord (a, b, c, d, e, f, g)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h) => Ord (a, b, c, d, e, f, g, h)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i) => Ord (a, b, c, d, e, f, g, h, i)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j) => Ord (a, b, c, d, e, f, g, h, i, j)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k) => Ord (a, b, c, d, e, f, g, h, i, j, k)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l) => Ord (a, b, c, d, e, f, g, h, i, j, k, l)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m, Ord n) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n)-instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m, Ord n, Ord o) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)-instance Ord a => Ord (Dual a)-instance Ord a => Ord (First a)-instance Ord (Fixed a)-instance Ord (ForeignPtr a)-instance Ord (FunPtr a)-instance Ord a => Ord (Last a)-instance Ord a => Ord (Maybe a)-instance Ord a => Ord (Product a)-instance Ord (Ptr a)-instance Integral a => Ord (Ratio a)-instance Ord a => Ord (Sum a)-instance Ord a => Ord [a]-instance (Ix i, Ord e) => Ord (Array i e)-instance (Ord a, Ord b) => Ord (Either a b)-class Enum a-succ :: Enum a => a -> a-pred :: Enum a => a -> a-toEnum :: Enum a => Int -> a-fromEnum :: Enum a => a -> Int-enumFrom :: Enum a => a -> [a]-enumFromThen :: Enum a => a -> a -> [a]-enumFromTo :: Enum a => a -> a -> [a]-enumFromThenTo :: Enum a => a -> a -> a -> [a]-instance Enum Bool-instance Enum CChar-instance Enum CClock-instance Enum CDouble-instance Enum CFloat-instance Enum CInt-instance Enum CIntMax-instance Enum CIntPtr-instance Enum CLDouble-instance Enum CLLong-instance Enum CLong-instance Enum CPtrdiff-instance Enum CSChar-instance Enum CShort-instance Enum CSigAtomic-instance Enum CSize-instance Enum CTime-instance Enum CUChar-instance Enum CUInt-instance Enum CUIntMax-instance Enum CUIntPtr-instance Enum CULLong-instance Enum CULong-instance Enum CUShort-instance Enum CWchar-instance Enum Char-instance Enum ConsoleEvent-instance Enum Double-instance Enum Fd-instance Enum Float-instance Enum GeneralCategory-instance Enum IOMode-instance Enum Int-instance Enum Int16-instance Enum Int32-instance Enum Int64-instance Enum Int8-instance Enum IntPtr-instance Enum Integer-instance Enum Ordering-instance Enum SeekMode-instance Enum Word-instance Enum Word16-instance Enum Word32-instance Enum Word64-instance Enum Word8-instance Enum WordPtr-instance Enum ()-instance Enum (Fixed a)-instance Integral a => Enum (Ratio a)-class Bounded a-minBound :: Bounded a => a-maxBound :: Bounded a => a-instance Bounded All-instance Bounded Any-instance Bounded Bool-instance Bounded CChar-instance Bounded CInt-instance Bounded CIntMax-instance Bounded CIntPtr-instance Bounded CLLong-instance Bounded CLong-instance Bounded CPtrdiff-instance Bounded CSChar-instance Bounded CShort-instance Bounded CSigAtomic-instance Bounded CSize-instance Bounded CUChar-instance Bounded CUInt-instance Bounded CUIntMax-instance Bounded CUIntPtr-instance Bounded CULLong-instance Bounded CULong-instance Bounded CUShort-instance Bounded CWchar-instance Bounded Char-instance Bounded Fd-instance Bounded GeneralCategory-instance Bounded Int-instance Bounded Int16-instance Bounded Int32-instance Bounded Int64-instance Bounded Int8-instance Bounded IntPtr-instance Bounded Ordering-instance Bounded Word-instance Bounded Word16-instance Bounded Word32-instance Bounded Word64-instance Bounded Word8-instance Bounded WordPtr-instance Bounded ()-instance (Bounded a, Bounded b) => Bounded (a, b)-instance (Bounded a, Bounded b, Bounded c) => Bounded (a, b, c)-instance (Bounded a, Bounded b, Bounded c, Bounded d) => Bounded (a, b, c, d)-instance (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e) => Bounded (a, b, c, d, e)-instance (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f) => Bounded (a, b, c, d, e, f)-instance (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g) => Bounded (a, b, c, d, e, f, g)-instance (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h) => Bounded (a, b, c, d, e, f, g, h)-instance (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i) => Bounded (a, b, c, d, e, f, g, h, i)-instance (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i, Bounded j) => Bounded (a, b, c, d, e, f, g, h, i, j)-instance (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i, Bounded j, Bounded k) => Bounded (a, b, c, d, e, f, g, h, i, j, k)-instance (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i, Bounded j, Bounded k, Bounded l) => Bounded (a, b, c, d, e, f, g, h, i, j, k, l)-instance (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i, Bounded j, Bounded k, Bounded l, Bounded m) => Bounded (a, b, c, d, e, f, g, h, i, j, k, l, m)-instance (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i, Bounded j, Bounded k, Bounded l, Bounded m, Bounded n) => Bounded (a, b, c, d, e, f, g, h, i, j, k, l, m, n)-instance (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i, Bounded j, Bounded k, Bounded l, Bounded m, Bounded n, Bounded o) => Bounded (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)-instance Bounded a => Bounded (Dual a)-instance Bounded a => Bounded (Product a)-instance Bounded a => Bounded (Sum a)-data Int-instance Bits Int-instance Bounded Int-instance Data Int-instance Enum Int-instance Eq Int-instance Integral Int-instance Ix Int-instance Num Int-instance Ord Int-instance PrintfArg Int-instance Read Int-instance Real Int-instance Show Int-instance Storable Int-instance Typeable Int-data Integer-instance Bits Integer-instance Data Integer-instance Enum Integer-instance Eq Integer-instance Integral Integer-instance Ix Integer-instance Num Integer-instance Ord Integer-instance PrintfArg Integer-instance Read Integer-instance Real Integer-instance Show Integer-instance Typeable Integer-data Float-instance Data Float-instance Enum Float-instance Eq Float-instance Floating Float-instance Fractional Float-instance Num Float-instance Ord Float-instance PrintfArg Float-instance Read Float-instance Real Float-instance RealFloat Float-instance RealFrac Float-instance Show Float-instance Storable Float-instance Typeable Float-data Double-instance Data Double-instance Enum Double-instance Eq Double-instance Floating Double-instance Fractional Double-instance Num Double-instance Ord Double-instance PrintfArg Double-instance Read Double-instance Real Double-instance RealFloat Double-instance RealFrac Double-instance Show Double-instance Storable Double-instance Typeable Double-type Rational = Ratio Integer-class (Eq a, Show a) => Num a-(+) :: Num a => a -> a -> a-(-) :: Num a => a -> a -> a-(*) :: Num a => a -> a -> a-negate :: Num a => a -> a-abs :: Num a => a -> a-signum :: Num a => a -> a-fromInteger :: Num a => Integer -> a-instance Num CChar-instance Num CClock-instance Num CDouble-instance Num CFloat-instance Num CInt-instance Num CIntMax-instance Num CIntPtr-instance Num CLDouble-instance Num CLLong-instance Num CLong-instance Num CPtrdiff-instance Num CSChar-instance Num CShort-instance Num CSigAtomic-instance Num CSize-instance Num CTime-instance Num CUChar-instance Num CUInt-instance Num CUIntMax-instance Num CUIntPtr-instance Num CULLong-instance Num CULong-instance Num CUShort-instance Num CWchar-instance Num Double-instance Num Fd-instance Num Float-instance Num Int-instance Num Int16-instance Num Int32-instance Num Int64-instance Num Int8-instance Num IntPtr-instance Num Integer-instance Num Word-instance Num Word16-instance Num Word32-instance Num Word64-instance Num Word8-instance Num WordPtr-instance RealFloat a => Num (Complex a)-instance HasResolution a => Num (Fixed a)-instance Integral a => Num (Ratio a)-class (Num a, Ord a) => Real a-toRational :: Real a => a -> Rational-instance Real CChar-instance Real CClock-instance Real CDouble-instance Real CFloat-instance Real CInt-instance Real CIntMax-instance Real CIntPtr-instance Real CLDouble-instance Real CLLong-instance Real CLong-instance Real CPtrdiff-instance Real CSChar-instance Real CShort-instance Real CSigAtomic-instance Real CSize-instance Real CTime-instance Real CUChar-instance Real CUInt-instance Real CUIntMax-instance Real CUIntPtr-instance Real CULLong-instance Real CULong-instance Real CUShort-instance Real CWchar-instance Real Double-instance Real Fd-instance Real Float-instance Real Int-instance Real Int16-instance Real Int32-instance Real Int64-instance Real Int8-instance Real IntPtr-instance Real Integer-instance Real Word-instance Real Word16-instance Real Word32-instance Real Word64-instance Real Word8-instance Real WordPtr-instance HasResolution a => Real (Fixed a)-instance Integral a => Real (Ratio a)-class (Real a, Enum a) => Integral a-quot :: Integral a => a -> a -> a-rem :: Integral a => a -> a -> a-div :: Integral a => a -> a -> a-mod :: Integral a => a -> a -> a-quotRem :: Integral a => a -> a -> (a, a)-divMod :: Integral a => a -> a -> (a, a)-toInteger :: Integral a => a -> Integer-instance Integral CChar-instance Integral CInt-instance Integral CIntMax-instance Integral CIntPtr-instance Integral CLLong-instance Integral CLong-instance Integral CPtrdiff-instance Integral CSChar-instance Integral CShort-instance Integral CSigAtomic-instance Integral CSize-instance Integral CUChar-instance Integral CUInt-instance Integral CUIntMax-instance Integral CUIntPtr-instance Integral CULLong-instance Integral CULong-instance Integral CUShort-instance Integral CWchar-instance Integral Fd-instance Integral Int-instance Integral Int16-instance Integral Int32-instance Integral Int64-instance Integral Int8-instance Integral IntPtr-instance Integral Integer-instance Integral Word-instance Integral Word16-instance Integral Word32-instance Integral Word64-instance Integral Word8-instance Integral WordPtr-class Num a => Fractional a-(/) :: Fractional a => a -> a -> a-recip :: Fractional a => a -> a-fromRational :: Fractional a => Rational -> a-instance Fractional CDouble-instance Fractional CFloat-instance Fractional CLDouble-instance Fractional Double-instance Fractional Float-instance RealFloat a => Fractional (Complex a)-instance HasResolution a => Fractional (Fixed a)-instance Integral a => Fractional (Ratio a)-class Fractional a => Floating a-pi :: Floating a => a-exp :: Floating a => a -> a-log :: Floating a => a -> a-sqrt :: Floating a => a -> a-(**) :: Floating a => a -> a -> a-logBase :: Floating a => a -> a -> a-sin :: Floating a => a -> a-cos :: Floating a => a -> a-tan :: Floating a => a -> a-asin :: Floating a => a -> a-acos :: Floating a => a -> a-atan :: Floating a => a -> a-sinh :: Floating a => a -> a-cosh :: Floating a => a -> a-tanh :: Floating a => a -> a-asinh :: Floating a => a -> a-acosh :: Floating a => a -> a-atanh :: Floating a => a -> a-instance Floating CDouble-instance Floating CFloat-instance Floating CLDouble-instance Floating Double-instance Floating Float-instance RealFloat a => Floating (Complex a)-class (Real a, Fractional a) => RealFrac a-properFraction :: (RealFrac a, Integral b) => a -> (b, a)-truncate :: (RealFrac a, Integral b) => a -> b-round :: (RealFrac a, Integral b) => a -> b-ceiling :: (RealFrac a, Integral b) => a -> b-floor :: (RealFrac a, Integral b) => a -> b-instance RealFrac CDouble-instance RealFrac CFloat-instance RealFrac CLDouble-instance RealFrac Double-instance RealFrac Float-instance HasResolution a => RealFrac (Fixed a)-instance Integral a => RealFrac (Ratio a)-class (RealFrac a, Floating a) => RealFloat a-floatRadix :: RealFloat a => a -> Integer-floatDigits :: RealFloat a => a -> Int-floatRange :: RealFloat a => a -> (Int, Int)-decodeFloat :: RealFloat a => a -> (Integer, Int)-encodeFloat :: RealFloat a => Integer -> Int -> a-exponent :: RealFloat a => a -> Int-significand :: RealFloat a => a -> a-scaleFloat :: RealFloat a => Int -> a -> a-isNaN :: RealFloat a => a -> Bool-isInfinite :: RealFloat a => a -> Bool-isDenormalized :: RealFloat a => a -> Bool-isNegativeZero :: RealFloat a => a -> Bool-isIEEE :: RealFloat a => a -> Bool-atan2 :: RealFloat a => a -> a -> a-instance RealFloat CDouble-instance RealFloat CFloat-instance RealFloat CLDouble-instance RealFloat Double-instance RealFloat Float-subtract :: Num a => a -> a -> a-even :: Integral a => a -> Bool-odd :: Integral a => a -> Bool-gcd :: Integral a => a -> a -> a-lcm :: Integral a => a -> a -> a-(^) :: (Num a, Integral b) => a -> b -> a-(^^) :: (Fractional a, Integral b) => a -> b -> a-fromIntegral :: (Integral a, Num b) => a -> b-realToFrac :: (Real a, Fractional b) => a -> b-class Monad m-(>>=) :: Monad m => m a -> (a -> m b) -> m b-(>>) :: Monad m => m a -> m b -> m b-return :: Monad m => a -> m a-fail :: Monad m => String -> m a-instance Monad IO-instance Monad Maybe-instance Monad P-instance Monad ReadP-instance Monad ReadPrec-instance Monad STM-instance Monad []-instance ArrowApply a => Monad (ArrowMonad a)-instance Monad (ST s)-instance Monad (ST s)-instance Monad ((->) r)-class Functor f-fmap :: Functor f => (a -> b) -> f a -> f b-instance Functor IO-instance Functor Id-instance Functor Maybe-instance Functor ReadP-instance Functor ReadPrec-instance Functor STM-instance Functor ZipList-instance Functor []-instance Ix i => Functor (Array i)-instance Functor (Const m)-instance Functor (Either a)-instance Functor (ST s)-instance Functor (ST s)-instance Monad m => Functor (WrappedMonad m)-instance Functor ((,) a)-instance Functor ((->) r)-instance Arrow a => Functor (WrappedArrow a b)-mapM :: Monad m => (a -> m b) -> [a] -> m [b]-mapM_ :: Monad m => (a -> m b) -> [a] -> m ()-sequence :: Monad m => [m a] -> m [a]-sequence_ :: Monad m => [m a] -> m ()-(=<<) :: Monad m => (a -> m b) -> m a -> m b-id :: a -> a-const :: a -> b -> a-(.) :: (b -> c) -> (a -> b) -> a -> c-flip :: (a -> b -> c) -> b -> a -> c-($) :: (a -> b) -> a -> b-until :: (a -> Bool) -> (a -> a) -> a -> a-asTypeOf :: a -> a -> a-error :: String -> a-undefined :: a-seq :: a -> b -> b-($!) :: (a -> b) -> a -> b-map :: (a -> b) -> [a] -> [b]-(++) :: [a] -> [a] -> [a]-filter :: (a -> Bool) -> [a] -> [a]-head :: [a] -> a-last :: [a] -> a-tail :: [a] -> [a]-init :: [a] -> [a]-null :: [a] -> Bool-length :: [a] -> Int-(!!) :: [a] -> Int -> a-reverse :: [a] -> [a]-foldl :: (a -> b -> a) -> a -> [b] -> a-foldl1 :: (a -> a -> a) -> [a] -> a-foldr :: (a -> b -> b) -> b -> [a] -> b-foldr1 :: (a -> a -> a) -> [a] -> a-and :: [Bool] -> Bool-or :: [Bool] -> Bool-any :: (a -> Bool) -> [a] -> Bool-all :: (a -> Bool) -> [a] -> Bool-sum :: Num a => [a] -> a-product :: Num a => [a] -> a-concat :: [[a]] -> [a]-concatMap :: (a -> [b]) -> [a] -> [b]-maximum :: Ord a => [a] -> a-minimum :: Ord a => [a] -> a-scanl :: (a -> b -> a) -> a -> [b] -> [a]-scanl1 :: (a -> a -> a) -> [a] -> [a]-scanr :: (a -> b -> b) -> b -> [a] -> [b]-scanr1 :: (a -> a -> a) -> [a] -> [a]-iterate :: (a -> a) -> a -> [a]-repeat :: a -> [a]-replicate :: Int -> a -> [a]-cycle :: [a] -> [a]-take :: Int -> [a] -> [a]-drop :: Int -> [a] -> [a]-splitAt :: Int -> [a] -> ([a], [a])-takeWhile :: (a -> Bool) -> [a] -> [a]-dropWhile :: (a -> Bool) -> [a] -> [a]-span :: (a -> Bool) -> [a] -> ([a], [a])-break :: (a -> Bool) -> [a] -> ([a], [a])-elem :: Eq a => a -> [a] -> Bool-notElem :: Eq a => a -> [a] -> Bool-lookup :: Eq a => a -> [(a, b)] -> Maybe b-zip :: [a] -> [b] -> [(a, b)]-zip3 :: [a] -> [b] -> [c] -> [(a, b, c)]-zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]-zipWith3 :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]-unzip :: [(a, b)] -> ([a], [b])-unzip3 :: [(a, b, c)] -> ([a], [b], [c])-lines :: String -> [String]-words :: String -> [String]-unlines :: [String] -> String-unwords :: [String] -> String-type ShowS = String -> String-class Show a-showsPrec :: Show a => Int -> a -> ShowS-show :: Show a => a -> String-showList :: Show a => [a] -> ShowS-instance Show All-instance Show Any-instance Show ArithException-instance Show ArrayException-instance Show AsyncException-instance Show Bool-instance Show BufferMode-instance Show CChar-instance Show CClock-instance Show CDouble-instance Show CFloat-instance Show CInt-instance Show CIntMax-instance Show CIntPtr-instance Show CLDouble-instance Show CLLong-instance Show CLong-instance Show CPtrdiff-instance Show CSChar-instance Show CShort-instance Show CSigAtomic-instance Show CSize-instance Show CTime-instance Show CUChar-instance Show CUInt-instance Show CUIntMax-instance Show CUIntPtr-instance Show CULLong-instance Show CULong-instance Show CUShort-instance Show CWchar-instance Show Char-instance Show ConsoleEvent-instance Show Constr-instance Show ConstrRep-instance Show DataRep-instance Show DataType-instance Show Double-instance Show Dynamic-instance Show Exception-instance Show ExitCode-instance Show Fd-instance Show Fixity-instance Show Float-instance Show GeneralCategory-instance Show Handle-instance Show HandlePosn-instance Show HandleType-instance Show HashData-instance Show IOErrorType-instance Show IOException-instance Show IOMode-instance Show Int-instance Show Int16-instance Show Int32-instance Show Int64-instance Show Int8-instance Show IntPtr-instance Show Integer-instance Show Lexeme-instance Show Ordering-instance Show SeekMode-instance Show ThreadId-instance Show TyCon-instance Show TypeRep-instance Show Version-instance Show Word-instance Show Word16-instance Show Word32-instance Show Word64-instance Show Word8-instance Show WordPtr-instance Show ()-instance (Show a, Show b) => Show (a, b)-instance (Show a, Show b, Show c) => Show (a, b, c)-instance (Show a, Show b, Show c, Show d) => Show (a, b, c, d)-instance (Show a, Show b, Show c, Show d, Show e) => Show (a, b, c, d, e)-instance (Show a, Show b, Show c, Show d, Show e, Show f) => Show (a, b, c, d, e, f)-instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g) => Show (a, b, c, d, e, f, g)-instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h) => Show (a, b, c, d, e, f, g, h)-instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i) => Show (a, b, c, d, e, f, g, h, i)-instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j) => Show (a, b, c, d, e, f, g, h, i, j)-instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k) => Show (a, b, c, d, e, f, g, h, i, j, k)-instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l) => Show (a, b, c, d, e, f, g, h, i, j, k, l)-instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m)-instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m, n)-instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)-instance Show (a -> b)-instance (RealFloat a, Show a) => Show (Complex a)-instance Show a => Show (Dual a)-instance Show a => Show (First a)-instance HasResolution a => Show (Fixed a)-instance Show (ForeignPtr a)-instance Show (FunPtr a)-instance Show a => Show (Last a)-instance Show a => Show (Maybe a)-instance Show a => Show (Product a)-instance Show (Ptr a)-instance Integral a => Show (Ratio a)-instance Show a => Show (Sum a)-instance Show a => Show [a]-instance (Ix a, Show a, Show b) => Show (Array a b)-instance (Show a, Show b) => Show (Either a b)-instance Show (ST s a)-shows :: Show a => a -> ShowS-showChar :: Char -> ShowS-showString :: String -> ShowS-showParen :: Bool -> ShowS -> ShowS-type ReadS a = String -> [(a, String)]-class Read a-readsPrec :: Read a => Int -> ReadS a-readList :: Read a => ReadS [a]-instance Read All-instance Read Any-instance Read Bool-instance Read BufferMode-instance Read CChar-instance Read CClock-instance Read CDouble-instance Read CFloat-instance Read CInt-instance Read CIntMax-instance Read CIntPtr-instance Read CLDouble-instance Read CLLong-instance Read CLong-instance Read CPtrdiff-instance Read CSChar-instance Read CShort-instance Read CSigAtomic-instance Read CSize-instance Read CTime-instance Read CUChar-instance Read CUInt-instance Read CUIntMax-instance Read CUIntPtr-instance Read CULLong-instance Read CULong-instance Read CUShort-instance Read CWchar-instance Read Char-instance Read ConsoleEvent-instance Read Double-instance Read ExitCode-instance Read Fd-instance Read Float-instance Read GeneralCategory-instance Read IOMode-instance Read Int-instance Read Int16-instance Read Int32-instance Read Int64-instance Read Int8-instance Read IntPtr-instance Read Integer-instance Read Lexeme-instance Read Ordering-instance Read SeekMode-instance Read Version-instance Read Word-instance Read Word16-instance Read Word32-instance Read Word64-instance Read Word8-instance Read WordPtr-instance Read ()-instance (Read a, Read b) => Read (a, b)-instance (Read a, Read b, Read c) => Read (a, b, c)-instance (Read a, Read b, Read c, Read d) => Read (a, b, c, d)-instance (Read a, Read b, Read c, Read d, Read e) => Read (a, b, c, d, e)-instance (Read a, Read b, Read c, Read d, Read e, Read f) => Read (a, b, c, d, e, f)-instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g) => Read (a, b, c, d, e, f, g)-instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h) => Read (a, b, c, d, e, f, g, h)-instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i) => Read (a, b, c, d, e, f, g, h, i)-instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j) => Read (a, b, c, d, e, f, g, h, i, j)-instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k) => Read (a, b, c, d, e, f, g, h, i, j, k)-instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l) => Read (a, b, c, d, e, f, g, h, i, j, k, l)-instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l, Read m) => Read (a, b, c, d, e, f, g, h, i, j, k, l, m)-instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l, Read m, Read n) => Read (a, b, c, d, e, f, g, h, i, j, k, l, m, n)-instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l, Read m, Read n, Read o) => Read (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)-instance (RealFloat a, Read a) => Read (Complex a)-instance Read a => Read (Dual a)-instance Read a => Read (First a)-instance Read a => Read (Last a)-instance Read a => Read (Maybe a)-instance Read a => Read (Product a)-instance (Integral a, Read a) => Read (Ratio a)-instance Read a => Read (Sum a)-instance Read a => Read [a]-instance (Ix a, Read a, Read b) => Read (Array a b)-instance (Read a, Read b) => Read (Either a b)-reads :: Read a => ReadS a-readParen :: Bool -> ReadS a -> ReadS a-read :: Read a => String -> a-lex :: ReadS String-data IO a-instance Applicative IO-instance Functor IO-instance Monad IO-instance MonadFix IO-instance Typeable1 IO-instance Typeable a => Data (IO a)-instance HPrintfType (IO a)-instance PrintfType (IO a)-putChar :: Char -> IO ()-putStr :: String -> IO ()-putStrLn :: String -> IO ()-print :: Show a => a -> IO ()-getChar :: IO Char-getLine :: IO String-getContents :: IO String-interact :: (String -> String) -> IO ()-type FilePath = String-readFile :: FilePath -> IO String-writeFile :: FilePath -> String -> IO ()-appendFile :: FilePath -> String -> IO ()-readIO :: Read a => String -> IO a-readLn :: Read a => IO a-type IOError = IOException-ioError :: IOError -> IO a-userError :: String -> IOError-catch :: IO a -> (IOError -> IO a) -> IO a--module Control.Monad.Instances-class Functor f-fmap :: Functor f => (a -> b) -> f a -> f b-instance Functor IO-instance Functor Id-instance Functor Maybe-instance Functor ReadP-instance Functor ReadPrec-instance Functor STM-instance Functor ZipList-instance Functor []-instance Ix i => Functor (Array i)-instance Functor (Const m)-instance Functor (Either a)-instance Functor (ST s)-instance Functor (ST s)-instance Monad m => Functor (WrappedMonad m)-instance Functor ((,) a)-instance Functor ((->) r)-instance Arrow a => Functor (WrappedArrow a b)-class Monad m-(>>=) :: Monad m => m a -> (a -> m b) -> m b-(>>) :: Monad m => m a -> m b -> m b-return :: Monad m => a -> m a-fail :: Monad m => String -> m a-instance Monad IO-instance Monad Maybe-instance Monad P-instance Monad ReadP-instance Monad ReadPrec-instance Monad STM-instance Monad []-instance ArrowApply a => Monad (ArrowMonad a)-instance Monad (ST s)-instance Monad (ST s)-instance Monad ((->) r)--module Data.Fixed-div' :: (Real a, Integral b) => a -> a -> b-mod' :: Real a => a -> a -> a-divMod' :: (Real a, Integral b) => a -> a -> (b, a)-data Fixed a-instance Enum (Fixed a)-instance Eq (Fixed a)-instance HasResolution a => Fractional (Fixed a)-instance HasResolution a => Num (Fixed a)-instance Ord (Fixed a)-instance HasResolution a => Real (Fixed a)-instance HasResolution a => RealFrac (Fixed a)-instance HasResolution a => Show (Fixed a)-class HasResolution a-resolution :: HasResolution a => a -> Integer-instance HasResolution E12-instance HasResolution E6-showFixed :: HasResolution a => Bool -> Fixed a -> String-data E6-instance HasResolution E6-type Micro = Fixed E6-data E12-instance HasResolution E12-type Pico = Fixed E12--module Data.Function-id :: a -> a-const :: a -> b -> a-(.) :: (b -> c) -> (a -> b) -> a -> c-flip :: (a -> b -> c) -> b -> a -> c-($) :: (a -> b) -> a -> b-fix :: (a -> a) -> a-on :: (b -> b -> c) -> (a -> b) -> a -> a -> c--module Control.Monad.Fix-class Monad m => MonadFix m-mfix :: MonadFix m => (a -> m a) -> m a-instance MonadFix IO-instance MonadFix Maybe-instance MonadFix []-instance MonadFix (ST s)-instance MonadFix (ST s)-instance MonadFix ((->) r)-fix :: (a -> a) -> a--module Control.Monad.ST-data ST s a-instance Typeable2 ST-instance Functor (ST s)-instance Monad (ST s)-instance MonadFix (ST s)-instance (Typeable s, Typeable a) => Data (ST s a)-instance Show (ST s a)-runST :: ST s a -> a-fixST :: (a -> ST s a) -> ST s a-data RealWorld-instance Typeable RealWorld-stToIO :: ST RealWorld a -> IO a-unsafeInterleaveST :: ST s a -> ST s a-unsafeIOToST :: IO a -> ST s a-unsafeSTToIO :: ST s a -> IO a--module Control.Monad.ST.Strict--module Control.Monad.ST.Lazy-data ST s a-instance Functor (ST s)-instance Monad (ST s)-instance MonadFix (ST s)-runST :: ST s a -> a-fixST :: (a -> ST s a) -> ST s a-strictToLazyST :: ST s a -> ST s a-lazyToStrictST :: ST s a -> ST s a-data RealWorld-instance Typeable RealWorld-stToIO :: ST RealWorld a -> IO a-unsafeInterleaveST :: ST s a -> ST s a-unsafeIOToST :: IO a -> ST s a--module Data.Generics.Basics-class Typeable a => Data a-gfoldl :: Data a => (c (a -> b) -> a -> c b) -> (g -> c g) -> a -> c a-gunfold :: Data a => (c (b -> r) -> c r) -> (r -> c r) -> Constr -> c a-toConstr :: Data a => a -> Constr-dataTypeOf :: Data a => a -> DataType-dataCast1 :: (Data a, Typeable1 t) => c (t a) -> Maybe (c a)-dataCast2 :: (Data a, Typeable2 t) => c (t a b) -> Maybe (c a)-gmapT :: Data a => (b -> b) -> a -> a-gmapQl :: Data a => (r -> r' -> r) -> r -> (a -> r') -> a -> r-gmapQr :: Data a => (r' -> r -> r) -> r -> (a -> r') -> a -> r-gmapQ :: Data a => (a -> u) -> a -> [u]-gmapQi :: Data a => Int -> (a -> u) -> a -> u-gmapM :: (Data a, Monad m) => (a -> m a) -> a -> m a-gmapMp :: (Data a, MonadPlus m) => (a -> m a) -> a -> m a-gmapMo :: (Data a, MonadPlus m) => (a -> m a) -> a -> m a-instance Data Bool-instance Data Char-instance Data DataType-instance Data Double-instance Data Float-instance Data Handle-instance Data Int-instance Data Int16-instance Data Int32-instance Data Int64-instance Data Int8-instance Data Integer-instance Data Ordering-instance Data ThreadId-instance Data TyCon-instance Data TypeRep-instance Data Word-instance Data Word16-instance Data Word32-instance Data Word64-instance Data Word8-instance Data ()-instance (Data a, Data b) => Data (a, b)-instance (Data a, Data b, Data c) => Data (a, b, c)-instance (Data a, Data b, Data c, Data d) => Data (a, b, c, d)-instance (Data a, Data b, Data c, Data d, Data e) => Data (a, b, c, d, e)-instance (Data a, Data b, Data c, Data d, Data e, Data f) => Data (a, b, c, d, e, f)-instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g) => Data (a, b, c, d, e, f, g)-instance (Data a, Data b) => Data (a -> b)-instance (RealFloat a, Data a) => Data (Complex a)-instance Typeable a => Data (ForeignPtr a)-instance Typeable a => Data (IO a)-instance Typeable a => Data (IORef a)-instance Typeable a => Data (MVar a)-instance Data a => Data (Maybe a)-instance Typeable a => Data (Ptr a)-instance (Data a, Integral a) => Data (Ratio a)-instance Typeable a => Data (STM a)-instance Typeable a => Data (StablePtr a)-instance Typeable a => Data (TVar a)-instance Data a => Data [a]-instance (Typeable a, Data b, Ix a) => Data (Array a b)-instance (Data a, Data b) => Data (Either a b)-instance (Typeable s, Typeable a) => Data (ST s a)-data DataType-instance Data DataType-instance Show DataType-instance Typeable DataType-mkDataType :: String -> [Constr] -> DataType-mkIntType :: String -> DataType-mkFloatType :: String -> DataType-mkStringType :: String -> DataType-mkNorepType :: String -> DataType-dataTypeName :: DataType -> String-data DataRep-AlgRep :: [Constr] -> DataRep-IntRep :: DataRep-FloatRep :: DataRep-StringRep :: DataRep-NoRep :: DataRep-instance Eq DataRep-instance Show DataRep-dataTypeRep :: DataType -> DataRep-repConstr :: DataType -> ConstrRep -> Constr-isAlgType :: DataType -> Bool-dataTypeConstrs :: DataType -> [Constr]-indexConstr :: DataType -> ConIndex -> Constr-maxConstrIndex :: DataType -> ConIndex-isNorepType :: DataType -> Bool-data Constr-instance Eq Constr-instance Show Constr-type ConIndex = Int-data Fixity-Prefix :: Fixity-Infix :: Fixity-instance Eq Fixity-instance Show Fixity-mkConstr :: DataType -> String -> [String] -> Fixity -> Constr-mkIntConstr :: DataType -> Integer -> Constr-mkFloatConstr :: DataType -> Double -> Constr-mkStringConstr :: DataType -> String -> Constr-constrType :: Constr -> DataType-data ConstrRep-AlgConstr :: ConIndex -> ConstrRep-IntConstr :: Integer -> ConstrRep-FloatConstr :: Double -> ConstrRep-StringConstr :: String -> ConstrRep-instance Eq ConstrRep-instance Show ConstrRep-constrRep :: Constr -> ConstrRep-constrFields :: Constr -> [String]-constrFixity :: Constr -> Fixity-constrIndex :: Constr -> ConIndex-showConstr :: Constr -> String-readConstr :: DataType -> String -> Maybe Constr-tyconUQname :: String -> String-tyconModule :: String -> String-fromConstr :: Data a => Constr -> a-fromConstrB :: Data a => a -> Constr -> a-fromConstrM :: (Monad m, Data a) => m a -> Constr -> m a--module Data.Complex-data Complex a-(:+) :: a -> a -> Complex a-instance Typeable1 Complex-instance (RealFloat a, Data a) => Data (Complex a)-instance (RealFloat a, Eq a) => Eq (Complex a)-instance RealFloat a => Floating (Complex a)-instance RealFloat a => Fractional (Complex a)-instance RealFloat a => Num (Complex a)-instance (RealFloat a, Read a) => Read (Complex a)-instance (RealFloat a, Show a) => Show (Complex a)-realPart :: RealFloat a => Complex a -> a-imagPart :: RealFloat a => Complex a -> a-mkPolar :: RealFloat a => a -> a -> Complex a-cis :: RealFloat a => a -> Complex a-polar :: RealFloat a => Complex a -> (a, a)-magnitude :: RealFloat a => Complex a -> a-phase :: RealFloat a => Complex a -> a-conjugate :: RealFloat a => Complex a -> Complex a--module Data.Generics.Aliases-mkT :: (Typeable a, Typeable b) => (b -> b) -> a -> a-mkQ :: (Typeable a, Typeable b) => r -> (b -> r) -> a -> r-mkM :: (Monad m, Typeable a, Typeable b) => (b -> m b) -> a -> m a-mkMp :: (MonadPlus m, Typeable a, Typeable b) => (b -> m b) -> a -> m a-mkR :: (MonadPlus m, Typeable a, Typeable b) => m b -> m a-ext0 :: (Typeable a, Typeable b) => c a -> c b -> c a-extT :: (Typeable a, Typeable b) => (a -> a) -> (b -> b) -> a -> a-extQ :: (Typeable a, Typeable b) => (a -> q) -> (b -> q) -> a -> q-extM :: (Monad m, Typeable a, Typeable b) => (a -> m a) -> (b -> m b) -> a -> m a-extMp :: (MonadPlus m, Typeable a, Typeable b) => (a -> m a) -> (b -> m b) -> a -> m a-extB :: (Typeable a, Typeable b) => a -> b -> a-extR :: (Monad m, Typeable a, Typeable b) => m a -> m b -> m a-type GenericT = a -> a-type GenericQ r = a -> r-type GenericM m = a -> m a-type GenericB = a-type GenericR m = m a-type Generic c = a -> c a-data Generic' c-Generic' :: Generic c -> Generic' c-unGeneric' :: Generic' c -> Generic c-newtype GenericT'-unGT :: GenericT' -> (Data a => a -> a)-newtype GenericQ' r-GQ :: GenericQ r -> GenericQ' r-unGQ :: GenericQ' r -> GenericQ r-newtype GenericM' m-unGM :: GenericM' m -> (Data a => a -> m a)-orElse :: Maybe a -> Maybe a -> Maybe a-recoverMp :: MonadPlus m => GenericM m -> GenericM m-recoverQ :: MonadPlus m => r -> GenericQ (m r) -> GenericQ (m r)-choiceMp :: MonadPlus m => GenericM m -> GenericM m -> GenericM m-choiceQ :: MonadPlus m => GenericQ (m r) -> GenericQ (m r) -> GenericQ (m r)-ext1T :: (Data d, Typeable1 t) => (d -> d) -> (t d -> t d) -> d -> d-ext1M :: (Monad m, Data d, Typeable1 t) => (d -> m d) -> (t d -> m (t d)) -> d -> m d-ext1Q :: (Data d, Typeable1 t) => (d -> q) -> (t d -> q) -> d -> q-ext1R :: (Monad m, Data d, Typeable1 t) => m d -> m (t d) -> m d--module Data.Generics.Instances--module Data.Generics.Schemes-everywhere :: (a -> a) -> a -> a-everywhere' :: (a -> a) -> a -> a-everywhereBut :: GenericQ Bool -> GenericT -> GenericT-everywhereM :: Monad m => GenericM m -> GenericM m-somewhere :: MonadPlus m => GenericM m -> GenericM m-everything :: (r -> r -> r) -> GenericQ r -> GenericQ r-listify :: Typeable r => (r -> Bool) -> GenericQ [r]-something :: GenericQ (Maybe u) -> GenericQ (Maybe u)-synthesize :: s -> (t -> s -> s) -> GenericQ (s -> t) -> GenericQ t-gsize :: Data a => a -> Int-glength :: GenericQ Int-gdepth :: GenericQ Int-gcount :: GenericQ Bool -> GenericQ Int-gnodecount :: GenericQ Int-gtypecount :: Typeable a => a -> GenericQ Int-gfindtype :: (Data x, Typeable y) => x -> Maybe y--module Data.Generics.Text-gshow :: Data a => a -> String-gread :: Data a => ReadS a--module Data.Generics.Twins-gfoldlAccum :: Data d => (a -> c (d -> r) -> d -> (a, c r)) -> (a -> g -> (a, c g)) -> a -> d -> (a, c d)-gmapAccumT :: Data d => (a -> d -> (a, d)) -> a -> d -> (a, d)-gmapAccumM :: (Data d, Monad m) => (a -> d -> (a, m d)) -> a -> d -> (a, m d)-gmapAccumQl :: Data d => (r -> r' -> r) -> r -> (a -> d -> (a, r')) -> a -> d -> (a, r)-gmapAccumQr :: Data d => (r' -> r -> r) -> r -> (a -> d -> (a, r')) -> a -> d -> (a, r)-gmapAccumQ :: Data d => (a -> d -> (a, q)) -> a -> d -> (a, [q])-gzipWithT :: GenericQ GenericT -> GenericQ GenericT-gzipWithM :: Monad m => GenericQ (GenericM m) -> GenericQ (GenericM m)-gzipWithQ :: GenericQ (GenericQ r) -> GenericQ (GenericQ [r])-geq :: Data a => a -> a -> Bool-gzip :: GenericQ (GenericM Maybe) -> GenericQ (GenericM Maybe)--module Data.Generics--module Data.IORef-data IORef a-instance Typeable1 IORef-instance Typeable a => Data (IORef a)-instance Eq (IORef a)-newIORef :: a -> IO (IORef a)-readIORef :: IORef a -> IO a-writeIORef :: IORef a -> a -> IO ()-modifyIORef :: IORef a -> (a -> a) -> IO ()-atomicModifyIORef :: IORef a -> (a -> (a, b)) -> IO b-mkWeakIORef :: IORef a -> IO () -> IO (Weak (IORef a))--module Data.Ix-class Ord a => Ix a-range :: Ix a => (a, a) -> [a]-index :: Ix a => (a, a) -> a -> Int-inRange :: Ix a => (a, a) -> a -> Bool-rangeSize :: Ix a => (a, a) -> Int-instance Ix Bool-instance Ix Char-instance Ix GeneralCategory-instance Ix IOMode-instance Ix Int-instance Ix Int16-instance Ix Int32-instance Ix Int64-instance Ix Int8-instance Ix Integer-instance Ix Ordering-instance Ix SeekMode-instance Ix Word-instance Ix Word16-instance Ix Word32-instance Ix Word64-instance Ix Word8-instance Ix ()-instance (Ix a, Ix b) => Ix (a, b)-instance (Ix a1, Ix a2, Ix a3) => Ix (a1, a2, a3)-instance (Ix a1, Ix a2, Ix a3, Ix a4) => Ix (a1, a2, a3, a4)-instance (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5) => Ix (a1, a2, a3, a4, a5)--module Data.Monoid-class Monoid a-mempty :: Monoid a => a-mappend :: Monoid a => a -> a -> a-mconcat :: Monoid a => [a] -> a-instance Monoid All-instance Monoid Any-instance Monoid Ordering-instance Monoid ()-instance (Monoid a, Monoid b) => Monoid (a, b)-instance (Monoid a, Monoid b, Monoid c) => Monoid (a, b, c)-instance (Monoid a, Monoid b, Monoid c, Monoid d) => Monoid (a, b, c, d)-instance (Monoid a, Monoid b, Monoid c, Monoid d, Monoid e) => Monoid (a, b, c, d, e)-instance Monoid b => Monoid (a -> b)-instance Monoid a => Monoid (Dual a)-instance Monoid (Endo a)-instance Monoid (First a)-instance Monoid (Last a)-instance Monoid a => Monoid (Maybe a)-instance Num a => Monoid (Product a)-instance Num a => Monoid (Sum a)-instance Monoid [a]-newtype Dual a-Dual :: a -> Dual a-getDual :: Dual a -> a-instance Bounded a => Bounded (Dual a)-instance Eq a => Eq (Dual a)-instance Monoid a => Monoid (Dual a)-instance Ord a => Ord (Dual a)-instance Read a => Read (Dual a)-instance Show a => Show (Dual a)-newtype Endo a-Endo :: (a -> a) -> Endo a-appEndo :: Endo a -> a -> a-instance Monoid (Endo a)-newtype All-All :: Bool -> All-getAll :: All -> Bool-instance Bounded All-instance Eq All-instance Monoid All-instance Ord All-instance Read All-instance Show All-newtype Any-Any :: Bool -> Any-getAny :: Any -> Bool-instance Bounded Any-instance Eq Any-instance Monoid Any-instance Ord Any-instance Read Any-instance Show Any-newtype Sum a-Sum :: a -> Sum a-getSum :: Sum a -> a-instance Bounded a => Bounded (Sum a)-instance Eq a => Eq (Sum a)-instance Num a => Monoid (Sum a)-instance Ord a => Ord (Sum a)-instance Read a => Read (Sum a)-instance Show a => Show (Sum a)-newtype Product a-Product :: a -> Product a-getProduct :: Product a -> a-instance Bounded a => Bounded (Product a)-instance Eq a => Eq (Product a)-instance Num a => Monoid (Product a)-instance Ord a => Ord (Product a)-instance Read a => Read (Product a)-instance Show a => Show (Product a)-newtype First a-First :: Maybe a -> First a-getFirst :: First a -> Maybe a-instance Eq a => Eq (First a)-instance Monoid (First a)-instance Ord a => Ord (First a)-instance Read a => Read (First a)-instance Show a => Show (First a)-newtype Last a-Last :: Maybe a -> Last a-getLast :: Last a -> Maybe a-instance Eq a => Eq (Last a)-instance Monoid (Last a)-instance Ord a => Ord (Last a)-instance Read a => Read (Last a)-instance Show a => Show (Last a)--module Data.Ratio-data Ratio a-instance Typeable1 Ratio-instance (Data a, Integral a) => Data (Ratio a)-instance Integral a => Enum (Ratio a)-instance (Integral a, Eq a) => Eq (Ratio a)-instance Integral a => Fractional (Ratio a)-instance Integral a => Num (Ratio a)-instance Integral a => Ord (Ratio a)-instance (Integral a, Read a) => Read (Ratio a)-instance Integral a => Real (Ratio a)-instance Integral a => RealFrac (Ratio a)-instance Integral a => Show (Ratio a)-type Rational = Ratio Integer-(%) :: Integral a => a -> a -> Ratio a-numerator :: Integral a => Ratio a -> a-denominator :: Integral a => Ratio a -> a-approxRational :: RealFrac a => a -> a -> Rational--module Data.STRef-data STRef s a-instance Typeable2 STRef-instance Eq (STRef s a)-newSTRef :: a -> ST s (STRef s a)-readSTRef :: STRef s a -> ST s a-writeSTRef :: STRef s a -> a -> ST s ()-modifySTRef :: STRef s a -> (a -> a) -> ST s ()--module Data.STRef.Lazy-data STRef s a-instance Typeable2 STRef-instance Eq (STRef s a)-newSTRef :: a -> ST s (STRef s a)-readSTRef :: STRef s a -> ST s a-writeSTRef :: STRef s a -> a -> ST s ()-modifySTRef :: STRef s a -> (a -> a) -> ST s ()--module Data.STRef.Strict--module Data.Version-data Version-Version :: [Int] -> [String] -> Version-versionBranch :: Version -> [Int]-versionTags :: Version -> [String]-instance Eq Version-instance Ord Version-instance Read Version-instance Show Version-instance Typeable Version-showVersion :: Version -> String-parseVersion :: ReadP Version--module Debug.Trace-putTraceMsg :: String -> IO ()-trace :: String -> a -> a-traceShow :: Show a => a -> b -> b--module GHC.Environment-getFullArgs :: IO [String]--module GHC.Exts-data Int-I# :: Int# -> Int-instance Bits Int-instance Bounded Int-instance Data Int-instance Enum Int-instance Eq Int-instance Integral Int-instance Ix Int-instance Num Int-instance Ord Int-instance PrintfArg Int-instance Read Int-instance Real Int-instance Show Int-instance Storable Int-instance Typeable Int-data Word-W# :: Word# -> Word-instance Bits Word-instance Bounded Word-instance Data Word-instance Enum Word-instance Eq Word-instance Integral Word-instance Ix Word-instance Num Word-instance Ord Word-instance PrintfArg Word-instance Read Word-instance Real Word-instance Show Word-instance Storable Word-instance Typeable Word-data Float-F# :: Float# -> Float-instance Data Float-instance Enum Float-instance Eq Float-instance Floating Float-instance Fractional Float-instance Num Float-instance Ord Float-instance PrintfArg Float-instance Read Float-instance Real Float-instance RealFloat Float-instance RealFrac Float-instance Show Float-instance Storable Float-instance Typeable Float-data Double-D# :: Double# -> Double-instance Data Double-instance Enum Double-instance Eq Double-instance Floating Double-instance Fractional Double-instance Num Double-instance Ord Double-instance PrintfArg Double-instance Read Double-instance Real Double-instance RealFloat Double-instance RealFrac Double-instance Show Double-instance Storable Double-instance Typeable Double-data Integer-S# :: Int# -> Integer-J# :: Int# -> ByteArray# -> Integer-instance Bits Integer-instance Data Integer-instance Enum Integer-instance Eq Integer-instance Integral Integer-instance Ix Integer-instance Num Integer-instance Ord Integer-instance PrintfArg Integer-instance Read Integer-instance Real Integer-instance Show Integer-instance Typeable Integer-data Char-C# :: Char# -> Char-instance Bounded Char-instance Data Char-instance Enum Char-instance Eq Char-instance IsChar Char-instance Ix Char-instance Ord Char-instance PrintfArg Char-instance Read Char-instance Show Char-instance Storable Char-instance Typeable Char-instance IsString [Char]-data Ptr a-Ptr :: Addr# -> Ptr a-instance Typeable1 Ptr-instance Typeable a => Data (Ptr a)-instance Eq (Ptr a)-instance Ord (Ptr a)-instance Show (Ptr a)-instance Storable (Ptr a)-data FunPtr a-FunPtr :: Addr# -> FunPtr a-instance Typeable1 FunPtr-instance Eq (FunPtr a)-instance Ord (FunPtr a)-instance Show (FunPtr a)-instance Storable (FunPtr a)-shiftL# :: Word# -> Int# -> Word#-shiftRL# :: Word# -> Int# -> Word#-iShiftL# :: Int# -> Int# -> Int#-iShiftRA# :: Int# -> Int# -> Int#-iShiftRL# :: Int# -> Int# -> Int#-uncheckedShiftL64# :: Word64# -> Int# -> Word64#-uncheckedShiftRL64# :: Word64# -> Int# -> Word64#-uncheckedIShiftL64# :: Int64# -> Int# -> Int64#-uncheckedIShiftRA64# :: Int64# -> Int# -> Int64#-build :: (a -> b -> b -> b -> b) -> [a]-augment :: (a -> b -> b -> b -> b) -> [a] -> [a]-class IsString a-fromString :: IsString a => String -> a-instance IsString [Char]-breakpoint :: a -> a-breakpointCond :: Bool -> a -> a-lazy :: a -> a-inline :: a -> a--module System.CPUTime-getCPUTime :: IO Integer-cpuTimePrecision :: Integer--module System.Console.GetOpt-getOpt :: ArgOrder a -> [OptDescr a] -> [String] -> ([a], [String], [String])-getOpt' :: ArgOrder a -> [OptDescr a] -> [String] -> ([a], [String], [String], [String])-usageInfo :: String -> [OptDescr a] -> String-data ArgOrder a-RequireOrder :: ArgOrder a-Permute :: ArgOrder a-ReturnInOrder :: (String -> a) -> ArgOrder a-data OptDescr a-Option :: [Char] -> [String] -> ArgDescr a -> String -> OptDescr a-data ArgDescr a-NoArg :: a -> ArgDescr a-ReqArg :: (String -> a) -> String -> ArgDescr a-OptArg :: (Maybe String -> a) -> String -> ArgDescr a--module System.Exit-data ExitCode-ExitSuccess :: ExitCode-ExitFailure :: Int -> ExitCode-instance Eq ExitCode-instance Ord ExitCode-instance Read ExitCode-instance Show ExitCode-exitWith :: ExitCode -> IO a-exitFailure :: IO a--module System.Info-os :: String-arch :: String-compilerName :: String-compilerVersion :: Version--module System.Mem-performGC :: IO ()--module System.Mem.StableName-data StableName a-instance Typeable1 StableName-instance Eq (StableName a)-makeStableName :: a -> IO (StableName a)-hashStableName :: StableName a -> Int--module System.Mem.Weak-data Weak v-instance Typeable1 Weak-mkWeak :: k -> v -> Maybe (IO ()) -> IO (Weak v)-deRefWeak :: Weak v -> IO (Maybe v)-finalize :: Weak v -> IO ()-mkWeakPtr :: k -> Maybe (IO ()) -> IO (Weak k)-addFinalizer :: key -> IO () -> IO ()-mkWeakPair :: k -> v -> Maybe (IO ()) -> IO (Weak (k, v))--module Text.Printf-printf :: PrintfType r => String -> r-hPrintf :: HPrintfType r => Handle -> String -> r-class PrintfType t-instance (PrintfArg a, PrintfType r) => PrintfType (a -> r)-instance PrintfType (IO a)-instance IsChar c => PrintfType [c]-class HPrintfType t-instance (PrintfArg a, HPrintfType r) => HPrintfType (a -> r)-instance HPrintfType (IO a)-class PrintfArg a-instance PrintfArg Char-instance PrintfArg Double-instance PrintfArg Float-instance PrintfArg Int-instance PrintfArg Int16-instance PrintfArg Int32-instance PrintfArg Int64-instance PrintfArg Int8-instance PrintfArg Integer-instance PrintfArg Word-instance PrintfArg Word16-instance PrintfArg Word32-instance PrintfArg Word64-instance PrintfArg Word8-instance IsChar c => PrintfArg [c]-class IsChar c-instance IsChar Char--module Text.Show.Functions--module Control.Exception-data Exception-ArithException :: ArithException -> Exception-ArrayException :: ArrayException -> Exception-AssertionFailed :: String -> Exception-AsyncException :: AsyncException -> Exception-BlockedOnDeadMVar :: Exception-BlockedIndefinitely :: Exception-NestedAtomically :: Exception-Deadlock :: Exception-DynException :: Dynamic -> Exception-ErrorCall :: String -> Exception-ExitException :: ExitCode -> Exception-IOException :: IOException -> Exception-NoMethodError :: String -> Exception-NonTermination :: Exception-PatternMatchFail :: String -> Exception-RecConError :: String -> Exception-RecSelError :: String -> Exception-RecUpdError :: String -> Exception-instance Eq Exception-instance Show Exception-instance Typeable Exception-data IOException-instance Eq IOException-instance Show IOException-instance Typeable IOException-data ArithException-Overflow :: ArithException-Underflow :: ArithException-LossOfPrecision :: ArithException-DivideByZero :: ArithException-Denormal :: ArithException-instance Eq ArithException-instance Ord ArithException-instance Show ArithException-instance Typeable ArithException-data ArrayException-IndexOutOfBounds :: String -> ArrayException-UndefinedElement :: String -> ArrayException-instance Eq ArrayException-instance Ord ArrayException-instance Show ArrayException-instance Typeable ArrayException-data AsyncException-StackOverflow :: AsyncException-HeapOverflow :: AsyncException-ThreadKilled :: AsyncException-instance Eq AsyncException-instance Ord AsyncException-instance Show AsyncException-instance Typeable AsyncException-throwIO :: Exception -> IO a-throw :: Exception -> a-ioError :: IOError -> IO a-throwTo :: ThreadId -> Exception -> IO ()-catch :: IO a -> (Exception -> IO a) -> IO a-catchJust :: (Exception -> Maybe b) -> IO a -> (b -> IO a) -> IO a-handle :: (Exception -> IO a) -> IO a -> IO a-handleJust :: (Exception -> Maybe b) -> (b -> IO a) -> IO a -> IO a-try :: IO a -> IO (Either Exception a)-tryJust :: (Exception -> Maybe b) -> IO a -> IO (Either b a)-evaluate :: a -> IO a-mapException :: (Exception -> Exception) -> a -> a-ioErrors :: Exception -> Maybe IOError-arithExceptions :: Exception -> Maybe ArithException-errorCalls :: Exception -> Maybe String-dynExceptions :: Exception -> Maybe Dynamic-assertions :: Exception -> Maybe String-asyncExceptions :: Exception -> Maybe AsyncException-userErrors :: Exception -> Maybe String-throwDyn :: Typeable exception => exception -> b-throwDynTo :: Typeable exception => ThreadId -> exception -> IO ()-catchDyn :: Typeable exception => IO a -> (exception -> IO a) -> IO a-block :: IO a -> IO a-unblock :: IO a -> IO a-assert :: Bool -> a -> a-bracket :: IO a -> (a -> IO b) -> (a -> IO c) -> IO c-bracket_ :: IO a -> IO b -> IO c -> IO c-bracketOnError :: IO a -> (a -> IO b) -> (a -> IO c) -> IO c-finally :: IO a -> IO b -> IO a-setUncaughtExceptionHandler :: (Exception -> IO ()) -> IO ()-getUncaughtExceptionHandler :: IO (Exception -> IO ())--module System.Environment-getArgs :: IO [String]-getProgName :: IO String-getEnv :: String -> IO String-withArgs :: [String] -> IO a -> IO a-withProgName :: String -> IO a -> IO a-getEnvironment :: IO [(String, String)]--module Control.Concurrent.MVar-data MVar a-instance Typeable1 MVar-instance Typeable a => Data (MVar a)-instance Eq (MVar a)-newEmptyMVar :: IO (MVar a)-newMVar :: a -> IO (MVar a)-takeMVar :: MVar a -> IO a-putMVar :: MVar a -> a -> IO ()-readMVar :: MVar a -> IO a-swapMVar :: MVar a -> a -> IO a-tryTakeMVar :: MVar a -> IO (Maybe a)-tryPutMVar :: MVar a -> a -> IO Bool-isEmptyMVar :: MVar a -> IO Bool-withMVar :: MVar a -> (a -> IO b) -> IO b-modifyMVar_ :: MVar a -> (a -> IO a) -> IO ()-modifyMVar :: MVar a -> (a -> IO (a, b)) -> IO b-addMVarFinalizer :: MVar a -> IO () -> IO ()--module Control.Concurrent.QSem-data QSem-instance Typeable QSem-newQSem :: Int -> IO QSem-waitQSem :: QSem -> IO ()-signalQSem :: QSem -> IO ()--module Control.Concurrent.QSemN-data QSemN-instance Typeable QSemN-newQSemN :: Int -> IO QSemN-waitQSemN :: QSemN -> Int -> IO ()-signalQSemN :: QSemN -> Int -> IO ()--module Control.Concurrent.SampleVar-type SampleVar a = MVar (Int, MVar a)-newEmptySampleVar :: IO (SampleVar a)-newSampleVar :: a -> IO (SampleVar a)-emptySampleVar :: SampleVar a -> IO ()-readSampleVar :: SampleVar a -> IO a-writeSampleVar :: SampleVar a -> a -> IO ()-isEmptySampleVar :: SampleVar a -> IO Bool--module Data.Unique-data Unique-instance Eq Unique-instance Ord Unique-newUnique :: IO Unique-hashUnique :: Unique -> Int--module Control.Concurrent.Chan-data Chan a-instance Typeable1 Chan-newChan :: IO (Chan a)-writeChan :: Chan a -> a -> IO ()-readChan :: Chan a -> IO a-dupChan :: Chan a -> IO (Chan a)-unGetChan :: Chan a -> a -> IO ()-isEmptyChan :: Chan a -> IO Bool-getChanContents :: Chan a -> IO [a]-writeList2Chan :: Chan a -> [a] -> IO ()--module Control.Concurrent-data ThreadId-instance Data ThreadId-instance Eq ThreadId-instance Ord ThreadId-instance Show ThreadId-instance Typeable ThreadId-myThreadId :: IO ThreadId-forkIO :: IO () -> IO ThreadId-killThread :: ThreadId -> IO ()-throwTo :: ThreadId -> Exception -> IO ()-yield :: IO ()-threadDelay :: Int -> IO ()-threadWaitRead :: Fd -> IO ()-threadWaitWrite :: Fd -> IO ()-mergeIO :: [a] -> [a] -> IO [a]-nmergeIO :: [[a]] -> IO [a]-rtsSupportsBoundThreads :: Bool-forkOS :: IO () -> IO ThreadId-isCurrentThreadBound :: IO Bool-runInBoundThread :: IO a -> IO a-runInUnboundThread :: IO a -> IO a--module GHC.ConsoleHandler-data Handler-Default :: Handler-Ignore :: Handler-Catch :: (ConsoleEvent -> IO ()) -> Handler-installHandler :: Handler -> IO Handler-data ConsoleEvent-ControlC :: ConsoleEvent-Break :: ConsoleEvent-Close :: ConsoleEvent-Logoff :: ConsoleEvent-Shutdown :: ConsoleEvent-instance Enum ConsoleEvent-instance Eq ConsoleEvent-instance Ord ConsoleEvent-instance Read ConsoleEvent-instance Show ConsoleEvent-instance Typeable ConsoleEvent-flushConsole :: Handle -> IO ()--module System.Timeout-timeout :: Int -> IO a -> IO (Maybe a)--module Control.Category-class Category cat-id :: Category cat => cat a a-(.) :: Category cat => cat b c -> cat a b -> cat a c-instance Category (->)-instance Monad m => Category (Kleisli m)-(<<<) :: Category cat => cat b c -> cat a b -> cat a c-(>>>) :: Category cat => cat a b -> cat b c -> cat a c--module Control.Arrow-class Category a => Arrow a-arr :: Arrow a => (b -> c) -> a b c-pure :: Arrow a => (b -> c) -> a b c-first :: Arrow a => a b c -> a (b, d) (c, d)-second :: Arrow a => a b c -> a (d, b) (d, c)-(***) :: Arrow a => a b c -> a b' c' -> a (b, b') (c, c')-(&&&) :: Arrow a => a b c -> a b c' -> a b (c, c')-instance Arrow (->)-instance Monad m => Arrow (Kleisli m)-newtype Kleisli m a b-Kleisli :: (a -> m b) -> Kleisli m a b-runKleisli :: Kleisli m a b -> a -> m b-instance Monad m => Arrow (Kleisli m)-instance Monad m => ArrowApply (Kleisli m)-instance Monad m => ArrowChoice (Kleisli m)-instance MonadFix m => ArrowLoop (Kleisli m)-instance MonadPlus m => ArrowPlus (Kleisli m)-instance MonadPlus m => ArrowZero (Kleisli m)-instance Monad m => Category (Kleisli m)-returnA :: Arrow a => a b b-(^>>) :: Arrow a => (b -> c) -> a c d -> a b d-(>>^) :: Arrow a => a b c -> (c -> d) -> a b d-(<<^) :: Arrow a => a c d -> (b -> c) -> a b d-(^<<) :: Arrow a => (c -> d) -> a b c -> a b d-class Arrow a => ArrowZero a-zeroArrow :: ArrowZero a => a b c-instance MonadPlus m => ArrowZero (Kleisli m)-class ArrowZero a => ArrowPlus a-(<+>) :: ArrowPlus a => a b c -> a b c -> a b c-instance MonadPlus m => ArrowPlus (Kleisli m)-class Arrow a => ArrowChoice a-left :: ArrowChoice a => a b c -> a (Either b d) (Either c d)-right :: ArrowChoice a => a b c -> a (Either d b) (Either d c)-(+++) :: ArrowChoice a => a b c -> a b' c' -> a (Either b b') (Either c c')-(|||) :: ArrowChoice a => a b d -> a c d -> a (Either b c) d-instance ArrowChoice (->)-instance Monad m => ArrowChoice (Kleisli m)-class Arrow a => ArrowApply a-app :: ArrowApply a => a (a b c, b) c-instance ArrowApply (->)-instance Monad m => ArrowApply (Kleisli m)-newtype ArrowMonad a b-ArrowMonad :: a () b -> ArrowMonad a b-instance ArrowApply a => Monad (ArrowMonad a)-leftApp :: ArrowApply a => a b c -> a (Either b d) (Either c d)-class Arrow a => ArrowLoop a-loop :: ArrowLoop a => a (b, d) (c, d) -> a b c-instance ArrowLoop (->)-instance MonadFix m => ArrowLoop (Kleisli m)--module Control.Applicative-class Functor f => Applicative f-pure :: Applicative f => a -> f a-(<*>) :: Applicative f => f (a -> b) -> f a -> f b-instance Applicative IO-instance Applicative Id-instance Applicative Maybe-instance Applicative ZipList-instance Applicative []-instance Monoid m => Applicative (Const m)-instance Monad m => Applicative (WrappedMonad m)-instance Monoid a => Applicative ((,) a)-instance Applicative ((->) a)-instance Arrow a => Applicative (WrappedArrow a b)-class Applicative f => Alternative f-empty :: Alternative f => f a-(<|>) :: Alternative f => f a -> f a -> f a-instance Alternative Maybe-instance Alternative []-instance MonadPlus m => Alternative (WrappedMonad m)-instance (ArrowZero a, ArrowPlus a) => Alternative (WrappedArrow a b)-newtype Const a b-Const :: a -> Const a b-getConst :: Const a b -> a-instance Monoid m => Applicative (Const m)-instance Functor (Const m)-newtype WrappedMonad m a-WrapMonad :: m a -> WrappedMonad m a-unwrapMonad :: WrappedMonad m a -> m a-instance MonadPlus m => Alternative (WrappedMonad m)-instance Monad m => Applicative (WrappedMonad m)-instance Monad m => Functor (WrappedMonad m)-newtype WrappedArrow a b c-WrapArrow :: a b c -> WrappedArrow a b c-unwrapArrow :: WrappedArrow a b c -> a b c-instance (ArrowZero a, ArrowPlus a) => Alternative (WrappedArrow a b)-instance Arrow a => Applicative (WrappedArrow a b)-instance Arrow a => Functor (WrappedArrow a b)-newtype ZipList a-ZipList :: [a] -> ZipList a-getZipList :: ZipList a -> [a]-instance Applicative ZipList-instance Functor ZipList-(<$>) :: Functor f => (a -> b) -> f a -> f b-(<$) :: Functor f => a -> f b -> f a-(*>) :: Applicative f => f a -> f b -> f b-(<*) :: Applicative f => f a -> f b -> f a-(<**>) :: Applicative f => f a -> f (a -> b) -> f b-liftA :: Applicative f => (a -> b) -> f a -> f b-liftA2 :: Applicative f => (a -> b -> c) -> f a -> f b -> f c-liftA3 :: Applicative f => (a -> b -> c -> d) -> f a -> f b -> f c -> f d-optional :: Alternative f => f a -> f (Maybe a)-some :: Alternative f => f a -> f [a]-many :: Alternative f => f a -> f [a]--module Data.Foldable-class Foldable t-fold :: (Foldable t, Monoid m) => t m -> m-foldMap :: (Foldable t, Monoid m) => (a -> m) -> t a -> m-foldr :: Foldable t => (a -> b -> b) -> b -> t a -> b-foldl :: Foldable t => (a -> b -> a) -> a -> t b -> a-foldr1 :: Foldable t => (a -> a -> a) -> t a -> a-foldl1 :: Foldable t => (a -> a -> a) -> t a -> a-instance Foldable Maybe-instance Foldable []-foldr' :: Foldable t => (a -> b -> b) -> b -> t a -> b-foldl' :: Foldable t => (a -> b -> a) -> a -> t b -> a-foldrM :: (Foldable t, Monad m) => (a -> b -> m b) -> b -> t a -> m b-foldlM :: (Foldable t, Monad m) => (a -> b -> m a) -> a -> t b -> m a-traverse_ :: (Foldable t, Applicative f) => (a -> f b) -> t a -> f ()-for_ :: (Foldable t, Applicative f) => t a -> (a -> f b) -> f ()-sequenceA_ :: (Foldable t, Applicative f) => t (f a) -> f ()-asum :: (Foldable t, Alternative f) => t (f a) -> f a-mapM_ :: (Foldable t, Monad m) => (a -> m b) -> t a -> m ()-forM_ :: (Foldable t, Monad m) => t a -> (a -> m b) -> m ()-sequence_ :: (Foldable t, Monad m) => t (m a) -> m ()-msum :: (Foldable t, MonadPlus m) => t (m a) -> m a-toList :: Foldable t => t a -> [a]-concat :: Foldable t => t [a] -> [a]-concatMap :: Foldable t => (a -> [b]) -> t a -> [b]-and :: Foldable t => t Bool -> Bool-or :: Foldable t => t Bool -> Bool-any :: Foldable t => (a -> Bool) -> t a -> Bool-all :: Foldable t => (a -> Bool) -> t a -> Bool-sum :: (Foldable t, Num a) => t a -> a-product :: (Foldable t, Num a) => t a -> a-maximum :: (Foldable t, Ord a) => t a -> a-maximumBy :: Foldable t => (a -> a -> Ordering) -> t a -> a-minimum :: (Foldable t, Ord a) => t a -> a-minimumBy :: Foldable t => (a -> a -> Ordering) -> t a -> a-elem :: (Foldable t, Eq a) => a -> t a -> Bool-notElem :: (Foldable t, Eq a) => a -> t a -> Bool-find :: Foldable t => (a -> Bool) -> t a -> Maybe a--module Data.Traversable-class (Functor t, Foldable t) => Traversable t-traverse :: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)-sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a)-mapM :: (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b)-sequence :: (Traversable t, Monad m) => t (m a) -> m (t a)-instance Traversable Maybe-instance Traversable []-for :: (Traversable t, Applicative f) => t a -> (a -> f b) -> f (t b)-forM :: (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b)-fmapDefault :: Traversable t => (a -> b) -> t a -> t b-foldMapDefault :: (Traversable t, Monoid m) => (a -> m) -> t a -> m--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module Data.Array--module Data.Array.IArray-class IArray a e-bounds :: (IArray a e, Ix i) => a i e -> (i, i)-instance IArray Array e-instance IArray UArray Bool-instance IArray UArray Char-instance IArray UArray Double-instance IArray UArray Float-instance IArray UArray Int-instance IArray UArray Int16-instance IArray UArray Int32-instance IArray UArray Int64-instance IArray UArray Int8-instance IArray UArray Word-instance IArray UArray Word16-instance IArray UArray Word32-instance IArray UArray Word64-instance IArray UArray Word8-instance IArray UArray (FunPtr a)-instance IArray UArray (Ptr a)-instance IArray UArray (StablePtr a)-instance IArray (IOToDiffArray IOArray) e-instance IArray (IOToDiffArray IOUArray) Char-instance IArray (IOToDiffArray IOUArray) Double-instance IArray (IOToDiffArray IOUArray) Float-instance IArray (IOToDiffArray IOUArray) Int-instance IArray (IOToDiffArray IOUArray) Int16-instance IArray (IOToDiffArray IOUArray) Int32-instance IArray (IOToDiffArray IOUArray) Int64-instance IArray (IOToDiffArray IOUArray) Int8-instance IArray (IOToDiffArray IOUArray) Word-instance IArray (IOToDiffArray IOUArray) Word16-instance IArray (IOToDiffArray IOUArray) Word32-instance IArray (IOToDiffArray IOUArray) Word64-instance IArray (IOToDiffArray IOUArray) Word8-instance IArray (IOToDiffArray IOUArray) (FunPtr a)-instance IArray (IOToDiffArray IOUArray) (Ptr a)-instance IArray (IOToDiffArray IOUArray) (StablePtr a)-array :: (IArray a e, Ix i) => (i, i) -> [(i, e)] -> a i e-listArray :: (IArray a e, Ix i) => (i, i) -> [e] -> a i e-accumArray :: (IArray a e, Ix i) => (e -> e' -> e) -> e -> (i, i) -> [(i, e')] -> a i e-(!) :: (IArray a e, Ix i) => a i e -> i -> e-bounds :: (IArray a e, Ix i) => a i e -> (i, i)-indices :: (IArray a e, Ix i) => a i e -> [i]-elems :: (IArray a e, Ix i) => a i e -> [e]-assocs :: (IArray a e, Ix i) => a i e -> [(i, e)]-(//) :: (IArray a e, Ix i) => a i e -> [(i, e)] -> a i e-accum :: (IArray a e, Ix i) => (e -> e' -> e) -> a i e -> [(i, e')] -> a i e-amap :: (IArray a e', IArray a e, Ix i) => (e' -> e) -> a i e' -> a i e-ixmap :: (IArray a e, Ix i, Ix j) => (i, i) -> (i -> j) -> a j e -> a i e--module Data.Array.MArray-class Monad m => MArray a e m-getBounds :: (MArray a e m, Ix i) => a i e -> m (i, i)-newArray :: (MArray a e m, Ix i) => (i, i) -> e -> m (a i e)-newArray_ :: (MArray a e m, Ix i) => (i, i) -> m (a i e)-instance MArray IOArray e IO-instance MArray IOUArray Bool IO-instance MArray IOUArray Char IO-instance MArray IOUArray Double IO-instance MArray IOUArray Float IO-instance MArray IOUArray Int IO-instance MArray IOUArray Int16 IO-instance MArray IOUArray Int32 IO-instance MArray IOUArray Int64 IO-instance MArray IOUArray Int8 IO-instance MArray IOUArray Word IO-instance MArray IOUArray Word16 IO-instance MArray IOUArray Word32 IO-instance MArray IOUArray Word64 IO-instance MArray IOUArray Word8 IO-instance Storable e => MArray StorableArray e IO-instance MArray IOUArray (FunPtr a) IO-instance MArray IOUArray (Ptr a) IO-instance MArray IOUArray (StablePtr a) IO-instance MArray (STArray s) e (ST s)-instance MArray (STArray s) e (ST s)-instance MArray (STUArray s) Bool (ST s)-instance MArray (STUArray s) Char (ST s)-instance MArray (STUArray s) Double (ST s)-instance MArray (STUArray s) Float (ST s)-instance MArray (STUArray s) Int (ST s)-instance MArray (STUArray s) Int16 (ST s)-instance MArray (STUArray s) Int32 (ST s)-instance MArray (STUArray s) Int64 (ST s)-instance MArray (STUArray s) Int8 (ST s)-instance MArray (STUArray s) Word (ST s)-instance MArray (STUArray s) Word16 (ST s)-instance MArray (STUArray s) Word32 (ST s)-instance MArray (STUArray s) Word64 (ST s)-instance MArray (STUArray s) Word8 (ST s)-instance MArray (STUArray s) (FunPtr a) (ST s)-instance MArray (STUArray s) (Ptr a) (ST s)-instance MArray (STUArray s) (StablePtr a) (ST s)-newArray :: (MArray a e m, Ix i) => (i, i) -> e -> m (a i e)-newArray_ :: (MArray a e m, Ix i) => (i, i) -> m (a i e)-newListArray :: (MArray a e m, Ix i) => (i, i) -> [e] -> m (a i e)-readArray :: (MArray a e m, Ix i) => a i e -> i -> m e-writeArray :: (MArray a e m, Ix i) => a i e -> i -> e -> m ()-mapArray :: (MArray a e' m, MArray a e m, Ix i) => (e' -> e) -> a i e' -> m (a i e)-mapIndices :: (MArray a e m, Ix i, Ix j) => (i, i) -> (i -> j) -> a j e -> m (a i e)-getBounds :: (MArray a e m, Ix i) => a i e -> m (i, i)-getElems :: (MArray a e m, Ix i) => a i e -> m [e]-getAssocs :: (MArray a e m, Ix i) => a i e -> m [(i, e)]-freeze :: (Ix i, MArray a e m, IArray b e) => a i e -> m (b i e)-unsafeFreeze :: (Ix i, MArray a e m, IArray b e) => a i e -> m (b i e)-thaw :: (Ix i, IArray a e, MArray b e m) => a i e -> m (b i e)-unsafeThaw :: (Ix i, IArray a e, MArray b e m) => a i e -> m (b i e)--module Data.Array.ST-runSTArray :: Ix i => ST s (STArray s i e) -> Array i e-data STUArray s i a-instance Typeable3 STUArray-instance MArray (STUArray s) Bool (ST s)-instance MArray (STUArray s) Char (ST s)-instance MArray (STUArray s) Double (ST s)-instance MArray (STUArray s) Float (ST s)-instance MArray (STUArray s) Int (ST s)-instance MArray (STUArray s) Int16 (ST s)-instance MArray (STUArray s) Int32 (ST s)-instance MArray (STUArray s) Int64 (ST s)-instance MArray (STUArray s) Int8 (ST s)-instance MArray (STUArray s) Word (ST s)-instance MArray (STUArray s) Word16 (ST s)-instance MArray (STUArray s) Word32 (ST s)-instance MArray (STUArray s) Word64 (ST s)-instance MArray (STUArray s) Word8 (ST s)-instance MArray (STUArray s) (FunPtr a) (ST s)-instance MArray (STUArray s) (Ptr a) (ST s)-instance MArray (STUArray s) (StablePtr a) (ST s)-instance Eq (STUArray s i e)-runSTUArray :: Ix i => ST s (STUArray s i e) -> UArray i e-castSTUArray :: STUArray s ix a -> ST s (STUArray s ix b)--module Data.Array.Storable-data StorableArray i e-instance Storable e => MArray StorableArray e IO-withStorableArray :: StorableArray i e -> (Ptr e -> IO a) -> IO a-touchStorableArray :: StorableArray i e -> IO ()-unsafeForeignPtrToStorableArray :: Ix i => ForeignPtr e -> (i, i) -> IO (StorableArray i e)--module Data.Array.Unboxed-data UArray i e-instance Typeable2 UArray-instance IArray UArray Bool-instance IArray UArray Char-instance IArray UArray Double-instance IArray UArray Float-instance IArray UArray Int-instance IArray UArray Int16-instance IArray UArray Int32-instance IArray UArray Int64-instance IArray UArray Int8-instance IArray UArray Word-instance IArray UArray Word16-instance IArray UArray Word32-instance IArray UArray Word64-instance IArray UArray Word8-instance IArray UArray (FunPtr a)-instance IArray UArray (Ptr a)-instance IArray UArray (StablePtr a)-instance (Ix ix, Eq e, IArray UArray e) => Eq (UArray ix e)-instance (Ix ix, Ord e, IArray UArray e) => Ord (UArray ix e)-instance (Ix ix, Show ix, Show e, IArray UArray e) => Show (UArray ix e)--module Data.Array.IO-data IOUArray i e-instance Typeable2 IOUArray-instance MArray IOUArray Bool IO-instance MArray IOUArray Char IO-instance MArray IOUArray Double IO-instance MArray IOUArray Float IO-instance MArray IOUArray Int IO-instance MArray IOUArray Int16 IO-instance MArray IOUArray Int32 IO-instance MArray IOUArray Int64 IO-instance MArray IOUArray Int8 IO-instance MArray IOUArray Word IO-instance MArray IOUArray Word16 IO-instance MArray IOUArray Word32 IO-instance MArray IOUArray Word64 IO-instance MArray IOUArray Word8 IO-instance MArray IOUArray (FunPtr a) IO-instance MArray IOUArray (Ptr a) IO-instance MArray IOUArray (StablePtr a) IO-instance IArray (IOToDiffArray IOUArray) Char-instance IArray (IOToDiffArray IOUArray) Double-instance IArray (IOToDiffArray IOUArray) Float-instance IArray (IOToDiffArray IOUArray) Int-instance IArray (IOToDiffArray IOUArray) Int16-instance IArray (IOToDiffArray IOUArray) Int32-instance IArray (IOToDiffArray IOUArray) Int64-instance IArray (IOToDiffArray IOUArray) Int8-instance IArray (IOToDiffArray IOUArray) Word-instance IArray (IOToDiffArray IOUArray) Word16-instance IArray (IOToDiffArray IOUArray) Word32-instance IArray (IOToDiffArray IOUArray) Word64-instance IArray (IOToDiffArray IOUArray) Word8-instance IArray (IOToDiffArray IOUArray) (FunPtr a)-instance IArray (IOToDiffArray IOUArray) (Ptr a)-instance IArray (IOToDiffArray IOUArray) (StablePtr a)-instance Eq (IOUArray i e)-castIOUArray :: IOUArray ix a -> IO (IOUArray ix b)-hGetArray :: Handle -> IOUArray Int Word8 -> Int -> IO Int-hPutArray :: Handle -> IOUArray Int Word8 -> Int -> IO ()--module Data.Array.Diff-data IOToDiffArray a i e-instance IArray (IOToDiffArray IOArray) e-instance IArray (IOToDiffArray IOUArray) Char-instance IArray (IOToDiffArray IOUArray) Double-instance IArray (IOToDiffArray IOUArray) Float-instance IArray (IOToDiffArray IOUArray) Int-instance IArray (IOToDiffArray IOUArray) Int16-instance IArray (IOToDiffArray IOUArray) Int32-instance IArray (IOToDiffArray IOUArray) Int64-instance IArray (IOToDiffArray IOUArray) Int8-instance IArray (IOToDiffArray IOUArray) Word-instance IArray (IOToDiffArray IOUArray) Word16-instance IArray (IOToDiffArray IOUArray) Word32-instance IArray (IOToDiffArray IOUArray) Word64-instance IArray (IOToDiffArray IOUArray) Word8-instance IArray (IOToDiffArray IOUArray) (FunPtr a)-instance IArray (IOToDiffArray IOUArray) (Ptr a)-instance IArray (IOToDiffArray IOUArray) (StablePtr a)-type DiffArray = IOToDiffArray IOArray-instance (Ix ix, Show ix, Show e) => Show (DiffArray ix e)-type DiffUArray = IOToDiffArray IOUArray-instance (Ix ix, Show ix) => Show (DiffUArray ix Char)-instance (Ix ix, Show ix) => Show (DiffUArray ix Double)-instance (Ix ix, Show ix) => Show (DiffUArray ix Float)-instance (Ix ix, Show ix) => Show (DiffUArray ix Int)-instance (Ix ix, Show ix) => Show (DiffUArray ix Int16)-instance (Ix ix, Show ix) => Show (DiffUArray ix Int32)-instance (Ix ix, Show ix) => Show (DiffUArray ix Int64)-instance (Ix ix, Show ix) => Show (DiffUArray ix Int8)-instance (Ix ix, Show ix) => Show (DiffUArray ix Word)-instance (Ix ix, Show ix) => Show (DiffUArray ix Word16)-instance (Ix ix, Show ix) => Show (DiffUArray ix Word32)-instance (Ix ix, Show ix) => Show (DiffUArray ix Word64)-instance (Ix ix, Show ix) => Show (DiffUArray ix Word8)-newDiffArray :: (MArray a e IO, Ix i) => (i, i) -> [(Int, e)] -> IO (IOToDiffArray a i e)-readDiffArray :: (MArray a e IO, Ix i) => IOToDiffArray a i e -> Int -> IO e-replaceDiffArray :: (MArray a e IO, Ix i) => IOToDiffArray a i e -> [(Int, e)] -> IO (IOToDiffArray a i e)--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module Data.ByteString.Internal-data ByteString-PS :: ForeignPtr Word8 -> Int -> Int -> ByteString-instance Data ByteString-instance Eq ByteString-instance Monoid ByteString-instance Ord ByteString-instance Read ByteString-instance Show ByteString-instance Typeable ByteString-create :: Int -> (Ptr Word8 -> IO ()) -> IO ByteString-createAndTrim :: Int -> (Ptr Word8 -> IO Int) -> IO ByteString-createAndTrim' :: Int -> (Ptr Word8 -> IO (Int, Int, a)) -> IO (ByteString, a)-unsafeCreate :: Int -> (Ptr Word8 -> IO ()) -> ByteString-mallocByteString :: Int -> IO (ForeignPtr a)-fromForeignPtr :: ForeignPtr Word8 -> Int -> Int -> ByteString-toForeignPtr :: ByteString -> (ForeignPtr Word8, Int, Int)-inlinePerformIO :: IO a -> a-nullForeignPtr :: ForeignPtr Word8-countOccurrences :: (Storable a, Num a) => Ptr a -> Ptr Word8 -> Int -> IO ()-c_strlen :: CString -> IO CSize-c_free_finalizer :: FunPtr (Ptr Word8 -> IO ())-memchr :: Ptr Word8 -> Word8 -> CSize -> IO (Ptr Word8)-memcmp :: Ptr Word8 -> Ptr Word8 -> CSize -> IO CInt-memcpy :: Ptr Word8 -> Ptr Word8 -> CSize -> IO ()-memmove :: Ptr Word8 -> Ptr Word8 -> CSize -> IO ()-memset :: Ptr Word8 -> Word8 -> CSize -> IO (Ptr Word8)-c_reverse :: Ptr Word8 -> Ptr Word8 -> CULong -> IO ()-c_intersperse :: Ptr Word8 -> Ptr Word8 -> CULong -> Word8 -> IO ()-c_maximum :: Ptr Word8 -> CULong -> IO Word8-c_minimum :: Ptr Word8 -> CULong -> IO Word8-c_count :: Ptr Word8 -> CULong -> Word8 -> IO CULong-memcpy_ptr_baoff :: Ptr a -> RawBuffer -> CInt -> CSize -> IO (Ptr ())-w2c :: Word8 -> Char-c2w :: Char -> Word8-isSpaceWord8 :: Word8 -> Bool--module Data.ByteString.Lazy.Internal-data ByteString-Empty :: ByteString-Chunk :: ByteString -> ByteString -> ByteString-instance Data ByteString-instance Eq ByteString-instance Monoid ByteString-instance Ord ByteString-instance Read ByteString-instance Show ByteString-instance Typeable ByteString-chunk :: ByteString -> ByteString -> ByteString-foldrChunks :: (ByteString -> a -> a) -> a -> ByteString -> a-foldlChunks :: (a -> ByteString -> a) -> a -> ByteString -> a-invariant :: ByteString -> Bool-checkInvariant :: ByteString -> ByteString-defaultChunkSize :: Int-smallChunkSize :: Int-chunkOverhead :: Int--module Data.ByteString.Unsafe-unsafeHead :: ByteString -> Word8-unsafeTail :: ByteString -> ByteString-unsafeIndex :: ByteString -> Int -> Word8-unsafeTake :: Int -> ByteString -> ByteString-unsafeDrop :: Int -> ByteString -> ByteString-unsafeUseAsCString :: ByteString -> (CString -> IO a) -> IO a-unsafeUseAsCStringLen :: ByteString -> (CStringLen -> IO a) -> IO a-unsafePackCString :: CString -> IO ByteString-unsafePackCStringLen :: CStringLen -> IO ByteString-unsafePackMallocCString :: CString -> IO ByteString-unsafePackAddress :: Addr# -> IO ByteString-unsafePackAddressLen :: Int -> Addr# -> IO ByteString-unsafePackCStringFinalizer :: Ptr Word8 -> Int -> IO () -> IO ByteString-unsafeFinalize :: ByteString -> IO ()--module Data.ByteString-data ByteString-instance Data ByteString-instance Eq ByteString-instance Monoid ByteString-instance Ord ByteString-instance Read ByteString-instance Show ByteString-instance Typeable ByteString-empty :: ByteString-singleton :: Word8 -> ByteString-pack :: [Word8] -> ByteString-unpack :: ByteString -> [Word8]-cons :: Word8 -> ByteString -> ByteString-snoc :: ByteString -> Word8 -> ByteString-append :: ByteString -> ByteString -> ByteString-head :: ByteString -> Word8-uncons :: ByteString -> Maybe (Word8, ByteString)-last :: ByteString -> Word8-tail :: ByteString -> ByteString-init :: ByteString -> ByteString-null :: ByteString -> Bool-length :: ByteString -> Int-map :: (Word8 -> Word8) -> ByteString -> ByteString-reverse :: ByteString -> ByteString-intersperse :: Word8 -> ByteString -> ByteString-intercalate :: ByteString -> [ByteString] -> ByteString-transpose :: [ByteString] -> [ByteString]-foldl :: (a -> Word8 -> a) -> a -> ByteString -> a-foldl' :: (a -> Word8 -> a) -> a -> ByteString -> a-foldl1 :: (Word8 -> Word8 -> Word8) -> ByteString -> Word8-foldl1' :: (Word8 -> Word8 -> Word8) -> ByteString -> Word8-foldr :: (Word8 -> a -> a) -> a -> ByteString -> a-foldr' :: (Word8 -> a -> a) -> a -> ByteString -> a-foldr1 :: (Word8 -> Word8 -> Word8) -> ByteString -> Word8-foldr1' :: (Word8 -> Word8 -> Word8) -> ByteString -> Word8-concat :: [ByteString] -> ByteString-concatMap :: (Word8 -> ByteString) -> ByteString -> ByteString-any :: (Word8 -> Bool) -> ByteString -> Bool-all :: (Word8 -> Bool) -> ByteString -> Bool-maximum :: ByteString -> Word8-minimum :: ByteString -> Word8-scanl :: (Word8 -> Word8 -> Word8) -> Word8 -> ByteString -> ByteString-scanl1 :: (Word8 -> Word8 -> Word8) -> ByteString -> ByteString-scanr :: (Word8 -> Word8 -> Word8) -> Word8 -> ByteString -> ByteString-scanr1 :: (Word8 -> Word8 -> Word8) -> ByteString -> ByteString-mapAccumL :: (acc -> Word8 -> (acc, Word8)) -> acc -> ByteString -> (acc, ByteString)-mapAccumR :: (acc -> Word8 -> (acc, Word8)) -> acc -> ByteString -> (acc, ByteString)-mapIndexed :: (Int -> Word8 -> Word8) -> ByteString -> ByteString-replicate :: Int -> Word8 -> ByteString-unfoldr :: (a -> Maybe (Word8, a)) -> a -> ByteString-unfoldrN :: Int -> (a -> Maybe (Word8, a)) -> a -> (ByteString, Maybe a)-take :: Int -> ByteString -> ByteString-drop :: Int -> ByteString -> ByteString-splitAt :: Int -> ByteString -> (ByteString, ByteString)-takeWhile :: (Word8 -> Bool) -> ByteString -> ByteString-dropWhile :: (Word8 -> Bool) -> ByteString -> ByteString-span :: (Word8 -> Bool) -> ByteString -> (ByteString, ByteString)-spanEnd :: (Word8 -> Bool) -> ByteString -> (ByteString, ByteString)-break :: (Word8 -> Bool) -> ByteString -> (ByteString, ByteString)-breakEnd :: (Word8 -> Bool) -> ByteString -> (ByteString, ByteString)-group :: ByteString -> [ByteString]-groupBy :: (Word8 -> Word8 -> Bool) -> ByteString -> [ByteString]-inits :: ByteString -> [ByteString]-tails :: ByteString -> [ByteString]-split :: Word8 -> ByteString -> [ByteString]-splitWith :: (Word8 -> Bool) -> ByteString -> [ByteString]-isPrefixOf :: ByteString -> ByteString -> Bool-isSuffixOf :: ByteString -> ByteString -> Bool-isInfixOf :: ByteString -> ByteString -> Bool-isSubstringOf :: ByteString -> ByteString -> Bool-findSubstring :: ByteString -> ByteString -> Maybe Int-findSubstrings :: ByteString -> ByteString -> [Int]-elem :: Word8 -> ByteString -> Bool-notElem :: Word8 -> ByteString -> Bool-find :: (Word8 -> Bool) -> ByteString -> Maybe Word8-filter :: (Word8 -> Bool) -> ByteString -> ByteString-partition :: (Word8 -> Bool) -> ByteString -> (ByteString, ByteString)-index :: ByteString -> Int -> Word8-elemIndex :: Word8 -> ByteString -> Maybe Int-elemIndices :: Word8 -> ByteString -> [Int]-elemIndexEnd :: Word8 -> ByteString -> Maybe Int-findIndex :: (Word8 -> Bool) -> ByteString -> Maybe Int-findIndices :: (Word8 -> Bool) -> ByteString -> [Int]-count :: Word8 -> ByteString -> Int-zip :: ByteString -> ByteString -> [(Word8, Word8)]-zipWith :: (Word8 -> Word8 -> a) -> ByteString -> ByteString -> [a]-unzip :: [(Word8, Word8)] -> (ByteString, ByteString)-sort :: ByteString -> ByteString-copy :: ByteString -> ByteString-packCString :: CString -> IO ByteString-packCStringLen :: CStringLen -> IO ByteString-useAsCString :: ByteString -> (CString -> IO a) -> IO a-useAsCStringLen :: ByteString -> (CStringLen -> IO a) -> IO a-getLine :: IO ByteString-getContents :: IO ByteString-putStr :: ByteString -> IO ()-putStrLn :: ByteString -> IO ()-interact :: (ByteString -> ByteString) -> IO ()-readFile :: FilePath -> IO ByteString-writeFile :: FilePath -> ByteString -> IO ()-appendFile :: FilePath -> ByteString -> IO ()-hGetLine :: Handle -> IO ByteString-hGetContents :: Handle -> IO ByteString-hGet :: Handle -> Int -> IO ByteString-hGetNonBlocking :: Handle -> Int -> IO ByteString-hPut :: Handle -> ByteString -> IO ()-hPutStr :: Handle -> ByteString -> IO ()-hPutStrLn :: Handle -> ByteString -> IO ()--module Data.ByteString.Char8-data ByteString-instance Data ByteString-instance Eq ByteString-instance Monoid ByteString-instance Ord ByteString-instance Read ByteString-instance Show ByteString-instance Typeable ByteString-empty :: ByteString-singleton :: Char -> ByteString-pack :: String -> ByteString-unpack :: ByteString -> [Char]-cons :: Char -> ByteString -> ByteString-snoc :: ByteString -> Char -> ByteString-append :: ByteString -> ByteString -> ByteString-head :: ByteString -> Char-uncons :: ByteString -> Maybe (Char, ByteString)-last :: ByteString -> Char-tail :: ByteString -> ByteString-init :: ByteString -> ByteString-null :: ByteString -> Bool-length :: ByteString -> Int-map :: (Char -> Char) -> ByteString -> ByteString-reverse :: ByteString -> ByteString-intersperse :: Char -> ByteString -> ByteString-intercalate :: ByteString -> [ByteString] -> ByteString-transpose :: [ByteString] -> [ByteString]-foldl :: (a -> Char -> a) -> a -> ByteString -> a-foldl' :: (a -> Char -> a) -> a -> ByteString -> a-foldl1 :: (Char -> Char -> Char) -> ByteString -> Char-foldl1' :: (Char -> Char -> Char) -> ByteString -> Char-foldr :: (Char -> a -> a) -> a -> ByteString -> a-foldr' :: (Char -> a -> a) -> a -> ByteString -> a-foldr1 :: (Char -> Char -> Char) -> ByteString -> Char-foldr1' :: (Char -> Char -> Char) -> ByteString -> Char-concat :: [ByteString] -> ByteString-concatMap :: (Char -> ByteString) -> ByteString -> ByteString-any :: (Char -> Bool) -> ByteString -> Bool-all :: (Char -> Bool) -> ByteString -> Bool-maximum :: ByteString -> Char-minimum :: ByteString -> Char-scanl :: (Char -> Char -> Char) -> Char -> ByteString -> ByteString-scanl1 :: (Char -> Char -> Char) -> ByteString -> ByteString-scanr :: (Char -> Char -> Char) -> Char -> ByteString -> ByteString-scanr1 :: (Char -> Char -> Char) -> ByteString -> ByteString-mapAccumL :: (acc -> Char -> (acc, Char)) -> acc -> ByteString -> (acc, ByteString)-mapAccumR :: (acc -> Char -> (acc, Char)) -> acc -> ByteString -> (acc, ByteString)-mapIndexed :: (Int -> Char -> Char) -> ByteString -> ByteString-replicate :: Int -> Char -> ByteString-unfoldr :: (a -> Maybe (Char, a)) -> a -> ByteString-unfoldrN :: Int -> (a -> Maybe (Char, a)) -> a -> (ByteString, Maybe a)-take :: Int -> ByteString -> ByteString-drop :: Int -> ByteString -> ByteString-splitAt :: Int -> ByteString -> (ByteString, ByteString)-takeWhile :: (Char -> Bool) -> ByteString -> ByteString-dropWhile :: (Char -> Bool) -> ByteString -> ByteString-span :: (Char -> Bool) -> ByteString -> (ByteString, ByteString)-spanEnd :: (Char -> Bool) -> ByteString -> (ByteString, ByteString)-break :: (Char -> Bool) -> ByteString -> (ByteString, ByteString)-breakEnd :: (Char -> Bool) -> ByteString -> (ByteString, ByteString)-group :: ByteString -> [ByteString]-groupBy :: (Char -> Char -> Bool) -> ByteString -> [ByteString]-inits :: ByteString -> [ByteString]-tails :: ByteString -> [ByteString]-split :: Char -> ByteString -> [ByteString]-splitWith :: (Char -> Bool) -> ByteString -> [ByteString]-lines :: ByteString -> [ByteString]-words :: ByteString -> [ByteString]-unlines :: [ByteString] -> ByteString-unwords :: [ByteString] -> ByteString-isPrefixOf :: ByteString -> ByteString -> Bool-isSuffixOf :: ByteString -> ByteString -> Bool-isInfixOf :: ByteString -> ByteString -> Bool-isSubstringOf :: ByteString -> ByteString -> Bool-findSubstring :: ByteString -> ByteString -> Maybe Int-findSubstrings :: ByteString -> ByteString -> [Int]-elem :: Char -> ByteString -> Bool-notElem :: Char -> ByteString -> Bool-find :: (Char -> Bool) -> ByteString -> Maybe Char-filter :: (Char -> Bool) -> ByteString -> ByteString-index :: ByteString -> Int -> Char-elemIndex :: Char -> ByteString -> Maybe Int-elemIndices :: Char -> ByteString -> [Int]-elemIndexEnd :: Char -> ByteString -> Maybe Int-findIndex :: (Char -> Bool) -> ByteString -> Maybe Int-findIndices :: (Char -> Bool) -> ByteString -> [Int]-count :: Char -> ByteString -> Int-zip :: ByteString -> ByteString -> [(Char, Char)]-zipWith :: (Char -> Char -> a) -> ByteString -> ByteString -> [a]-unzip :: [(Char, Char)] -> (ByteString, ByteString)-sort :: ByteString -> ByteString-readInt :: ByteString -> Maybe (Int, ByteString)-readInteger :: ByteString -> Maybe (Integer, ByteString)-copy :: ByteString -> ByteString-packCString :: CString -> IO ByteString-packCStringLen :: CStringLen -> IO ByteString-useAsCString :: ByteString -> (CString -> IO a) -> IO a-useAsCStringLen :: ByteString -> (CStringLen -> IO a) -> IO a-getLine :: IO ByteString-getContents :: IO ByteString-putStr :: ByteString -> IO ()-putStrLn :: ByteString -> IO ()-interact :: (ByteString -> ByteString) -> IO ()-readFile :: FilePath -> IO ByteString-writeFile :: FilePath -> ByteString -> IO ()-appendFile :: FilePath -> ByteString -> IO ()-hGetLine :: Handle -> IO ByteString-hGetContents :: Handle -> IO ByteString-hGet :: Handle -> Int -> IO ByteString-hGetNonBlocking :: Handle -> Int -> IO ByteString-hPut :: Handle -> ByteString -> IO ()-hPutStr :: Handle -> ByteString -> IO ()-hPutStrLn :: Handle -> ByteString -> IO ()--module Data.ByteString.Lazy-data ByteString-instance Data ByteString-instance Eq ByteString-instance Monoid ByteString-instance Ord ByteString-instance Read ByteString-instance Show ByteString-instance Typeable ByteString-empty :: ByteString-singleton :: Word8 -> ByteString-pack :: [Word8] -> ByteString-unpack :: ByteString -> [Word8]-fromChunks :: [ByteString] -> ByteString-toChunks :: ByteString -> [ByteString]-cons :: Word8 -> ByteString -> ByteString-cons' :: Word8 -> ByteString -> ByteString-snoc :: ByteString -> Word8 -> ByteString-append :: ByteString -> ByteString -> ByteString-head :: ByteString -> Word8-uncons :: ByteString -> Maybe (Word8, ByteString)-last :: ByteString -> Word8-tail :: ByteString -> ByteString-init :: ByteString -> ByteString-null :: ByteString -> Bool-length :: ByteString -> Int64-map :: (Word8 -> Word8) -> ByteString -> ByteString-reverse :: ByteString -> ByteString-intersperse :: Word8 -> ByteString -> ByteString-intercalate :: ByteString -> [ByteString] -> ByteString-transpose :: [ByteString] -> [ByteString]-foldl :: (a -> Word8 -> a) -> a -> ByteString -> a-foldl' :: (a -> Word8 -> a) -> a -> ByteString -> a-foldl1 :: (Word8 -> Word8 -> Word8) -> ByteString -> Word8-foldl1' :: (Word8 -> Word8 -> Word8) -> ByteString -> Word8-foldr :: (Word8 -> a -> a) -> a -> ByteString -> a-foldr1 :: (Word8 -> Word8 -> Word8) -> ByteString -> Word8-concat :: [ByteString] -> ByteString-concatMap :: (Word8 -> ByteString) -> ByteString -> ByteString-any :: (Word8 -> Bool) -> ByteString -> Bool-all :: (Word8 -> Bool) -> ByteString -> Bool-maximum :: ByteString -> Word8-minimum :: ByteString -> Word8-scanl :: (Word8 -> Word8 -> Word8) -> Word8 -> ByteString -> ByteString-mapAccumL :: (acc -> Word8 -> (acc, Word8)) -> acc -> ByteString -> (acc, ByteString)-mapAccumR :: (acc -> Word8 -> (acc, Word8)) -> acc -> ByteString -> (acc, ByteString)-mapIndexed :: (Int -> Word8 -> Word8) -> ByteString -> ByteString-repeat :: Word8 -> ByteString-replicate :: Int64 -> Word8 -> ByteString-cycle :: ByteString -> ByteString-iterate :: (Word8 -> Word8) -> Word8 -> ByteString-unfoldr :: (a -> Maybe (Word8, a)) -> a -> ByteString-take :: Int64 -> ByteString -> ByteString-drop :: Int64 -> ByteString -> ByteString-splitAt :: Int64 -> ByteString -> (ByteString, ByteString)-takeWhile :: (Word8 -> Bool) -> ByteString -> ByteString-dropWhile :: (Word8 -> Bool) -> ByteString -> ByteString-span :: (Word8 -> Bool) -> ByteString -> (ByteString, ByteString)-break :: (Word8 -> Bool) -> ByteString -> (ByteString, ByteString)-group :: ByteString -> [ByteString]-groupBy :: (Word8 -> Word8 -> Bool) -> ByteString -> [ByteString]-inits :: ByteString -> [ByteString]-tails :: ByteString -> [ByteString]-split :: Word8 -> ByteString -> [ByteString]-splitWith :: (Word8 -> Bool) -> ByteString -> [ByteString]-isPrefixOf :: ByteString -> ByteString -> Bool-isSuffixOf :: ByteString -> ByteString -> Bool-elem :: Word8 -> ByteString -> Bool-notElem :: Word8 -> ByteString -> Bool-find :: (Word8 -> Bool) -> ByteString -> Maybe Word8-filter :: (Word8 -> Bool) -> ByteString -> ByteString-partition :: (Word8 -> Bool) -> ByteString -> (ByteString, ByteString)-index :: ByteString -> Int64 -> Word8-elemIndex :: Word8 -> ByteString -> Maybe Int64-elemIndices :: Word8 -> ByteString -> [Int64]-findIndex :: (Word8 -> Bool) -> ByteString -> Maybe Int64-findIndices :: (Word8 -> Bool) -> ByteString -> [Int64]-count :: Word8 -> ByteString -> Int64-zip :: ByteString -> ByteString -> [(Word8, Word8)]-zipWith :: (Word8 -> Word8 -> a) -> ByteString -> ByteString -> [a]-unzip :: [(Word8, Word8)] -> (ByteString, ByteString)-copy :: ByteString -> ByteString-getContents :: IO ByteString-putStr :: ByteString -> IO ()-putStrLn :: ByteString -> IO ()-interact :: (ByteString -> ByteString) -> IO ()-readFile :: FilePath -> IO ByteString-writeFile :: FilePath -> ByteString -> IO ()-appendFile :: FilePath -> ByteString -> IO ()-hGetContents :: Handle -> IO ByteString-hGet :: Handle -> Int -> IO ByteString-hGetNonBlocking :: Handle -> Int -> IO ByteString-hPut :: Handle -> ByteString -> IO ()-hPutStr :: Handle -> ByteString -> IO ()--module Data.ByteString.Lazy.Char8-data ByteString-instance Data ByteString-instance Eq ByteString-instance Monoid ByteString-instance Ord ByteString-instance Read ByteString-instance Show ByteString-instance Typeable ByteString-empty :: ByteString-singleton :: Char -> ByteString-pack :: [Char] -> ByteString-unpack :: ByteString -> [Char]-fromChunks :: [ByteString] -> ByteString-toChunks :: ByteString -> [ByteString]-cons :: Char -> ByteString -> ByteString-cons' :: Char -> ByteString -> ByteString-snoc :: ByteString -> Char -> ByteString-append :: ByteString -> ByteString -> ByteString-head :: ByteString -> Char-uncons :: ByteString -> Maybe (Char, ByteString)-last :: ByteString -> Char-tail :: ByteString -> ByteString-init :: ByteString -> ByteString-null :: ByteString -> Bool-length :: ByteString -> Int64-map :: (Char -> Char) -> ByteString -> ByteString-reverse :: ByteString -> ByteString-intersperse :: Char -> ByteString -> ByteString-intercalate :: ByteString -> [ByteString] -> ByteString-transpose :: [ByteString] -> [ByteString]-foldl :: (a -> Char -> a) -> a -> ByteString -> a-foldl' :: (a -> Char -> a) -> a -> ByteString -> a-foldl1 :: (Char -> Char -> Char) -> ByteString -> Char-foldl1' :: (Char -> Char -> Char) -> ByteString -> Char-foldr :: (Char -> a -> a) -> a -> ByteString -> a-foldr1 :: (Char -> Char -> Char) -> ByteString -> Char-concat :: [ByteString] -> ByteString-concatMap :: (Char -> ByteString) -> ByteString -> ByteString-any :: (Char -> Bool) -> ByteString -> Bool-all :: (Char -> Bool) -> ByteString -> Bool-maximum :: ByteString -> Char-minimum :: ByteString -> Char-scanl :: (Char -> Char -> Char) -> Char -> ByteString -> ByteString-mapAccumL :: (acc -> Char -> (acc, Char)) -> acc -> ByteString -> (acc, ByteString)-mapIndexed :: (Int -> Char -> Char) -> ByteString -> ByteString-repeat :: Char -> ByteString-replicate :: Int64 -> Char -> ByteString-cycle :: ByteString -> ByteString-iterate :: (Char -> Char) -> Char -> ByteString-unfoldr :: (a -> Maybe (Char, a)) -> a -> ByteString-take :: Int64 -> ByteString -> ByteString-drop :: Int64 -> ByteString -> ByteString-splitAt :: Int64 -> ByteString -> (ByteString, ByteString)-takeWhile :: (Char -> Bool) -> ByteString -> ByteString-dropWhile :: (Char -> Bool) -> ByteString -> ByteString-span :: (Char -> Bool) -> ByteString -> (ByteString, ByteString)-break :: (Char -> Bool) -> ByteString -> (ByteString, ByteString)-group :: ByteString -> [ByteString]-groupBy :: (Char -> Char -> Bool) -> ByteString -> [ByteString]-inits :: ByteString -> [ByteString]-tails :: ByteString -> [ByteString]-split :: Char -> ByteString -> [ByteString]-splitWith :: (Char -> Bool) -> ByteString -> [ByteString]-lines :: ByteString -> [ByteString]-words :: ByteString -> [ByteString]-unlines :: [ByteString] -> ByteString-unwords :: [ByteString] -> ByteString-isPrefixOf :: ByteString -> ByteString -> Bool-elem :: Char -> ByteString -> Bool-notElem :: Char -> ByteString -> Bool-find :: (Char -> Bool) -> ByteString -> Maybe Char-filter :: (Char -> Bool) -> ByteString -> ByteString-index :: ByteString -> Int64 -> Char-elemIndex :: Char -> ByteString -> Maybe Int64-elemIndices :: Char -> ByteString -> [Int64]-findIndex :: (Char -> Bool) -> ByteString -> Maybe Int64-findIndices :: (Char -> Bool) -> ByteString -> [Int64]-count :: Char -> ByteString -> Int64-zip :: ByteString -> ByteString -> [(Char, Char)]-zipWith :: (Char -> Char -> a) -> ByteString -> ByteString -> [a]-copy :: ByteString -> ByteString-readInt :: ByteString -> Maybe (Int, ByteString)-readInteger :: ByteString -> Maybe (Integer, ByteString)-getContents :: IO ByteString-putStr :: ByteString -> IO ()-putStrLn :: ByteString -> IO ()-interact :: (ByteString -> ByteString) -> IO ()-readFile :: FilePath -> IO ByteString-writeFile :: FilePath -> ByteString -> IO ()-appendFile :: FilePath -> ByteString -> IO ()-hGetContents :: Handle -> IO ByteString-hGet :: Handle -> Int -> IO ByteString-hGetNonBlocking :: Handle -> Int -> IO ByteString-hPut :: Handle -> ByteString -> IO ()--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module Language.Haskell.Extension-data Extension-OverlappingInstances :: Extension-UndecidableInstances :: Extension-IncoherentInstances :: Extension-RecursiveDo :: Extension-ParallelListComp :: Extension-MultiParamTypeClasses :: Extension-NoMonomorphismRestriction :: Extension-FunctionalDependencies :: Extension-Rank2Types :: Extension-RankNTypes :: Extension-PolymorphicComponents :: Extension-ExistentialQuantification :: Extension-ScopedTypeVariables :: Extension-ImplicitParams :: Extension-FlexibleContexts :: Extension-FlexibleInstances :: Extension-EmptyDataDecls :: Extension-CPP :: Extension-KindSignatures :: Extension-BangPatterns :: Extension-TypeSynonymInstances :: Extension-TemplateHaskell :: Extension-ForeignFunctionInterface :: Extension-Arrows :: Extension-Generics :: Extension-NoImplicitPrelude :: Extension-NamedFieldPuns :: Extension-PatternGuards :: Extension-GeneralizedNewtypeDeriving :: Extension-ExtensibleRecords :: Extension-RestrictedTypeSynonyms :: Extension-HereDocuments :: Extension-MagicHash :: Extension-TypeFamilies :: Extension-StandaloneDeriving :: Extension-UnicodeSyntax :: Extension-PatternSignatures :: Extension-UnliftedFFITypes :: Extension-LiberalTypeSynonyms :: Extension-TypeOperators :: Extension-RecordWildCards :: Extension-RecordPuns :: Extension-DisambiguateRecordFields :: Extension-OverloadedStrings :: Extension-GADTs :: Extension-NoMonoPatBinds :: Extension-RelaxedPolyRec :: Extension-ExtendedDefaultRules :: Extension-UnboxedTuples :: Extension-DeriveDataTypeable :: Extension-ConstrainedClassMethods :: Extension-instance Eq Extension-instance Read Extension-instance Show Extension--module Distribution.Verbosity-data Verbosity-instance Eq Verbosity-instance Ord Verbosity-instance Show Verbosity-silent :: Verbosity-normal :: Verbosity-verbose :: Verbosity-deafening :: Verbosity-moreVerbose :: Verbosity -> Verbosity-lessVerbose :: Verbosity -> Verbosity-intToVerbosity :: Int -> Maybe Verbosity-flagToVerbosity :: Maybe String -> Verbosity-showForCabal :: Verbosity -> String-showForGHC :: Verbosity -> String--module Distribution.System-data OS-Linux :: OS-Windows :: Windows -> OS-OSX :: OS-Solaris :: OS-Other :: String -> OS-data Windows-MingW :: Windows-os :: OS--module Distribution.Simple.PreProcess.Unlit-unlit :: FilePath -> String -> String-plain :: String -> String -> String--module Distribution.Simple.GHC.Makefile-makefileTemplate :: String--module Distribution.License-data License-GPL :: License-LGPL :: License-BSD3 :: License-BSD4 :: License-PublicDomain :: License-AllRightsReserved :: License-OtherLicense :: License-instance Eq License-instance Read License-instance Show License--module Distribution.Extension-data Extension-OverlappingInstances :: Extension-UndecidableInstances :: Extension-IncoherentInstances :: Extension-RecursiveDo :: Extension-ParallelListComp :: Extension-MultiParamTypeClasses :: Extension-NoMonomorphismRestriction :: Extension-FunctionalDependencies :: Extension-Rank2Types :: Extension-RankNTypes :: Extension-PolymorphicComponents :: Extension-ExistentialQuantification :: Extension-ScopedTypeVariables :: Extension-ImplicitParams :: Extension-FlexibleContexts :: Extension-FlexibleInstances :: Extension-EmptyDataDecls :: Extension-CPP :: Extension-KindSignatures :: Extension-BangPatterns :: Extension-TypeSynonymInstances :: Extension-TemplateHaskell :: Extension-ForeignFunctionInterface :: Extension-Arrows :: Extension-Generics :: Extension-NoImplicitPrelude :: Extension-NamedFieldPuns :: Extension-PatternGuards :: Extension-GeneralizedNewtypeDeriving :: Extension-ExtensibleRecords :: Extension-RestrictedTypeSynonyms :: Extension-HereDocuments :: Extension-MagicHash :: Extension-TypeFamilies :: Extension-StandaloneDeriving :: Extension-UnicodeSyntax :: Extension-PatternSignatures :: Extension-UnliftedFFITypes :: Extension-LiberalTypeSynonyms :: Extension-TypeOperators :: Extension-RecordWildCards :: Extension-RecordPuns :: Extension-DisambiguateRecordFields :: Extension-OverloadedStrings :: Extension-GADTs :: Extension-NoMonoPatBinds :: Extension-RelaxedPolyRec :: Extension-ExtendedDefaultRules :: Extension-UnboxedTuples :: Extension-DeriveDataTypeable :: Extension-ConstrainedClassMethods :: Extension-instance Eq Extension-instance Read Extension-instance Show Extension--module Distribution.Compiler-data CompilerFlavor-GHC :: CompilerFlavor-NHC :: CompilerFlavor-Hugs :: CompilerFlavor-HBC :: CompilerFlavor-Helium :: CompilerFlavor-JHC :: CompilerFlavor-OtherCompiler :: String -> CompilerFlavor-instance Eq CompilerFlavor-instance Ord CompilerFlavor-instance Read CompilerFlavor-instance Show CompilerFlavor-defaultCompilerFlavor :: Maybe CompilerFlavor--module Distribution.Compat.ReadP-type ReadP r a = ReadP a--module Distribution.Version-readVersion :: String -> Maybe Version-data VersionRange-AnyVersion :: VersionRange-ThisVersion :: Version -> VersionRange-LaterVersion :: Version -> VersionRange-EarlierVersion :: Version -> VersionRange-UnionVersionRanges :: VersionRange -> VersionRange -> VersionRange-IntersectVersionRanges :: VersionRange -> VersionRange -> VersionRange-instance Eq VersionRange-instance Read VersionRange-instance Show VersionRange-orLaterVersion :: Version -> VersionRange-orEarlierVersion :: Version -> VersionRange-betweenVersionsInclusive :: Version -> Version -> VersionRange-withinRange :: Version -> VersionRange -> Bool-showVersionRange :: VersionRange -> String-parseVersionRange :: ReadP r VersionRange-isAnyVersion :: VersionRange -> Bool-data Dependency-Dependency :: String -> VersionRange -> Dependency-instance Eq Dependency-instance Read Dependency-instance Show Dependency--module Distribution.Configuration-data Flag-MkFlag :: String -> String -> Bool -> Flag-flagName :: Flag -> String-flagDescription :: Flag -> String-flagDefault :: Flag -> Bool-instance Show Flag-data ConfVar-OS :: String -> ConfVar-Arch :: String -> ConfVar-Flag :: ConfFlag -> ConfVar-Impl :: String -> VersionRange -> ConfVar-instance Eq ConfVar-instance Show ConfVar-data Condition c-Var :: c -> Condition c-Lit :: Bool -> Condition c-CNot :: Condition c -> Condition c-COr :: Condition c -> Condition c -> Condition c-CAnd :: Condition c -> Condition c -> Condition c-instance Show c => Show (Condition c)-parseCondition :: ReadP r (Condition ConfVar)-simplifyCondition :: Condition c -> (c -> Either d Bool) -> (Condition d, [d])-data CondTree v c a-CondNode :: a -> c -> [(Condition v, CondTree v c a, Maybe (CondTree v c a))] -> CondTree v c a-condTreeData :: CondTree v c a -> a-condTreeConstraints :: CondTree v c a -> c-condTreeComponents :: CondTree v c a -> [(Condition v, CondTree v c a, Maybe (CondTree v c a))]-instance (Show v, Show c) => Show (CondTree v c a)-ppCondTree :: Show v => CondTree v c a -> (c -> Doc) -> Doc-mapTreeData :: (a -> b) -> CondTree v c a -> CondTree v c b-resolveWithFlags :: Monoid a => [(String, [Bool])] -> String -> String -> (String, Version) -> [CondTree ConfVar [d] a] -> ([d] -> DepTestRslt [d]) -> Either [d] ([a], [d], [(String, Bool)])-ignoreConditions :: (Monoid a, Monoid c) => CondTree v c a -> (a, c)-data DepTestRslt d-DepOk :: DepTestRslt d-MissingDeps :: d -> DepTestRslt d-instance Monoid d => Monoid (DepTestRslt d)--module Distribution.Package-data PackageIdentifier-PackageIdentifier :: String -> Version -> PackageIdentifier-pkgName :: PackageIdentifier -> String-pkgVersion :: PackageIdentifier -> Version-instance Eq PackageIdentifier-instance Ord PackageIdentifier-instance Read PackageIdentifier-instance Show PackageIdentifier-showPackageId :: PackageIdentifier -> String-parsePackageId :: ReadP r PackageIdentifier-parsePackageName :: ReadP r String--module Distribution.InstalledPackageInfo-data InstalledPackageInfo_ m-InstalledPackageInfo_ :: PackageIdentifier -> License -> String -> String -> String -> String -> String -> String -> String -> String -> Bool -> [m] -> [m] -> [FilePath] -> [FilePath] -> [String] -> [String] -> [String] -> [FilePath] -> [String] -> [PackageIdentifier] -> [String] -> [String] -> [String] -> [FilePath] -> [String] -> [FilePath] -> [FilePath] -> InstalledPackageInfo_ m-package :: InstalledPackageInfo_ m -> PackageIdentifier-license :: InstalledPackageInfo_ m -> License-copyright :: InstalledPackageInfo_ m -> String-maintainer :: InstalledPackageInfo_ m -> String-author :: InstalledPackageInfo_ m -> String-stability :: InstalledPackageInfo_ m -> String-homepage :: InstalledPackageInfo_ m -> String-pkgUrl :: InstalledPackageInfo_ m -> String-description :: InstalledPackageInfo_ m -> String-category :: InstalledPackageInfo_ m -> String-exposed :: InstalledPackageInfo_ m -> Bool-exposedModules :: InstalledPackageInfo_ m -> [m]-hiddenModules :: InstalledPackageInfo_ m -> [m]-importDirs :: InstalledPackageInfo_ m -> [FilePath]-libraryDirs :: InstalledPackageInfo_ m -> [FilePath]-hsLibraries :: InstalledPackageInfo_ m -> [String]-extraLibraries :: InstalledPackageInfo_ m -> [String]-extraGHCiLibraries :: InstalledPackageInfo_ m -> [String]-includeDirs :: InstalledPackageInfo_ m -> [FilePath]-includes :: InstalledPackageInfo_ m -> [String]-depends :: InstalledPackageInfo_ m -> [PackageIdentifier]-hugsOptions :: InstalledPackageInfo_ m -> [String]-ccOptions :: InstalledPackageInfo_ m -> [String]-ldOptions :: InstalledPackageInfo_ m -> [String]-frameworkDirs :: InstalledPackageInfo_ m -> [FilePath]-frameworks :: InstalledPackageInfo_ m -> [String]-haddockInterfaces :: InstalledPackageInfo_ m -> [FilePath]-haddockHTMLs :: InstalledPackageInfo_ m -> [FilePath]-instance ??? m => Read (InstalledPackageInfo_ m)-instance ??? m => Show (InstalledPackageInfo_ m)-type InstalledPackageInfo = InstalledPackageInfo_ String-data ParseResult a-ParseFailed :: PError -> ParseResult a-ParseOk :: [PWarning] -> a -> ParseResult a-instance Monad ParseResult-instance Show a => Show (ParseResult a)-data PError-AmbigousParse :: String -> LineNo -> PError-NoParse :: String -> LineNo -> PError-TabsError :: LineNo -> PError-FromString :: String -> Maybe LineNo -> PError-instance Show PError-type PWarning = String-emptyInstalledPackageInfo :: InstalledPackageInfo_ m-parseInstalledPackageInfo :: String -> ParseResult InstalledPackageInfo-showInstalledPackageInfo :: InstalledPackageInfo -> String-showInstalledPackageInfoField :: String -> Maybe (InstalledPackageInfo -> String)--module Distribution.Simple.Compiler-data Compiler-Compiler :: CompilerFlavor -> PackageIdentifier -> [(Extension, Flag)] -> Compiler-compilerFlavor :: Compiler -> CompilerFlavor-compilerId :: Compiler -> PackageIdentifier-compilerExtensions :: Compiler -> [(Extension, Flag)]-instance Read Compiler-instance Show Compiler-showCompilerId :: Compiler -> String-compilerVersion :: Compiler -> Version-data PackageDB-GlobalPackageDB :: PackageDB-UserPackageDB :: PackageDB-SpecificPackageDB :: FilePath -> PackageDB-instance Read PackageDB-instance Show PackageDB-type Flag = String-extensionsToFlags :: Compiler -> [Extension] -> [Flag]-unsupportedExtensions :: Compiler -> [Extension] -> [Extension]--module Distribution.Simple.Utils-die :: String -> IO a-dieWithLocation :: FilePath -> Maybe Int -> String -> IO a-warn :: Verbosity -> String -> IO ()-notice :: Verbosity -> String -> IO ()-info :: Verbosity -> String -> IO ()-debug :: Verbosity -> String -> IO ()-breaks :: (a -> Bool) -> [a] -> [[a]]-wrapText :: Int -> [String] -> [String]-rawSystemExit :: Verbosity -> FilePath -> [String] -> IO ()-rawSystemStdout :: Verbosity -> FilePath -> [String] -> IO String-rawSystemStdout' :: Verbosity -> FilePath -> [String] -> IO (String, ExitCode)-maybeExit :: IO ExitCode -> IO ()-xargs :: Int -> ([String] -> IO ()) -> [String] -> [String] -> IO ()-matchesDescFile :: FilePath -> Bool-rawSystemPathExit :: Verbosity -> String -> [String] -> IO ()-smartCopySources :: Verbosity -> [FilePath] -> FilePath -> [String] -> [String] -> Bool -> Bool -> IO ()-createDirectoryIfMissingVerbose :: Verbosity -> Bool -> FilePath -> IO ()-copyFileVerbose :: Verbosity -> FilePath -> FilePath -> IO ()-copyDirectoryRecursiveVerbose :: Verbosity -> FilePath -> FilePath -> IO ()-moduleToFilePath :: [FilePath] -> String -> [String] -> IO [FilePath]-moduleToFilePath2 :: [FilePath] -> String -> [String] -> IO [(FilePath, FilePath)]-mkLibName :: FilePath -> String -> String-mkProfLibName :: FilePath -> String -> String-mkSharedLibName :: FilePath -> String -> PackageIdentifier -> String-currentDir :: FilePath-dotToSep :: String -> String-findFile :: [FilePath] -> FilePath -> IO FilePath-defaultPackageDesc :: Verbosity -> IO FilePath-findPackageDesc :: Verbosity -> FilePath -> IO FilePath-defaultHookedPackageDesc :: IO (Maybe FilePath)-findHookedPackageDesc :: FilePath -> IO (Maybe FilePath)-exeExtension :: String-objExtension :: String-dllExtension :: String--module Distribution.PackageDescription-data PackageDescription-PackageDescription :: PackageIdentifier -> License -> FilePath -> String -> String -> String -> String -> [(CompilerFlavor, VersionRange)] -> String -> String -> String -> String -> String -> [Dependency] -> VersionRange -> BuildType -> Maybe Library -> [Executable] -> [FilePath] -> [FilePath] -> [FilePath] -> PackageDescription-package :: PackageDescription -> PackageIdentifier-license :: PackageDescription -> License-licenseFile :: PackageDescription -> FilePath-copyright :: PackageDescription -> String-maintainer :: PackageDescription -> String-author :: PackageDescription -> String-stability :: PackageDescription -> String-testedWith :: PackageDescription -> [(CompilerFlavor, VersionRange)]-homepage :: PackageDescription -> String-pkgUrl :: PackageDescription -> String-synopsis :: PackageDescription -> String-description :: PackageDescription -> String-category :: PackageDescription -> String-buildDepends :: PackageDescription -> [Dependency]-descCabalVersion :: PackageDescription -> VersionRange-buildType :: PackageDescription -> BuildType-library :: PackageDescription -> Maybe Library-executables :: PackageDescription -> [Executable]-dataFiles :: PackageDescription -> [FilePath]-extraSrcFiles :: PackageDescription -> [FilePath]-extraTmpFiles :: PackageDescription -> [FilePath]-instance Eq PackageDescription-instance Read PackageDescription-instance Show PackageDescription-data GenericPackageDescription-GenericPackageDescription :: PackageDescription -> [Flag] -> Maybe (CondTree ConfVar [Dependency] Library) -> [(String, CondTree ConfVar [Dependency] Executable)] -> GenericPackageDescription-packageDescription :: GenericPackageDescription -> PackageDescription-genPackageFlags :: GenericPackageDescription -> [Flag]-condLibrary :: GenericPackageDescription -> Maybe (CondTree ConfVar [Dependency] Library)-condExecutables :: GenericPackageDescription -> [(String, CondTree ConfVar [Dependency] Executable)]-instance Show GenericPackageDescription-finalizePackageDescription :: [(String, Bool)] -> Maybe [PackageIdentifier] -> String -> String -> (String, Version) -> GenericPackageDescription -> Either [Dependency] (PackageDescription, [(String, Bool)])-flattenPackageDescription :: GenericPackageDescription -> PackageDescription-emptyPackageDescription :: PackageDescription-readPackageDescription :: Verbosity -> FilePath -> IO GenericPackageDescription-writePackageDescription :: FilePath -> PackageDescription -> IO ()-parsePackageDescription :: String -> ParseResult GenericPackageDescription-showPackageDescription :: PackageDescription -> String-data BuildType-Simple :: BuildType-Configure :: BuildType-Make :: BuildType-Custom :: BuildType-instance Eq BuildType-instance Read BuildType-instance Show BuildType-data Library-Library :: [String] -> BuildInfo -> Library-exposedModules :: Library -> [String]-libBuildInfo :: Library -> BuildInfo-instance Eq Library-instance Monoid Library-instance Read Library-instance Show Library-withLib :: PackageDescription -> a -> (Library -> IO a) -> IO a-hasLibs :: PackageDescription -> Bool-libModules :: PackageDescription -> [String]-data Executable-Executable :: String -> FilePath -> BuildInfo -> Executable-exeName :: Executable -> String-modulePath :: Executable -> FilePath-buildInfo :: Executable -> BuildInfo-instance Eq Executable-instance Monoid Executable-instance Read Executable-instance Show Executable-withExe :: PackageDescription -> (Executable -> IO a) -> IO ()-hasExes :: PackageDescription -> Bool-exeModules :: PackageDescription -> [String]-data FieldDescr a-FieldDescr :: String -> (a -> Doc) -> (LineNo -> String -> a -> ParseResult a) -> FieldDescr a-fieldName :: FieldDescr a -> String-fieldGet :: FieldDescr a -> a -> Doc-fieldSet :: FieldDescr a -> LineNo -> String -> a -> ParseResult a-type LineNo = Int-sanityCheckPackage :: PackageDescription -> IO ([String], [String])-data BuildInfo-BuildInfo :: Bool -> [Dependency] -> [String] -> [String] -> [String] -> [Dependency] -> [String] -> [FilePath] -> [FilePath] -> [String] -> [Extension] -> [String] -> [String] -> [FilePath] -> [FilePath] -> [FilePath] -> [(CompilerFlavor, [String])] -> [String] -> [String] -> BuildInfo-buildable :: BuildInfo -> Bool-buildTools :: BuildInfo -> [Dependency]-cppOptions :: BuildInfo -> [String]-ccOptions :: BuildInfo -> [String]-ldOptions :: BuildInfo -> [String]-pkgconfigDepends :: BuildInfo -> [Dependency]-frameworks :: BuildInfo -> [String]-cSources :: BuildInfo -> [FilePath]-hsSourceDirs :: BuildInfo -> [FilePath]-otherModules :: BuildInfo -> [String]-extensions :: BuildInfo -> [Extension]-extraLibs :: BuildInfo -> [String]-extraLibDirs :: BuildInfo -> [String]-includeDirs :: BuildInfo -> [FilePath]-includes :: BuildInfo -> [FilePath]-installIncludes :: BuildInfo -> [FilePath]-options :: BuildInfo -> [(CompilerFlavor, [String])]-ghcProfOptions :: BuildInfo -> [String]-ghcSharedOptions :: BuildInfo -> [String]-instance Eq BuildInfo-instance Read BuildInfo-instance Show BuildInfo-emptyBuildInfo :: BuildInfo-allBuildInfo :: PackageDescription -> [BuildInfo]-type HookedBuildInfo = (Maybe BuildInfo, [(String, BuildInfo)])-emptyHookedBuildInfo :: HookedBuildInfo-readHookedBuildInfo :: Verbosity -> FilePath -> IO HookedBuildInfo-parseHookedBuildInfo :: String -> ParseResult HookedBuildInfo-writeHookedBuildInfo :: FilePath -> HookedBuildInfo -> IO ()-showHookedBuildInfo :: HookedBuildInfo -> String-updatePackageDescription :: HookedBuildInfo -> PackageDescription -> PackageDescription-satisfyDependency :: [PackageIdentifier] -> Dependency -> Maybe PackageIdentifier-data ParseResult a-ParseFailed :: PError -> ParseResult a-ParseOk :: [PWarning] -> a -> ParseResult a-instance Monad ParseResult-instance Show a => Show (ParseResult a)-hcOptions :: CompilerFlavor -> [(CompilerFlavor, [String])] -> [String]-autogenModuleName :: PackageDescription -> String-haddockName :: PackageDescription -> FilePath-setupMessage :: Verbosity -> String -> PackageDescription -> IO ()-cabalVersion :: Version--module Distribution.Simple.Program-data Program-Program :: String -> (Verbosity -> IO (Maybe FilePath)) -> (Verbosity -> FilePath -> IO (Maybe Version)) -> Program-programName :: Program -> String-programFindLocation :: Program -> Verbosity -> IO (Maybe FilePath)-programFindVersion :: Program -> Verbosity -> FilePath -> IO (Maybe Version)-simpleProgram :: String -> Program-findProgramOnPath :: FilePath -> Verbosity -> IO (Maybe FilePath)-findProgramVersion :: ProgArg -> (String -> String) -> Verbosity -> FilePath -> IO (Maybe Version)-data ConfiguredProgram-ConfiguredProgram :: String -> Maybe Version -> [ProgArg] -> ProgramLocation -> ConfiguredProgram-programId :: ConfiguredProgram -> String-programVersion :: ConfiguredProgram -> Maybe Version-programArgs :: ConfiguredProgram -> [ProgArg]-programLocation :: ConfiguredProgram -> ProgramLocation-instance Read ConfiguredProgram-instance Show ConfiguredProgram-programPath :: ConfiguredProgram -> FilePath-type ProgArg = String-data ProgramLocation-UserSpecified :: FilePath -> ProgramLocation-locationPath :: ProgramLocation -> FilePath-FoundOnSystem :: FilePath -> ProgramLocation-locationPath :: ProgramLocation -> FilePath-instance Read ProgramLocation-instance Show ProgramLocation-rawSystemProgram :: Verbosity -> ConfiguredProgram -> [ProgArg] -> IO ()-rawSystemProgramStdout :: Verbosity -> ConfiguredProgram -> [ProgArg] -> IO String-builtinPrograms :: [Program]-data ProgramConfiguration-instance Read ProgramConfiguration-instance Show ProgramConfiguration-emptyProgramConfiguration :: ProgramConfiguration-defaultProgramConfiguration :: ProgramConfiguration-addKnownProgram :: Program -> ProgramConfiguration -> ProgramConfiguration-lookupKnownProgram :: String -> ProgramConfiguration -> Maybe Program-knownPrograms :: ProgramConfiguration -> [(Program, Maybe ConfiguredProgram)]-userSpecifyPath :: String -> FilePath -> ProgramConfiguration -> ProgramConfiguration-userMaybeSpecifyPath :: String -> Maybe FilePath -> ProgramConfiguration -> ProgramConfiguration-userSpecifyArgs :: String -> [ProgArg] -> ProgramConfiguration -> ProgramConfiguration-lookupProgram :: Program -> ProgramConfiguration -> Maybe ConfiguredProgram-updateProgram :: ConfiguredProgram -> ProgramConfiguration -> ProgramConfiguration-configureAllKnownPrograms :: Verbosity -> ProgramConfiguration -> IO ProgramConfiguration-requireProgram :: Verbosity -> Program -> VersionRange -> ProgramConfiguration -> IO (ConfiguredProgram, ProgramConfiguration)-rawSystemProgramConf :: Verbosity -> Program -> ProgramConfiguration -> [ProgArg] -> IO ()-rawSystemProgramStdoutConf :: Verbosity -> Program -> ProgramConfiguration -> [ProgArg] -> IO String-ghcProgram :: Program-ghcPkgProgram :: Program-nhcProgram :: Program-hmakeProgram :: Program-jhcProgram :: Program-hugsProgram :: Program-ffihugsProgram :: Program-ranlibProgram :: Program-arProgram :: Program-happyProgram :: Program-alexProgram :: Program-hsc2hsProgram :: Program-c2hsProgram :: Program-cpphsProgram :: Program-hscolourProgram :: Program-haddockProgram :: Program-greencardProgram :: Program-ldProgram :: Program-tarProgram :: Program-cppProgram :: Program-pfesetupProgram :: Program-pkgConfigProgram :: Program--module Distribution.Simple.Setup-data Action-ConfigCmd :: ConfigFlags -> Action-BuildCmd :: Action-CleanCmd :: Action-CopyCmd :: CopyDest -> Action-HscolourCmd :: Action-HaddockCmd :: Action-ProgramaticaCmd :: Action-InstallCmd :: Action-SDistCmd :: Action-MakefileCmd :: Action-TestCmd :: Action-RegisterCmd :: Action-UnregisterCmd :: Action-HelpCmd :: Action-instance Show Action-data ConfigFlags-ConfigFlags :: ProgramConfiguration -> Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath -> Bool -> Bool -> Bool -> Bool -> [String] -> Bool -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Verbosity -> PackageDB -> Bool -> Bool -> [(String, Bool)] -> ConfigFlags-configPrograms :: ConfigFlags -> ProgramConfiguration-configHcFlavor :: ConfigFlags -> Maybe CompilerFlavor-configHcPath :: ConfigFlags -> Maybe FilePath-configHcPkg :: ConfigFlags -> Maybe FilePath-configVanillaLib :: ConfigFlags -> Bool-configProfLib :: ConfigFlags -> Bool-configSharedLib :: ConfigFlags -> Bool-configProfExe :: ConfigFlags -> Bool-configConfigureArgs :: ConfigFlags -> [String]-configOptimization :: ConfigFlags -> Bool-configPrefix :: ConfigFlags -> Maybe FilePath-configBinDir :: ConfigFlags -> Maybe FilePath-configLibDir :: ConfigFlags -> Maybe FilePath-configLibSubDir :: ConfigFlags -> Maybe FilePath-configLibExecDir :: ConfigFlags -> Maybe FilePath-configDataDir :: ConfigFlags -> Maybe FilePath-configDataSubDir :: ConfigFlags -> Maybe FilePath-configDocDir :: ConfigFlags -> Maybe FilePath-configHtmlDir :: ConfigFlags -> Maybe FilePath-configInterfaceDir :: ConfigFlags -> Maybe FilePath-configVerbose :: ConfigFlags -> Verbosity-configPackageDB :: ConfigFlags -> PackageDB-configGHCiLib :: ConfigFlags -> Bool-configSplitObjs :: ConfigFlags -> Bool-configConfigurationsFlags :: ConfigFlags -> [(String, Bool)]-instance Show ConfigFlags-emptyConfigFlags :: ProgramConfiguration -> ConfigFlags-configureArgs :: ConfigFlags -> [String]-data CopyFlags-CopyFlags :: CopyDest -> Verbosity -> CopyFlags-copyDest :: CopyFlags -> CopyDest-copyVerbose :: CopyFlags -> Verbosity-instance Show CopyFlags-data CopyDest-NoCopyDest :: CopyDest-CopyTo :: FilePath -> CopyDest-CopyPrefix :: FilePath -> CopyDest-instance Eq CopyDest-instance Show CopyDest-emptyCopyFlags :: CopyDest -> CopyFlags-data InstallFlags-InstallFlags :: Maybe PackageDB -> Verbosity -> InstallFlags-installPackageDB :: InstallFlags -> Maybe PackageDB-installVerbose :: InstallFlags -> Verbosity-instance Show InstallFlags-emptyInstallFlags :: InstallFlags-data HaddockFlags-HaddockFlags :: Bool -> Maybe String -> Bool -> Maybe FilePath -> Bool -> Maybe FilePath -> Verbosity -> HaddockFlags-haddockHoogle :: HaddockFlags -> Bool-haddockHtmlLocation :: HaddockFlags -> Maybe String-haddockExecutables :: HaddockFlags -> Bool-haddockCss :: HaddockFlags -> Maybe FilePath-haddockHscolour :: HaddockFlags -> Bool-haddockHscolourCss :: HaddockFlags -> Maybe FilePath-haddockVerbose :: HaddockFlags -> Verbosity-instance Show HaddockFlags-emptyHaddockFlags :: HaddockFlags-data HscolourFlags-HscolourFlags :: Maybe FilePath -> Bool -> Verbosity -> HscolourFlags-hscolourCSS :: HscolourFlags -> Maybe FilePath-hscolourExecutables :: HscolourFlags -> Bool-hscolourVerbose :: HscolourFlags -> Verbosity-instance Show HscolourFlags-emptyHscolourFlags :: HscolourFlags-data BuildFlags-BuildFlags :: Verbosity -> ProgramConfiguration -> BuildFlags-buildVerbose :: BuildFlags -> Verbosity-buildPrograms :: BuildFlags -> ProgramConfiguration-instance Show BuildFlags-emptyBuildFlags :: ProgramConfiguration -> BuildFlags-data CleanFlags-CleanFlags :: Bool -> Verbosity -> CleanFlags-cleanSaveConf :: CleanFlags -> Bool-cleanVerbose :: CleanFlags -> Verbosity-instance Show CleanFlags-emptyCleanFlags :: CleanFlags-data PFEFlags-PFEFlags :: Verbosity -> PFEFlags-pfeVerbose :: PFEFlags -> Verbosity-instance Show PFEFlags-data MakefileFlags-MakefileFlags :: Verbosity -> Maybe FilePath -> MakefileFlags-makefileVerbose :: MakefileFlags -> Verbosity-makefileFile :: MakefileFlags -> Maybe FilePath-instance Show MakefileFlags-emptyMakefileFlags :: MakefileFlags-data RegisterFlags-RegisterFlags :: Maybe PackageDB -> Bool -> Bool -> Maybe FilePath -> Bool -> Verbosity -> RegisterFlags-regPackageDB :: RegisterFlags -> Maybe PackageDB-regGenScript :: RegisterFlags -> Bool-regGenPkgConf :: RegisterFlags -> Bool-regPkgConfFile :: RegisterFlags -> Maybe FilePath-regInPlace :: RegisterFlags -> Bool-regVerbose :: RegisterFlags -> Verbosity-instance Show RegisterFlags-emptyRegisterFlags :: RegisterFlags-data SDistFlags-SDistFlags :: Bool -> Verbosity -> SDistFlags-sDistSnapshot :: SDistFlags -> Bool-sDistVerbose :: SDistFlags -> Verbosity-instance Show SDistFlags-parseGlobalArgs :: ProgramConfiguration -> [String] -> IO (Action, [String])-parseConfigureArgs :: ProgramConfiguration -> ConfigFlags -> [String] -> [OptDescr a] -> IO (ConfigFlags, [a], [String])-parseBuildArgs :: ProgramConfiguration -> BuildFlags -> [String] -> [OptDescr a] -> IO (BuildFlags, [a], [String])-parseCleanArgs :: CleanFlags -> [String] -> [OptDescr a] -> IO (CleanFlags, [a], [String])-parseMakefileArgs :: MakefileFlags -> [String] -> [OptDescr a] -> IO (MakefileFlags, [a], [String])-parseHscolourArgs :: HscolourFlags -> [String] -> [OptDescr a] -> IO (HscolourFlags, [a], [String])-parseHaddockArgs :: HaddockFlags -> [String] -> [OptDescr a] -> IO (HaddockFlags, [a], [String])-parseProgramaticaArgs :: [String] -> [OptDescr a] -> IO (PFEFlags, [a], [String])-parseTestArgs :: [String] -> [OptDescr a] -> IO (Verbosity, [a], [String])-parseInstallArgs :: InstallFlags -> [String] -> [OptDescr a] -> IO (InstallFlags, [a], [String])-parseSDistArgs :: [String] -> [OptDescr a] -> IO (SDistFlags, [a], [String])-parseRegisterArgs :: RegisterFlags -> [String] -> [OptDescr a] -> IO (RegisterFlags, [a], [String])-parseUnregisterArgs :: RegisterFlags -> [String] -> [OptDescr a] -> IO (RegisterFlags, [a], [String])-parseCopyArgs :: CopyFlags -> [String] -> [OptDescr a] -> IO (CopyFlags, [a], [String])-reqPathArg :: (FilePath -> a) -> ArgDescr a-reqDirArg :: (FilePath -> a) -> ArgDescr a--module Distribution.Make-data License-GPL :: License-LGPL :: License-BSD3 :: License-BSD4 :: License-PublicDomain :: License-AllRightsReserved :: License-OtherLicense :: License-instance Eq License-instance Read License-instance Show License-defaultMain :: IO ()-defaultMainArgs :: [String] -> IO ()-defaultMainNoRead :: PackageDescription -> IO ()--module Distribution.Simple.InstallDirs-data InstallDirs dir-InstallDirs :: dir -> dir -> dir -> dir -> dir -> dir -> dir -> dir -> dir -> dir -> dir -> InstallDirs dir-prefix :: InstallDirs dir -> dir-bindir :: InstallDirs dir -> dir-libdir :: InstallDirs dir -> dir-dynlibdir :: InstallDirs dir -> dir-libexecdir :: InstallDirs dir -> dir-progdir :: InstallDirs dir -> dir-includedir :: InstallDirs dir -> dir-datadir :: InstallDirs dir -> dir-docdir :: InstallDirs dir -> dir-htmldir :: InstallDirs dir -> dir-interfacedir :: InstallDirs dir -> dir-instance Read dir => Read (InstallDirs dir)-instance Show dir => Show (InstallDirs dir)-haddockdir :: InstallDirs FilePath -> PackageDescription -> FilePath-haddockinterfacedir :: InstallDirs FilePath -> PackageDescription -> FilePath-data InstallDirTemplates-InstallDirTemplates :: PathTemplate -> PathTemplate -> PathTemplate -> PathTemplate -> PathTemplate -> PathTemplate -> PathTemplate -> PathTemplate -> PathTemplate -> PathTemplate -> PathTemplate -> PathTemplate -> InstallDirTemplates-prefixDirTemplate :: InstallDirTemplates -> PathTemplate-binDirTemplate :: InstallDirTemplates -> PathTemplate-libDirTemplate :: InstallDirTemplates -> PathTemplate-libSubdirTemplate :: InstallDirTemplates -> PathTemplate-libexecDirTemplate :: InstallDirTemplates -> PathTemplate-progDirTemplate :: InstallDirTemplates -> PathTemplate-includeDirTemplate :: InstallDirTemplates -> PathTemplate-dataDirTemplate :: InstallDirTemplates -> PathTemplate-dataSubdirTemplate :: InstallDirTemplates -> PathTemplate-docDirTemplate :: InstallDirTemplates -> PathTemplate-htmlDirTemplate :: InstallDirTemplates -> PathTemplate-interfaceDirTemplate :: InstallDirTemplates -> PathTemplate-instance Read InstallDirTemplates-instance Show InstallDirTemplates-defaultInstallDirs :: CompilerFlavor -> Bool -> IO InstallDirTemplates-absoluteInstallDirs :: PackageIdentifier -> PackageIdentifier -> CopyDest -> InstallDirTemplates -> InstallDirs FilePath-prefixRelativeInstallDirs :: PackageIdentifier -> PackageIdentifier -> InstallDirTemplates -> InstallDirs (Maybe FilePath)-data PathTemplate-instance Read PathTemplate-instance Show PathTemplate-data PathTemplateVariable-PrefixVar :: PathTemplateVariable-BinDirVar :: PathTemplateVariable-LibDirVar :: PathTemplateVariable-LibSubdirVar :: PathTemplateVariable-DataDirVar :: PathTemplateVariable-DataSubdirVar :: PathTemplateVariable-DocDirVar :: PathTemplateVariable-PkgNameVar :: PathTemplateVariable-PkgVerVar :: PathTemplateVariable-PkgIdVar :: PathTemplateVariable-CompilerVar :: PathTemplateVariable-instance Eq PathTemplateVariable-instance Read PathTemplateVariable-instance Show PathTemplateVariable-toPathTemplate :: FilePath -> PathTemplate-fromPathTemplate :: PathTemplate -> FilePath-substPathTemplate :: [(PathTemplateVariable, PathTemplate)] -> PathTemplate -> PathTemplate-initialPathTemplateEnv :: PackageIdentifier -> PackageIdentifier -> [(PathTemplateVariable, PathTemplate)]--module Distribution.Simple.LocalBuildInfo-data LocalBuildInfo-LocalBuildInfo :: InstallDirTemplates -> Compiler -> FilePath -> FilePath -> [PackageIdentifier] -> Maybe FilePath -> PackageDescription -> ProgramConfiguration -> PackageDB -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> LocalBuildInfo-installDirTemplates :: LocalBuildInfo -> InstallDirTemplates-compiler :: LocalBuildInfo -> Compiler-buildDir :: LocalBuildInfo -> FilePath-scratchDir :: LocalBuildInfo -> FilePath-packageDeps :: LocalBuildInfo -> [PackageIdentifier]-pkgDescrFile :: LocalBuildInfo -> Maybe FilePath-localPkgDescr :: LocalBuildInfo -> PackageDescription-withPrograms :: LocalBuildInfo -> ProgramConfiguration-withPackageDB :: LocalBuildInfo -> PackageDB-withVanillaLib :: LocalBuildInfo -> Bool-withProfLib :: LocalBuildInfo -> Bool-withSharedLib :: LocalBuildInfo -> Bool-withProfExe :: LocalBuildInfo -> Bool-withOptimization :: LocalBuildInfo -> Bool-withGHCiLib :: LocalBuildInfo -> Bool-splitObjs :: LocalBuildInfo -> Bool-instance Read LocalBuildInfo-instance Show LocalBuildInfo-absoluteInstallDirs :: PackageDescription -> LocalBuildInfo -> CopyDest -> InstallDirs FilePath-prefixRelativeInstallDirs :: PackageDescription -> LocalBuildInfo -> InstallDirs (Maybe FilePath)-mkLibDir :: PackageDescription -> LocalBuildInfo -> CopyDest -> FilePath-mkBinDir :: PackageDescription -> LocalBuildInfo -> CopyDest -> FilePath-mkLibexecDir :: PackageDescription -> LocalBuildInfo -> CopyDest -> FilePath-mkDataDir :: PackageDescription -> LocalBuildInfo -> CopyDest -> FilePath-distPref :: FilePath-srcPref :: FilePath-hscolourPref :: PackageDescription -> FilePath-haddockPref :: PackageDescription -> FilePath-autogenModulesDir :: LocalBuildInfo -> String--module Distribution.Simple.GHC.PackageConfig-data GHCPackageConfig-GHCPackage :: String -> Bool -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> GHCPackageConfig-name :: GHCPackageConfig -> String-auto :: GHCPackageConfig -> Bool-import_dirs :: GHCPackageConfig -> [String]-source_dirs :: GHCPackageConfig -> [String]-library_dirs :: GHCPackageConfig -> [String]-hs_libraries :: GHCPackageConfig -> [String]-extra_libraries :: GHCPackageConfig -> [String]-include_dirs :: GHCPackageConfig -> [String]-c_includes :: GHCPackageConfig -> [String]-package_deps :: GHCPackageConfig -> [String]-extra_ghc_opts :: GHCPackageConfig -> [String]-extra_cc_opts :: GHCPackageConfig -> [String]-extra_ld_opts :: GHCPackageConfig -> [String]-framework_dirs :: GHCPackageConfig -> [String]-extra_frameworks :: GHCPackageConfig -> [String]-mkGHCPackageConfig :: PackageDescription -> LocalBuildInfo -> GHCPackageConfig-defaultGHCPackageConfig :: GHCPackageConfig-showGHCPackageConfig :: GHCPackageConfig -> String-localPackageConfig :: IO FilePath-maybeCreateLocalPackageConfig :: IO Bool-canWriteLocalPackageConfig :: IO Bool-canReadLocalPackageConfig :: IO Bool--module Distribution.Simple.GHC-configure :: Verbosity -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration -> IO (Compiler, ProgramConfiguration)-getInstalledPackages :: Verbosity -> PackageDB -> ProgramConfiguration -> IO [PackageIdentifier]-build :: PackageDescription -> LocalBuildInfo -> Verbosity -> IO ()-makefile :: PackageDescription -> LocalBuildInfo -> MakefileFlags -> IO ()-installLib :: Verbosity -> LocalBuildInfo -> FilePath -> FilePath -> FilePath -> PackageDescription -> IO ()-installExe :: Verbosity -> FilePath -> FilePath -> PackageDescription -> IO ()-ghcVerbosityOptions :: Verbosity -> [String]--module Distribution.Simple.JHC-configure :: Verbosity -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration -> IO (Compiler, ProgramConfiguration)-getInstalledPackages :: Verbosity -> PackageDB -> ProgramConfiguration -> IO [PackageIdentifier]-build :: PackageDescription -> LocalBuildInfo -> Verbosity -> IO ()-installLib :: Verbosity -> FilePath -> FilePath -> PackageDescription -> Library -> IO ()-installExe :: Verbosity -> FilePath -> FilePath -> PackageDescription -> Executable -> IO ()--module Distribution.Simple.NHC-configure :: Verbosity -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration -> IO (Compiler, ProgramConfiguration)-build :: PackageDescription -> LocalBuildInfo -> Verbosity -> IO ()--module Distribution.Simple.PreProcess-preprocessSources :: PackageDescription -> LocalBuildInfo -> Bool -> Verbosity -> [PPSuffixHandler] -> IO ()-knownSuffixHandlers :: [PPSuffixHandler]-ppSuffixes :: [PPSuffixHandler] -> [String]-type PPSuffixHandler = (String, BuildInfo -> LocalBuildInfo -> PreProcessor)-data PreProcessor-PreProcessor :: Bool -> ((FilePath, FilePath) -> (FilePath, FilePath) -> Verbosity -> IO ()) -> PreProcessor-platformIndependent :: PreProcessor -> Bool-runPreProcessor :: PreProcessor -> (FilePath, FilePath) -> (FilePath, FilePath) -> Verbosity -> IO ()-mkSimplePreProcessor :: (FilePath -> FilePath -> Verbosity -> IO ()) -> (FilePath, FilePath) -> (FilePath, FilePath) -> Verbosity -> IO ()-runSimplePreProcessor :: PreProcessor -> FilePath -> FilePath -> Verbosity -> IO ()-removePreprocessed :: [FilePath] -> [String] -> [String] -> IO ()-removePreprocessedPackage :: PackageDescription -> FilePath -> [String] -> IO ()-ppCpp :: BuildInfo -> LocalBuildInfo -> PreProcessor-ppCpp' :: [String] -> BuildInfo -> LocalBuildInfo -> PreProcessor-ppGreenCard :: BuildInfo -> LocalBuildInfo -> PreProcessor-ppC2hs :: BuildInfo -> LocalBuildInfo -> PreProcessor-ppHsc2hs :: BuildInfo -> LocalBuildInfo -> PreProcessor-ppHappy :: BuildInfo -> LocalBuildInfo -> PreProcessor-ppAlex :: BuildInfo -> LocalBuildInfo -> PreProcessor-ppUnlit :: PreProcessor--module Distribution.Simple.Haddock-haddock :: PackageDescription -> LocalBuildInfo -> [PPSuffixHandler] -> HaddockFlags -> IO ()-hscolour :: PackageDescription -> LocalBuildInfo -> [PPSuffixHandler] -> HscolourFlags -> IO ()--module Distribution.Simple.Hugs-configure :: Verbosity -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration -> IO (Compiler, ProgramConfiguration)-build :: PackageDescription -> LocalBuildInfo -> Verbosity -> IO ()-install :: Verbosity -> FilePath -> FilePath -> FilePath -> FilePath -> FilePath -> PackageDescription -> IO ()--module Distribution.Simple.Install-install :: PackageDescription -> LocalBuildInfo -> CopyFlags -> IO ()--module Distribution.Simple.Register-register :: PackageDescription -> LocalBuildInfo -> RegisterFlags -> IO ()-unregister :: PackageDescription -> LocalBuildInfo -> RegisterFlags -> IO ()-writeInstalledConfig :: PackageDescription -> LocalBuildInfo -> Bool -> Maybe FilePath -> IO ()-removeInstalledConfig :: IO ()-removeRegScripts :: IO ()--module Distribution.Simple.Configure-configure :: (Either GenericPackageDescription PackageDescription, HookedBuildInfo) -> ConfigFlags -> IO LocalBuildInfo-writePersistBuildConfig :: LocalBuildInfo -> IO ()-getPersistBuildConfig :: IO LocalBuildInfo-checkPersistBuildConfig :: FilePath -> IO ()-maybeGetPersistBuildConfig :: IO (Maybe LocalBuildInfo)-localBuildInfoFile :: FilePath-getInstalledPackages :: Verbosity -> Compiler -> PackageDB -> ProgramConfiguration -> IO (Maybe [PackageIdentifier])-configDependency :: Verbosity -> [PackageIdentifier] -> Dependency -> IO PackageIdentifier-configCompiler :: Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration -> Verbosity -> IO (Compiler, ProgramConfiguration)-configCompilerAux :: ConfigFlags -> IO (Compiler, ProgramConfiguration)--module Distribution.Simple.Build-build :: PackageDescription -> LocalBuildInfo -> BuildFlags -> [PPSuffixHandler] -> IO ()-makefile :: PackageDescription -> LocalBuildInfo -> MakefileFlags -> [PPSuffixHandler] -> IO ()--module Distribution.Simple.SrcDist-sdist :: PackageDescription -> Maybe LocalBuildInfo -> SDistFlags -> FilePath -> FilePath -> [PPSuffixHandler] -> IO ()-createArchive :: PackageDescription -> Verbosity -> Maybe LocalBuildInfo -> FilePath -> FilePath -> IO FilePath-prepareTree :: PackageDescription -> Verbosity -> Maybe LocalBuildInfo -> Bool -> FilePath -> [PPSuffixHandler] -> Int -> IO FilePath-tarBallName :: PackageDescription -> FilePath-copyFileTo :: Verbosity -> FilePath -> FilePath -> IO ()--module Distribution.Simple-defaultMain :: IO ()-defaultMainNoRead :: PackageDescription -> IO ()-defaultMainArgs :: [String] -> IO ()-data UserHooks-UserHooks :: (Args -> Bool -> PackageDescription -> LocalBuildInfo -> IO ()) -> IO (Maybe PackageDescription) -> [PPSuffixHandler] -> [Program] -> (Args -> ConfigFlags -> IO HookedBuildInfo) -> ((Either GenericPackageDescription PackageDescription, HookedBuildInfo) -> ConfigFlags -> IO LocalBuildInfo) -> (Args -> ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> (Args -> BuildFlags -> IO HookedBuildInfo) -> (PackageDescription -> LocalBuildInfo -> UserHooks -> BuildFlags -> IO ()) -> (Args -> BuildFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> (Args -> MakefileFlags -> IO HookedBuildInfo) -> (PackageDescription -> LocalBuildInfo -> UserHooks -> MakefileFlags -> IO ()) -> (Args -> MakefileFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> (Args -> CleanFlags -> IO HookedBuildInfo) -> (PackageDescription -> Maybe LocalBuildInfo -> UserHooks -> CleanFlags -> IO ()) -> (Args -> CleanFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO ()) -> (Args -> CopyFlags -> IO HookedBuildInfo) -> (PackageDescription -> LocalBuildInfo -> UserHooks -> CopyFlags -> IO ()) -> (Args -> CopyFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> (Args -> InstallFlags -> IO HookedBuildInfo) -> (PackageDescription -> LocalBuildInfo -> UserHooks -> InstallFlags -> IO ()) -> (Args -> InstallFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> (Args -> SDistFlags -> IO HookedBuildInfo) -> (PackageDescription -> Maybe LocalBuildInfo -> UserHooks -> SDistFlags -> IO ()) -> (Args -> SDistFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO ()) -> (Args -> RegisterFlags -> IO HookedBuildInfo) -> (PackageDescription -> LocalBuildInfo -> UserHooks -> RegisterFlags -> IO ()) -> (Args -> RegisterFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> (Args -> RegisterFlags -> IO HookedBuildInfo) -> (PackageDescription -> LocalBuildInfo -> UserHooks -> RegisterFlags -> IO ()) -> (Args -> RegisterFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> (Args -> HscolourFlags -> IO HookedBuildInfo) -> (PackageDescription -> LocalBuildInfo -> UserHooks -> HscolourFlags -> IO ()) -> (Args -> HscolourFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> (Args -> HaddockFlags -> IO HookedBuildInfo) -> (PackageDescription -> LocalBuildInfo -> UserHooks -> HaddockFlags -> IO ()) -> (Args -> HaddockFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> (Args -> PFEFlags -> IO HookedBuildInfo) -> (PackageDescription -> LocalBuildInfo -> UserHooks -> PFEFlags -> IO ()) -> (Args -> PFEFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> UserHooks-runTests :: UserHooks -> Args -> Bool -> PackageDescription -> LocalBuildInfo -> IO ()-readDesc :: UserHooks -> IO (Maybe PackageDescription)-hookedPreProcessors :: UserHooks -> [PPSuffixHandler]-hookedPrograms :: UserHooks -> [Program]-preConf :: UserHooks -> Args -> ConfigFlags -> IO HookedBuildInfo-confHook :: UserHooks -> (Either GenericPackageDescription PackageDescription, HookedBuildInfo) -> ConfigFlags -> IO LocalBuildInfo-postConf :: UserHooks -> Args -> ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO ()-preBuild :: UserHooks -> Args -> BuildFlags -> IO HookedBuildInfo-buildHook :: UserHooks -> PackageDescription -> LocalBuildInfo -> UserHooks -> BuildFlags -> IO ()-postBuild :: UserHooks -> Args -> BuildFlags -> PackageDescription -> LocalBuildInfo -> IO ()-preMakefile :: UserHooks -> Args -> MakefileFlags -> IO HookedBuildInfo-makefileHook :: UserHooks -> PackageDescription -> LocalBuildInfo -> UserHooks -> MakefileFlags -> IO ()-postMakefile :: UserHooks -> Args -> MakefileFlags -> PackageDescription -> LocalBuildInfo -> IO ()-preClean :: UserHooks -> Args -> CleanFlags -> IO HookedBuildInfo-cleanHook :: UserHooks -> PackageDescription -> Maybe LocalBuildInfo -> UserHooks -> CleanFlags -> IO ()-postClean :: UserHooks -> Args -> CleanFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO ()-preCopy :: UserHooks -> Args -> CopyFlags -> IO HookedBuildInfo-copyHook :: UserHooks -> PackageDescription -> LocalBuildInfo -> UserHooks -> CopyFlags -> IO ()-postCopy :: UserHooks -> Args -> CopyFlags -> PackageDescription -> LocalBuildInfo -> IO ()-preInst :: UserHooks -> Args -> InstallFlags -> IO HookedBuildInfo-instHook :: UserHooks -> PackageDescription -> LocalBuildInfo -> UserHooks -> InstallFlags -> IO ()-postInst :: UserHooks -> Args -> InstallFlags -> PackageDescription -> LocalBuildInfo -> IO ()-preSDist :: UserHooks -> Args -> SDistFlags -> IO HookedBuildInfo-sDistHook :: UserHooks -> PackageDescription -> Maybe LocalBuildInfo -> UserHooks -> SDistFlags -> IO ()-postSDist :: UserHooks -> Args -> SDistFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO ()-preReg :: UserHooks -> Args -> RegisterFlags -> IO HookedBuildInfo-regHook :: UserHooks -> PackageDescription -> LocalBuildInfo -> UserHooks -> RegisterFlags -> IO ()-postReg :: UserHooks -> Args -> RegisterFlags -> PackageDescription -> LocalBuildInfo -> IO ()-preUnreg :: UserHooks -> Args -> RegisterFlags -> IO HookedBuildInfo-unregHook :: UserHooks -> PackageDescription -> LocalBuildInfo -> UserHooks -> RegisterFlags -> IO ()-postUnreg :: UserHooks -> Args -> RegisterFlags -> PackageDescription -> LocalBuildInfo -> IO ()-preHscolour :: UserHooks -> Args -> HscolourFlags -> IO HookedBuildInfo-hscolourHook :: UserHooks -> PackageDescription -> LocalBuildInfo -> UserHooks -> HscolourFlags -> IO ()-postHscolour :: UserHooks -> Args -> HscolourFlags -> PackageDescription -> LocalBuildInfo -> IO ()-preHaddock :: UserHooks -> Args -> HaddockFlags -> IO HookedBuildInfo-haddockHook :: UserHooks -> PackageDescription -> LocalBuildInfo -> UserHooks -> HaddockFlags -> IO ()-postHaddock :: UserHooks -> Args -> HaddockFlags -> PackageDescription -> LocalBuildInfo -> IO ()-prePFE :: UserHooks -> Args -> PFEFlags -> IO HookedBuildInfo-pfeHook :: UserHooks -> PackageDescription -> LocalBuildInfo -> UserHooks -> PFEFlags -> IO ()-postPFE :: UserHooks -> Args -> PFEFlags -> PackageDescription -> LocalBuildInfo -> IO ()-type Args = [String]-defaultMainWithHooks :: UserHooks -> IO ()-defaultMainWithHooksArgs :: UserHooks -> [String] -> IO ()-simpleUserHooks :: UserHooks-defaultUserHooks :: UserHooks-emptyUserHooks :: UserHooks-defaultHookedPackageDesc :: IO (Maybe FilePath)--module Distribution.Simple.SetupWrapper-setupWrapper :: [String] -> Maybe FilePath -> IO ()--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module Data.Set-data Set a-instance Foldable Set-instance Typeable1 Set-instance (Data a, Ord a) => Data (Set a)-instance Eq a => Eq (Set a)-instance Ord a => Monoid (Set a)-instance Ord a => Ord (Set a)-instance (Read a, Ord a) => Read (Set a)-instance Show a => Show (Set a)-(\\) :: Ord a => Set a -> Set a -> Set a-null :: Set a -> Bool-size :: Set a -> Int-member :: Ord a => a -> Set a -> Bool-notMember :: Ord a => a -> Set a -> Bool-isSubsetOf :: Ord a => Set a -> Set a -> Bool-isProperSubsetOf :: Ord a => Set a -> Set a -> Bool-empty :: Set a-singleton :: a -> Set a-insert :: Ord a => a -> Set a -> Set a-delete :: Ord a => a -> Set a -> Set a-union :: Ord a => Set a -> Set a -> Set a-unions :: Ord a => [Set a] -> Set a-difference :: Ord a => Set a -> Set a -> Set a-intersection :: Ord a => Set a -> Set a -> Set a-filter :: Ord a => (a -> Bool) -> Set a -> Set a-partition :: Ord a => (a -> Bool) -> Set a -> (Set a, Set a)-split :: Ord a => a -> Set a -> (Set a, Set a)-splitMember :: Ord a => a -> Set a -> (Set a, Bool, Set a)-map :: (Ord a, Ord b) => (a -> b) -> Set a -> Set b-mapMonotonic :: (a -> b) -> Set a -> Set b-fold :: (a -> b -> b) -> b -> Set a -> b-findMin :: Set a -> a-findMax :: Set a -> a-deleteMin :: Set a -> Set a-deleteMax :: Set a -> Set a-deleteFindMin :: Set a -> (a, Set a)-deleteFindMax :: Set a -> (a, Set a)-maxView :: Monad m => Set a -> m (a, Set a)-minView :: Monad m => Set a -> m (a, Set a)-elems :: Set a -> [a]-toList :: Set a -> [a]-fromList :: Ord a => [a] -> Set a-toAscList :: Set a -> [a]-fromAscList :: Eq a => [a] -> Set a-fromDistinctAscList :: [a] -> Set a-showTree :: Show a => Set a -> String-showTreeWith :: Show a => Bool -> Bool -> Set a -> String-valid :: Ord a => Set a -> Bool--module Data.Sequence-data Seq a-instance Foldable Seq-instance Functor Seq-instance Monad Seq-instance MonadPlus Seq-instance Traversable Seq-instance Typeable1 Seq-instance Data a => Data (Seq a)-instance Eq a => Eq (Seq a)-instance Monoid (Seq a)-instance Ord a => Ord (Seq a)-instance Read a => Read (Seq a)-instance Show a => Show (Seq a)-empty :: Seq a-singleton :: a -> Seq a-(<|) :: a -> Seq a -> Seq a-(|>) :: Seq a -> a -> Seq a-(><) :: Seq a -> Seq a -> Seq a-fromList :: [a] -> Seq a-null :: Seq a -> Bool-length :: Seq a -> Int-data ViewL a-EmptyL :: ViewL a-(:<) :: a -> Seq a -> ViewL a-instance Foldable ViewL-instance Functor ViewL-instance Traversable ViewL-instance Typeable1 ViewL-instance Data a => Data (ViewL a)-instance Eq a => Eq (ViewL a)-instance Ord a => Ord (ViewL a)-instance Read a => Read (ViewL a)-instance Show a => Show (ViewL a)-viewl :: Seq a -> ViewL a-data ViewR a-EmptyR :: ViewR a-(:>) :: Seq a -> a -> ViewR a-instance Foldable ViewR-instance Functor ViewR-instance Traversable ViewR-instance Typeable1 ViewR-instance Data a => Data (ViewR a)-instance Eq a => Eq (ViewR a)-instance Ord a => Ord (ViewR a)-instance Read a => Read (ViewR a)-instance Show a => Show (ViewR a)-viewr :: Seq a -> ViewR a-index :: Seq a -> Int -> a-adjust :: (a -> a) -> Int -> Seq a -> Seq a-update :: Int -> a -> Seq a -> Seq a-take :: Int -> Seq a -> Seq a-drop :: Int -> Seq a -> Seq a-splitAt :: Int -> Seq a -> (Seq a, Seq a)-reverse :: Seq a -> Seq a--module Data.Tree-data Tree a-Node :: a -> Forest a -> Tree a-rootLabel :: Tree a -> a-subForest :: Tree a -> Forest a-instance Applicative Tree-instance Foldable Tree-instance Functor Tree-instance Monad Tree-instance Traversable Tree-instance Typeable1 Tree-instance Data a => Data (Tree a)-instance Eq a => Eq (Tree a)-instance Read a => Read (Tree a)-instance Show a => Show (Tree a)-type Forest a = [Tree a]-drawTree :: Tree String -> String-drawForest :: Forest String -> String-flatten :: Tree a -> [a]-levels :: Tree a -> [[a]]-unfoldTree :: (b -> (a, [b])) -> b -> Tree a-unfoldForest :: (b -> (a, [b])) -> [b] -> Forest a-unfoldTreeM :: Monad m => (b -> m (a, [b])) -> b -> m (Tree a)-unfoldForestM :: Monad m => (b -> m (a, [b])) -> [b] -> m (Forest a)-unfoldTreeM_BF :: Monad m => (b -> m (a, [b])) -> b -> m (Tree a)-unfoldForestM_BF :: Monad m => (b -> m (a, [b])) -> [b] -> m (Forest a)--module Data.Map-data Map k a-instance Typeable2 Map-instance Foldable (Map k)-instance Functor (Map k)-instance Traversable (Map k)-instance (Data k, Data a, Ord k) => Data (Map k a)-instance (Eq k, Eq a) => Eq (Map k a)-instance Ord k => Monoid (Map k v)-instance (Ord k, Ord v) => Ord (Map k v)-instance (Ord k, Read k, Read e) => Read (Map k e)-instance (Show k, Show a) => Show (Map k a)-(!) :: Ord k => Map k a -> k -> a-(\\) :: Ord k => Map k a -> Map k b -> Map k a-null :: Map k a -> Bool-size :: Map k a -> Int-member :: Ord k => k -> Map k a -> Bool-notMember :: Ord k => k -> Map k a -> Bool-lookup :: (Monad m, Ord k) => k -> Map k a -> m a-findWithDefault :: Ord k => a -> k -> Map k a -> a-empty :: Map k a-singleton :: k -> a -> Map k a-insert :: Ord k => k -> a -> Map k a -> Map k a-insertWith :: Ord k => (a -> a -> a) -> k -> a -> Map k a -> Map k a-insertWithKey :: Ord k => (k -> a -> a -> a) -> k -> a -> Map k a -> Map k a-insertLookupWithKey :: Ord k => (k -> a -> a -> a) -> k -> a -> Map k a -> (Maybe a, Map k a)-insertWith' :: Ord k => (a -> a -> a) -> k -> a -> Map k a -> Map k a-insertWithKey' :: Ord k => (k -> a -> a -> a) -> k -> a -> Map k a -> Map k a-delete :: Ord k => k -> Map k a -> Map k a-adjust :: Ord k => (a -> a) -> k -> Map k a -> Map k a-adjustWithKey :: Ord k => (k -> a -> a) -> k -> Map k a -> Map k a-update :: Ord k => (a -> Maybe a) -> k -> Map k a -> Map k a-updateWithKey :: Ord k => (k -> a -> Maybe a) -> k -> Map k a -> Map k a-updateLookupWithKey :: Ord k => (k -> a -> Maybe a) -> k -> Map k a -> (Maybe a, Map k a)-alter :: Ord k => (Maybe a -> Maybe a) -> k -> Map k a -> Map k a-union :: Ord k => Map k a -> Map k a -> Map k a-unionWith :: Ord k => (a -> a -> a) -> Map k a -> Map k a -> Map k a-unionWithKey :: Ord k => (k -> a -> a -> a) -> Map k a -> Map k a -> Map k a-unions :: Ord k => [Map k a] -> Map k a-unionsWith :: Ord k => (a -> a -> a) -> [Map k a] -> Map k a-difference :: Ord k => Map k a -> Map k b -> Map k a-differenceWith :: Ord k => (a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a-differenceWithKey :: Ord k => (k -> a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a-intersection :: Ord k => Map k a -> Map k b -> Map k a-intersectionWith :: Ord k => (a -> b -> c) -> Map k a -> Map k b -> Map k c-intersectionWithKey :: Ord k => (k -> a -> b -> c) -> Map k a -> Map k b -> Map k c-map :: (a -> b) -> Map k a -> Map k b-mapWithKey :: (k -> a -> b) -> Map k a -> Map k b-mapAccum :: (a -> b -> (a, c)) -> a -> Map k b -> (a, Map k c)-mapAccumWithKey :: (a -> k -> b -> (a, c)) -> a -> Map k b -> (a, Map k c)-mapKeys :: Ord k2 => (k1 -> k2) -> Map k1 a -> Map k2 a-mapKeysWith :: Ord k2 => (a -> a -> a) -> (k1 -> k2) -> Map k1 a -> Map k2 a-mapKeysMonotonic :: (k1 -> k2) -> Map k1 a -> Map k2 a-fold :: (a -> b -> b) -> b -> Map k a -> b-foldWithKey :: (k -> a -> b -> b) -> b -> Map k a -> b-elems :: Map k a -> [a]-keys :: Map k a -> [k]-keysSet :: Map k a -> Set k-assocs :: Map k a -> [(k, a)]-toList :: Map k a -> [(k, a)]-fromList :: Ord k => [(k, a)] -> Map k a-fromListWith :: Ord k => (a -> a -> a) -> [(k, a)] -> Map k a-fromListWithKey :: Ord k => (k -> a -> a -> a) -> [(k, a)] -> Map k a-toAscList :: Map k a -> [(k, a)]-fromAscList :: Eq k => [(k, a)] -> Map k a-fromAscListWith :: Eq k => (a -> a -> a) -> [(k, a)] -> Map k a-fromAscListWithKey :: Eq k => (k -> a -> a -> a) -> [(k, a)] -> Map k a-fromDistinctAscList :: [(k, a)] -> Map k a-filter :: Ord k => (a -> Bool) -> Map k a -> Map k a-filterWithKey :: Ord k => (k -> a -> Bool) -> Map k a -> Map k a-partition :: Ord k => (a -> Bool) -> Map k a -> (Map k a, Map k a)-partitionWithKey :: Ord k => (k -> a -> Bool) -> Map k a -> (Map k a, Map k a)-mapMaybe :: Ord k => (a -> Maybe b) -> Map k a -> Map k b-mapMaybeWithKey :: Ord k => (k -> a -> Maybe b) -> Map k a -> Map k b-mapEither :: Ord k => (a -> Either b c) -> Map k a -> (Map k b, Map k c)-mapEitherWithKey :: Ord k => (k -> a -> Either b c) -> Map k a -> (Map k b, Map k c)-split :: Ord k => k -> Map k a -> (Map k a, Map k a)-splitLookup :: Ord k => k -> Map k a -> (Map k a, Maybe a, Map k a)-isSubmapOf :: (Ord k, Eq a) => Map k a -> Map k a -> Bool-isSubmapOfBy :: Ord k => (a -> b -> Bool) -> Map k a -> Map k b -> Bool-isProperSubmapOf :: (Ord k, Eq a) => Map k a -> Map k a -> Bool-isProperSubmapOfBy :: Ord k => (a -> b -> Bool) -> Map k a -> Map k b -> Bool-lookupIndex :: (Monad m, Ord k) => k -> Map k a -> m Int-findIndex :: Ord k => k -> Map k a -> Int-elemAt :: Int -> Map k a -> (k, a)-updateAt :: (k -> a -> Maybe a) -> Int -> Map k a -> Map k a-deleteAt :: Int -> Map k a -> Map k a-findMin :: Map k a -> (k, a)-findMax :: Map k a -> (k, a)-deleteMin :: Map k a -> Map k a-deleteMax :: Map k a -> Map k a-deleteFindMin :: Map k a -> ((k, a), Map k a)-deleteFindMax :: Map k a -> ((k, a), Map k a)-updateMin :: (a -> Maybe a) -> Map k a -> Map k a-updateMax :: (a -> Maybe a) -> Map k a -> Map k a-updateMinWithKey :: (k -> a -> Maybe a) -> Map k a -> Map k a-updateMaxWithKey :: (k -> a -> Maybe a) -> Map k a -> Map k a-minView :: Monad m => Map k a -> m (a, Map k a)-maxView :: Monad m => Map k a -> m (a, Map k a)-minViewWithKey :: Monad m => Map k a -> m ((k, a), Map k a)-maxViewWithKey :: Monad m => Map k a -> m ((k, a), Map k a)-showTree :: (Show k, Show a) => Map k a -> String-showTreeWith :: (k -> a -> String) -> Bool -> Bool -> Map k a -> String-valid :: Ord k => Map k a -> Bool--module Data.IntSet-data IntSet-instance Data IntSet-instance Eq IntSet-instance Monoid IntSet-instance Ord IntSet-instance Read IntSet-instance Show IntSet-instance Typeable IntSet-(\\) :: IntSet -> IntSet -> IntSet-null :: IntSet -> Bool-size :: IntSet -> Int-member :: Int -> IntSet -> Bool-notMember :: Int -> IntSet -> Bool-isSubsetOf :: IntSet -> IntSet -> Bool-isProperSubsetOf :: IntSet -> IntSet -> Bool-empty :: IntSet-singleton :: Int -> IntSet-insert :: Int -> IntSet -> IntSet-delete :: Int -> IntSet -> IntSet-union :: IntSet -> IntSet -> IntSet-unions :: [IntSet] -> IntSet-difference :: IntSet -> IntSet -> IntSet-intersection :: IntSet -> IntSet -> IntSet-filter :: (Int -> Bool) -> IntSet -> IntSet-partition :: (Int -> Bool) -> IntSet -> (IntSet, IntSet)-split :: Int -> IntSet -> (IntSet, IntSet)-splitMember :: Int -> IntSet -> (IntSet, Bool, IntSet)-findMin :: IntSet -> Int-findMax :: IntSet -> Int-deleteMin :: IntSet -> IntSet-deleteMax :: IntSet -> IntSet-deleteFindMin :: IntSet -> (Int, IntSet)-deleteFindMax :: IntSet -> (Int, IntSet)-maxView :: Monad m => IntSet -> m (Int, IntSet)-minView :: Monad m => IntSet -> m (Int, IntSet)-map :: (Int -> Int) -> IntSet -> IntSet-fold :: (Int -> b -> b) -> b -> IntSet -> b-elems :: IntSet -> [Int]-toList :: IntSet -> [Int]-fromList :: [Int] -> IntSet-toAscList :: IntSet -> [Int]-fromAscList :: [Int] -> IntSet-fromDistinctAscList :: [Int] -> IntSet-showTree :: IntSet -> String-showTreeWith :: Bool -> Bool -> IntSet -> String--module Data.IntMap-data IntMap a-instance Foldable IntMap-instance Functor IntMap-instance Typeable1 IntMap-instance Data a => Data (IntMap a)-instance Eq a => Eq (IntMap a)-instance Monoid (IntMap a)-instance Ord a => Ord (IntMap a)-instance Read e => Read (IntMap e)-instance Show a => Show (IntMap a)-type Key = Int-(!) :: IntMap a -> Key -> a-(\\) :: IntMap a -> IntMap b -> IntMap a-null :: IntMap a -> Bool-size :: IntMap a -> Int-member :: Key -> IntMap a -> Bool-notMember :: Key -> IntMap a -> Bool-lookup :: Monad m => Key -> IntMap a -> m a-findWithDefault :: a -> Key -> IntMap a -> a-empty :: IntMap a-singleton :: Key -> a -> IntMap a-insert :: Key -> a -> IntMap a -> IntMap a-insertWith :: (a -> a -> a) -> Key -> a -> IntMap a -> IntMap a-insertWithKey :: (Key -> a -> a -> a) -> Key -> a -> IntMap a -> IntMap a-insertLookupWithKey :: (Key -> a -> a -> a) -> Key -> a -> IntMap a -> (Maybe a, IntMap a)-delete :: Key -> IntMap a -> IntMap a-adjust :: (a -> a) -> Key -> IntMap a -> IntMap a-adjustWithKey :: (Key -> a -> a) -> Key -> IntMap a -> IntMap a-update :: (a -> Maybe a) -> Key -> IntMap a -> IntMap a-updateWithKey :: (Key -> a -> Maybe a) -> Key -> IntMap a -> IntMap a-updateLookupWithKey :: (Key -> a -> Maybe a) -> Key -> IntMap a -> (Maybe a, IntMap a)-union :: IntMap a -> IntMap a -> IntMap a-unionWith :: (a -> a -> a) -> IntMap a -> IntMap a -> IntMap a-unionWithKey :: (Key -> a -> a -> a) -> IntMap a -> IntMap a -> IntMap a-unions :: [IntMap a] -> IntMap a-unionsWith :: (a -> a -> a) -> [IntMap a] -> IntMap a-difference :: IntMap a -> IntMap b -> IntMap a-differenceWith :: (a -> b -> Maybe a) -> IntMap a -> IntMap b -> IntMap a-differenceWithKey :: (Key -> a -> b -> Maybe a) -> IntMap a -> IntMap b -> IntMap a-intersection :: IntMap a -> IntMap b -> IntMap a-intersectionWith :: (a -> b -> a) -> IntMap a -> IntMap b -> IntMap a-intersectionWithKey :: (Key -> a -> b -> a) -> IntMap a -> IntMap b -> IntMap a-map :: (a -> b) -> IntMap a -> IntMap b-mapWithKey :: (Key -> a -> b) -> IntMap a -> IntMap b-mapAccum :: (a -> b -> (a, c)) -> a -> IntMap b -> (a, IntMap c)-mapAccumWithKey :: (a -> Key -> b -> (a, c)) -> a -> IntMap b -> (a, IntMap c)-fold :: (a -> b -> b) -> b -> IntMap a -> b-foldWithKey :: (Key -> a -> b -> b) -> b -> IntMap a -> b-elems :: IntMap a -> [a]-keys :: IntMap a -> [Key]-keysSet :: IntMap a -> IntSet-assocs :: IntMap a -> [(Key, a)]-toList :: IntMap a -> [(Key, a)]-fromList :: [(Key, a)] -> IntMap a-fromListWith :: (a -> a -> a) -> [(Key, a)] -> IntMap a-fromListWithKey :: (Key -> a -> a -> a) -> [(Key, a)] -> IntMap a-toAscList :: IntMap a -> [(Key, a)]-fromAscList :: [(Key, a)] -> IntMap a-fromAscListWith :: (a -> a -> a) -> [(Key, a)] -> IntMap a-fromAscListWithKey :: (Key -> a -> a -> a) -> [(Key, a)] -> IntMap a-fromDistinctAscList :: [(Key, a)] -> IntMap a-filter :: (a -> Bool) -> IntMap a -> IntMap a-filterWithKey :: (Key -> a -> Bool) -> IntMap a -> IntMap a-partition :: (a -> Bool) -> IntMap a -> (IntMap a, IntMap a)-partitionWithKey :: (Key -> a -> Bool) -> IntMap a -> (IntMap a, IntMap a)-mapMaybe :: (a -> Maybe b) -> IntMap a -> IntMap b-mapMaybeWithKey :: (Key -> a -> Maybe b) -> IntMap a -> IntMap b-mapEither :: (a -> Either b c) -> IntMap a -> (IntMap b, IntMap c)-mapEitherWithKey :: (Key -> a -> Either b c) -> IntMap a -> (IntMap b, IntMap c)-split :: Key -> IntMap a -> (IntMap a, IntMap a)-splitLookup :: Key -> IntMap a -> (IntMap a, Maybe a, IntMap a)-isSubmapOf :: Eq a => IntMap a -> IntMap a -> Bool-isSubmapOfBy :: (a -> b -> Bool) -> IntMap a -> IntMap b -> Bool-isProperSubmapOf :: Eq a => IntMap a -> IntMap a -> Bool-isProperSubmapOfBy :: (a -> b -> Bool) -> IntMap a -> IntMap b -> Bool-updateMin :: (a -> a) -> IntMap a -> IntMap a-updateMax :: (a -> a) -> IntMap a -> IntMap a-updateMinWithKey :: (Key -> a -> a) -> IntMap a -> IntMap a-updateMaxWithKey :: (Key -> a -> a) -> IntMap a -> IntMap a-minViewWithKey :: Monad m => IntMap a -> m ((Key, a), IntMap a)-maxViewWithKey :: Monad m => IntMap a -> m ((Key, a), IntMap a)-showTree :: Show a => IntMap a -> String-showTreeWith :: Show a => Bool -> Bool -> IntMap a -> String--module Data.Graph-stronglyConnComp :: Ord key => [(node, key, [key])] -> [SCC node]-stronglyConnCompR :: Ord key => [(node, key, [key])] -> [SCC (node, key, [key])]-data SCC vertex-AcyclicSCC :: vertex -> SCC vertex-CyclicSCC :: [vertex] -> SCC vertex-flattenSCC :: SCC vertex -> [vertex]-flattenSCCs :: [SCC a] -> [a]-type Graph = Table [Vertex]-type Table a = Array Vertex a-type Bounds = (Vertex, Vertex)-type Edge = (Vertex, Vertex)-type Vertex = Int-graphFromEdges :: Ord key => [(node, key, [key])] -> (Graph, Vertex -> (node, key, [key]), key -> Maybe Vertex)-graphFromEdges' :: Ord key => [(node, key, [key])] -> (Graph, Vertex -> (node, key, [key]))-buildG :: Bounds -> [Edge] -> Graph-transposeG :: Graph -> Graph-vertices :: Graph -> [Vertex]-edges :: Graph -> [Edge]-outdegree :: Graph -> Table Int-indegree :: Graph -> Table Int-dfs :: Graph -> [Vertex] -> Forest Vertex-dff :: Graph -> Forest Vertex-topSort :: Graph -> [Vertex]-components :: Graph -> Forest Vertex-scc :: Graph -> Forest Vertex-bcc :: Graph -> Forest [Vertex]-reachable :: Graph -> Vertex -> [Vertex]-path :: Graph -> Vertex -> Vertex -> Bool--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module System.Directory-createDirectory :: FilePath -> IO ()-createDirectoryIfMissing :: Bool -> FilePath -> IO ()-removeDirectory :: FilePath -> IO ()-removeDirectoryRecursive :: FilePath -> IO ()-renameDirectory :: FilePath -> FilePath -> IO ()-getDirectoryContents :: FilePath -> IO [FilePath]-getCurrentDirectory :: IO FilePath-setCurrentDirectory :: FilePath -> IO ()-getHomeDirectory :: IO FilePath-getAppUserDataDirectory :: String -> IO FilePath-getUserDocumentsDirectory :: IO FilePath-getTemporaryDirectory :: IO FilePath-removeFile :: FilePath -> IO ()-renameFile :: FilePath -> FilePath -> IO ()-copyFile :: FilePath -> FilePath -> IO ()-canonicalizePath :: FilePath -> IO FilePath-makeRelativeToCurrentDirectory :: FilePath -> IO FilePath-findExecutable :: String -> IO (Maybe FilePath)-doesFileExist :: FilePath -> IO Bool-doesDirectoryExist :: FilePath -> IO Bool-data Permissions-Permissions :: Bool -> Bool -> Bool -> Bool -> Permissions-readable :: Permissions -> Bool-writable :: Permissions -> Bool-executable :: Permissions -> Bool-searchable :: Permissions -> Bool-instance Eq Permissions-instance Ord Permissions-instance Read Permissions-instance Show Permissions-getPermissions :: FilePath -> IO Permissions-setPermissions :: FilePath -> Permissions -> IO ()-getModificationTime :: FilePath -> IO ClockTime--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module System.FilePath.Windows-pathSeparator :: Char-pathSeparators :: [Char]-isPathSeparator :: Char -> Bool-searchPathSeparator :: Char-isSearchPathSeparator :: Char -> Bool-extSeparator :: Char-isExtSeparator :: Char -> Bool-splitSearchPath :: String -> [FilePath]-getSearchPath :: IO [FilePath]-splitExtension :: FilePath -> (String, String)-takeExtension :: FilePath -> String-replaceExtension :: FilePath -> String -> FilePath-dropExtension :: FilePath -> FilePath-addExtension :: FilePath -> String -> FilePath-hasExtension :: FilePath -> Bool-(<.>) :: FilePath -> String -> FilePath-splitExtensions :: FilePath -> (FilePath, String)-dropExtensions :: FilePath -> FilePath-takeExtensions :: FilePath -> String-splitDrive :: FilePath -> (FilePath, FilePath)-joinDrive :: FilePath -> FilePath -> FilePath-takeDrive :: FilePath -> FilePath-hasDrive :: FilePath -> Bool-dropDrive :: FilePath -> FilePath-isDrive :: FilePath -> Bool-splitFileName :: FilePath -> (String, String)-takeFileName :: FilePath -> FilePath-replaceFileName :: FilePath -> String -> FilePath-dropFileName :: FilePath -> FilePath-takeBaseName :: FilePath -> String-replaceBaseName :: FilePath -> String -> FilePath-takeDirectory :: FilePath -> FilePath-replaceDirectory :: FilePath -> String -> FilePath-combine :: FilePath -> FilePath -> FilePath-(</>) :: FilePath -> FilePath -> FilePath-splitPath :: FilePath -> [FilePath]-joinPath :: [FilePath] -> FilePath-splitDirectories :: FilePath -> [FilePath]-hasTrailingPathSeparator :: FilePath -> Bool-addTrailingPathSeparator :: FilePath -> FilePath-dropTrailingPathSeparator :: FilePath -> FilePath-normalise :: FilePath -> FilePath-equalFilePath :: FilePath -> FilePath -> Bool-makeRelative :: FilePath -> FilePath -> FilePath-isRelative :: FilePath -> Bool-isAbsolute :: FilePath -> Bool-isValid :: FilePath -> Bool-makeValid :: FilePath -> FilePath--module System.FilePath.Posix-pathSeparator :: Char-pathSeparators :: [Char]-isPathSeparator :: Char -> Bool-searchPathSeparator :: Char-isSearchPathSeparator :: Char -> Bool-extSeparator :: Char-isExtSeparator :: Char -> Bool-splitSearchPath :: String -> [FilePath]-getSearchPath :: IO [FilePath]-splitExtension :: FilePath -> (String, String)-takeExtension :: FilePath -> String-replaceExtension :: FilePath -> String -> FilePath-dropExtension :: FilePath -> FilePath-addExtension :: FilePath -> String -> FilePath-hasExtension :: FilePath -> Bool-(<.>) :: FilePath -> String -> FilePath-splitExtensions :: FilePath -> (FilePath, String)-dropExtensions :: FilePath -> FilePath-takeExtensions :: FilePath -> String-splitDrive :: FilePath -> (FilePath, FilePath)-joinDrive :: FilePath -> FilePath -> FilePath-takeDrive :: FilePath -> FilePath-hasDrive :: FilePath -> Bool-dropDrive :: FilePath -> FilePath-isDrive :: FilePath -> Bool-splitFileName :: FilePath -> (String, String)-takeFileName :: FilePath -> FilePath-replaceFileName :: FilePath -> String -> FilePath-dropFileName :: FilePath -> FilePath-takeBaseName :: FilePath -> String-replaceBaseName :: FilePath -> String -> FilePath-takeDirectory :: FilePath -> FilePath-replaceDirectory :: FilePath -> String -> FilePath-combine :: FilePath -> FilePath -> FilePath-(</>) :: FilePath -> FilePath -> FilePath-splitPath :: FilePath -> [FilePath]-joinPath :: [FilePath] -> FilePath-splitDirectories :: FilePath -> [FilePath]-hasTrailingPathSeparator :: FilePath -> Bool-addTrailingPathSeparator :: FilePath -> FilePath-dropTrailingPathSeparator :: FilePath -> FilePath-normalise :: FilePath -> FilePath-equalFilePath :: FilePath -> FilePath -> Bool-makeRelative :: FilePath -> FilePath -> FilePath-isRelative :: FilePath -> Bool-isAbsolute :: FilePath -> Bool-isValid :: FilePath -> Bool-makeValid :: FilePath -> FilePath--module System.FilePath--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module Control.Monad.Writer.Class-class (Monoid w, Monad m) => MonadWriter w m-tell :: MonadWriter w m => w -> m ()-listen :: MonadWriter w m => m a -> m (a, w)-pass :: MonadWriter w m => m (a, w -> w) -> m a-instance Monoid w => MonadWriter w (Writer w)-instance Monoid w => MonadWriter w (Writer w)-instance (Error e, MonadWriter w m) => MonadWriter w (ErrorT e m)-instance MonadWriter w m => MonadWriter w (ReaderT r m)-instance MonadWriter w m => MonadWriter w (StateT s m)-instance MonadWriter w m => MonadWriter w (StateT s m)-instance (Monoid w, Monad m) => MonadWriter w (WriterT w m)-instance (Monoid w, Monad m) => MonadWriter w (WriterT w m)-instance Monoid w => MonadWriter w (RWS r w s)-instance Monoid w => MonadWriter w (RWS r w s)-instance (Monoid w, Monad m) => MonadWriter w (RWST r w s m)-instance (Monoid w, Monad m) => MonadWriter w (RWST r w s m)-listens :: MonadWriter w m => (w -> b) -> m a -> m (a, b)-censor :: MonadWriter w m => (w -> w) -> m a -> m a--module Control.Monad.Trans-class MonadTrans t-lift :: (MonadTrans t, Monad m) => m a -> t m a-instance MonadTrans ListT-instance MonadTrans (ContT r)-instance Error e => MonadTrans (ErrorT e)-instance MonadTrans (ReaderT r)-instance MonadTrans (StateT s)-instance MonadTrans (StateT s)-instance Monoid w => MonadTrans (WriterT w)-instance Monoid w => MonadTrans (WriterT w)-instance Monoid w => MonadTrans (RWST r w s)-instance Monoid w => MonadTrans (RWST r w s)-class Monad m => MonadIO m-liftIO :: MonadIO m => IO a -> m a-instance MonadIO IO-instance MonadIO m => MonadIO (ListT m)-instance MonadIO m => MonadIO (ContT r m)-instance (Error e, MonadIO m) => MonadIO (ErrorT e m)-instance MonadIO m => MonadIO (ReaderT r m)-instance MonadIO m => MonadIO (StateT s m)-instance MonadIO m => MonadIO (StateT s m)-instance (Monoid w, MonadIO m) => MonadIO (WriterT w m)-instance (Monoid w, MonadIO m) => MonadIO (WriterT w m)-instance (Monoid w, MonadIO m) => MonadIO (RWST r w s m)-instance (Monoid w, MonadIO m) => MonadIO (RWST r w s m)--module Control.Monad.State.Class-class Monad m => MonadState s m-get :: MonadState s m => m s-put :: MonadState s m => s -> m ()-instance MonadState s m => MonadState s (ListT m)-instance MonadState s (State s)-instance MonadState s (State s)-instance MonadState s m => MonadState s (ContT r m)-instance (Error e, MonadState s m) => MonadState s (ErrorT e m)-instance MonadState s m => MonadState s (ReaderT r m)-instance Monad m => MonadState s (StateT s m)-instance Monad m => MonadState s (StateT s m)-instance (Monoid w, MonadState s m) => MonadState s (WriterT w m)-instance (Monoid w, MonadState s m) => MonadState s (WriterT w m)-instance Monoid w => MonadState s (RWS r w s)-instance Monoid w => MonadState s (RWS r w s)-instance (Monoid w, Monad m) => MonadState s (RWST r w s m)-instance (Monoid w, Monad m) => MonadState s (RWST r w s m)-modify :: MonadState s m => (s -> s) -> m ()-gets :: MonadState s m => (s -> a) -> m a--module Control.Monad.Reader.Class-class Monad m => MonadReader r m-ask :: MonadReader r m => m r-local :: MonadReader r m => (r -> r) -> m a -> m a-instance MonadReader r (Reader r)-instance MonadReader r ((->) r)-instance MonadReader s m => MonadReader s (ListT m)-instance (Error e, MonadReader r m) => MonadReader r (ErrorT e m)-instance Monad m => MonadReader r (ReaderT r m)-instance MonadReader r m => MonadReader r (StateT s m)-instance MonadReader r m => MonadReader r (StateT s m)-instance (Monoid w, MonadReader r m) => MonadReader r (WriterT w m)-instance (Monoid w, MonadReader r m) => MonadReader r (WriterT w m)-instance MonadReader r' m => MonadReader r' (ContT r m)-instance Monoid w => MonadReader r (RWS r w s)-instance Monoid w => MonadReader r (RWS r w s)-instance (Monoid w, Monad m) => MonadReader r (RWST r w s m)-instance (Monoid w, Monad m) => MonadReader r (RWST r w s m)-asks :: MonadReader r m => (r -> a) -> m a--module Control.Monad.RWS.Class-class (Monoid w, MonadReader r m, MonadWriter w m, MonadState s m) => MonadRWS r w s m-instance (Error e, MonadRWS r w s m) => MonadRWS r w s (ErrorT e m)-instance Monoid w => MonadRWS r w s (RWS r w s)-instance Monoid w => MonadRWS r w s (RWS r w s)-instance (Monoid w, Monad m) => MonadRWS r w s (RWST r w s m)-instance (Monoid w, Monad m) => MonadRWS r w s (RWST r w s m)--module Control.Monad.Identity-newtype Identity a-Identity :: a -> Identity a-runIdentity :: Identity a -> a-instance Functor Identity-instance Monad Identity-instance MonadFix Identity--module Control.Monad.Error.Class-class Error a-noMsg :: Error a => a-strMsg :: Error a => String -> a-instance Error IOError-instance Error String-class Monad m => MonadError e m-throwError :: MonadError e m => e -> m a-catchError :: MonadError e m => m a -> (e -> m a) -> m a-instance MonadError IOError IO-instance Error e => MonadError e (Either e)-instance MonadError e m => MonadError e (ListT m)-instance (Monad m, Error e) => MonadError e (ErrorT e m)-instance MonadError e m => MonadError e (ReaderT r m)-instance MonadError e m => MonadError e (StateT s m)-instance MonadError e m => MonadError e (StateT s m)-instance (Monoid w, MonadError e m) => MonadError e (WriterT w m)-instance (Monoid w, MonadError e m) => MonadError e (WriterT w m)-instance (Monoid w, MonadError e m) => MonadError e (RWST r w s m)-instance (Monoid w, MonadError e m) => MonadError e (RWST r w s m)--module Control.Monad.Cont.Class-class Monad m => MonadCont m-callCC :: MonadCont m => (a -> m b -> m a) -> m a-instance MonadCont (Cont r)-instance MonadCont m => MonadCont (ListT m)-instance Monad m => MonadCont (ContT r m)-instance (Error e, MonadCont m) => MonadCont (ErrorT e m)-instance MonadCont m => MonadCont (ReaderT r m)-instance MonadCont m => MonadCont (StateT s m)-instance MonadCont m => MonadCont (StateT s m)-instance (Monoid w, MonadCont m) => MonadCont (WriterT w m)-instance (Monoid w, MonadCont m) => MonadCont (WriterT w m)-instance (Monoid w, MonadCont m) => MonadCont (RWST r w s m)-instance (Monoid w, MonadCont m) => MonadCont (RWST r w s m)--module Control.Monad.Error-newtype ErrorT e m a-ErrorT :: m (Either e a) -> ErrorT e m a-runErrorT :: ErrorT e m a -> m (Either e a)-instance (Error e, MonadRWS r w s m) => MonadRWS r w s (ErrorT e m)-instance (Monad m, Error e) => MonadError e (ErrorT e m)-instance (Error e, MonadReader r m) => MonadReader r (ErrorT e m)-instance (Error e, MonadState s m) => MonadState s (ErrorT e m)-instance (Error e, MonadWriter w m) => MonadWriter w (ErrorT e m)-instance Error e => MonadTrans (ErrorT e)-instance Monad m => Functor (ErrorT e m)-instance (Monad m, Error e) => Monad (ErrorT e m)-instance (Error e, MonadCont m) => MonadCont (ErrorT e m)-instance (MonadFix m, Error e) => MonadFix (ErrorT e m)-instance (Error e, MonadIO m) => MonadIO (ErrorT e m)-instance (Monad m, Error e) => MonadPlus (ErrorT e m)-mapErrorT :: (m (Either e a) -> n (Either e' b)) -> ErrorT e m a -> ErrorT e' n b--module Control.Monad.List-newtype ListT m a-ListT :: m [a] -> ListT m a-runListT :: ListT m a -> m [a]-instance MonadTrans ListT-instance MonadError e m => MonadError e (ListT m)-instance MonadReader s m => MonadReader s (ListT m)-instance MonadState s m => MonadState s (ListT m)-instance Monad m => Functor (ListT m)-instance Monad m => Monad (ListT m)-instance MonadCont m => MonadCont (ListT m)-instance MonadIO m => MonadIO (ListT m)-instance Monad m => MonadPlus (ListT m)-mapListT :: (m [a] -> n [b]) -> ListT m a -> ListT n b--module Control.Monad.RWS.Lazy-newtype RWS r w s a-RWS :: (r -> s -> (a, s, w)) -> RWS r w s a-runRWS :: RWS r w s a -> r -> s -> (a, s, w)-instance Monoid w => MonadRWS r w s (RWS r w s)-instance Monoid w => MonadReader r (RWS r w s)-instance Monoid w => MonadState s (RWS r w s)-instance Monoid w => MonadWriter w (RWS r w s)-instance Functor (RWS r w s)-instance Monoid w => Monad (RWS r w s)-instance Monoid w => MonadFix (RWS r w s)-evalRWS :: RWS r w s a -> r -> s -> (a, w)-execRWS :: RWS r w s a -> r -> s -> (s, w)-mapRWS :: ((a, s, w) -> (b, s, w')) -> RWS r w s a -> RWS r w' s b-withRWS :: (r' -> s -> (r, s)) -> RWS r w s a -> RWS r' w s a-newtype RWST r w s m a-RWST :: (r -> s -> m (a, s, w)) -> RWST r w s m a-runRWST :: RWST r w s m a -> r -> s -> m (a, s, w)-instance (Monoid w, Monad m) => MonadRWS r w s (RWST r w s m)-instance (Monoid w, MonadError e m) => MonadError e (RWST r w s m)-instance (Monoid w, Monad m) => MonadReader r (RWST r w s m)-instance (Monoid w, Monad m) => MonadState s (RWST r w s m)-instance (Monoid w, Monad m) => MonadWriter w (RWST r w s m)-instance Monoid w => MonadTrans (RWST r w s)-instance Monad m => Functor (RWST r w s m)-instance (Monoid w, Monad m) => Monad (RWST r w s m)-instance (Monoid w, MonadCont m) => MonadCont (RWST r w s m)-instance (Monoid w, MonadFix m) => MonadFix (RWST r w s m)-instance (Monoid w, MonadIO m) => MonadIO (RWST r w s m)-instance (Monoid w, MonadPlus m) => MonadPlus (RWST r w s m)-evalRWST :: Monad m => RWST r w s m a -> r -> s -> m (a, w)-execRWST :: Monad m => RWST r w s m a -> r -> s -> m (s, w)-mapRWST :: (m (a, s, w) -> n (b, s, w')) -> RWST r w s m a -> RWST r w' s n b-withRWST :: (r' -> s -> (r, s)) -> RWST r w s m a -> RWST r' w s m a--module Control.Monad.RWS--module Control.Monad.RWS.Strict-newtype RWS r w s a-RWS :: (r -> s -> (a, s, w)) -> RWS r w s a-runRWS :: RWS r w s a -> r -> s -> (a, s, w)-instance Monoid w => MonadRWS r w s (RWS r w s)-instance Monoid w => MonadReader r (RWS r w s)-instance Monoid w => MonadState s (RWS r w s)-instance Monoid w => MonadWriter w (RWS r w s)-instance Functor (RWS r w s)-instance Monoid w => Monad (RWS r w s)-instance Monoid w => MonadFix (RWS r w s)-evalRWS :: RWS r w s a -> r -> s -> (a, w)-execRWS :: RWS r w s a -> r -> s -> (s, w)-mapRWS :: ((a, s, w) -> (b, s, w')) -> RWS r w s a -> RWS r w' s b-withRWS :: (r' -> s -> (r, s)) -> RWS r w s a -> RWS r' w s a-newtype RWST r w s m a-RWST :: (r -> s -> m (a, s, w)) -> RWST r w s m a-runRWST :: RWST r w s m a -> r -> s -> m (a, s, w)-instance (Monoid w, Monad m) => MonadRWS r w s (RWST r w s m)-instance (Monoid w, MonadError e m) => MonadError e (RWST r w s m)-instance (Monoid w, Monad m) => MonadReader r (RWST r w s m)-instance (Monoid w, Monad m) => MonadState s (RWST r w s m)-instance (Monoid w, Monad m) => MonadWriter w (RWST r w s m)-instance Monoid w => MonadTrans (RWST r w s)-instance Monad m => Functor (RWST r w s m)-instance (Monoid w, Monad m) => Monad (RWST r w s m)-instance (Monoid w, MonadCont m) => MonadCont (RWST r w s m)-instance (Monoid w, MonadFix m) => MonadFix (RWST r w s m)-instance (Monoid w, MonadIO m) => MonadIO (RWST r w s m)-instance (Monoid w, MonadPlus m) => MonadPlus (RWST r w s m)-evalRWST :: Monad m => RWST r w s m a -> r -> s -> m (a, w)-execRWST :: Monad m => RWST r w s m a -> r -> s -> m (s, w)-mapRWST :: (m (a, s, w) -> n (b, s, w')) -> RWST r w s m a -> RWST r w' s n b-withRWST :: (r' -> s -> (r, s)) -> RWST r w s m a -> RWST r' w s m a--module Control.Monad.Reader-newtype Reader r a-Reader :: (r -> a) -> Reader r a-runReader :: Reader r a -> r -> a-instance MonadReader r (Reader r)-instance Functor (Reader r)-instance Monad (Reader r)-instance MonadFix (Reader r)-mapReader :: (a -> b) -> Reader r a -> Reader r b-withReader :: (r' -> r) -> Reader r a -> Reader r' a-newtype ReaderT r m a-ReaderT :: (r -> m a) -> ReaderT r m a-runReaderT :: ReaderT r m a -> r -> m a-instance MonadError e m => MonadError e (ReaderT r m)-instance Monad m => MonadReader r (ReaderT r m)-instance MonadState s m => MonadState s (ReaderT r m)-instance MonadWriter w m => MonadWriter w (ReaderT r m)-instance MonadTrans (ReaderT r)-instance Monad m => Functor (ReaderT r m)-instance Monad m => Monad (ReaderT r m)-instance MonadCont m => MonadCont (ReaderT r m)-instance MonadFix m => MonadFix (ReaderT r m)-instance MonadIO m => MonadIO (ReaderT r m)-instance MonadPlus m => MonadPlus (ReaderT r m)-mapReaderT :: (m a -> n b) -> ReaderT w m a -> ReaderT w n b-withReaderT :: (r' -> r) -> ReaderT r m a -> ReaderT r' m a--module Control.Monad.State.Lazy-newtype State s a-State :: (s -> (a, s)) -> State s a-runState :: State s a -> s -> (a, s)-instance MonadState s (State s)-instance Functor (State s)-instance Monad (State s)-instance MonadFix (State s)-evalState :: State s a -> s -> a-execState :: State s a -> s -> s-mapState :: ((a, s) -> (b, s)) -> State s a -> State s b-withState :: (s -> s) -> State s a -> State s a-newtype StateT s m a-StateT :: (s -> m (a, s)) -> StateT s m a-runStateT :: StateT s m a -> s -> m (a, s)-instance MonadError e m => MonadError e (StateT s m)-instance MonadReader r m => MonadReader r (StateT s m)-instance Monad m => MonadState s (StateT s m)-instance MonadWriter w m => MonadWriter w (StateT s m)-instance MonadTrans (StateT s)-instance Monad m => Functor (StateT s m)-instance Monad m => Monad (StateT s m)-instance MonadCont m => MonadCont (StateT s m)-instance MonadFix m => MonadFix (StateT s m)-instance MonadIO m => MonadIO (StateT s m)-instance MonadPlus m => MonadPlus (StateT s m)-evalStateT :: Monad m => StateT s m a -> s -> m a-execStateT :: Monad m => StateT s m a -> s -> m s-mapStateT :: (m (a, s) -> n (b, s)) -> StateT s m a -> StateT s n b-withStateT :: (s -> s) -> StateT s m a -> StateT s m a--module Control.Monad.State--module Control.Monad.State.Strict-newtype State s a-State :: (s -> (a, s)) -> State s a-runState :: State s a -> s -> (a, s)-instance MonadState s (State s)-instance Functor (State s)-instance Monad (State s)-instance MonadFix (State s)-evalState :: State s a -> s -> a-execState :: State s a -> s -> s-mapState :: ((a, s) -> (b, s)) -> State s a -> State s b-withState :: (s -> s) -> State s a -> State s a-newtype StateT s m a-StateT :: (s -> m (a, s)) -> StateT s m a-runStateT :: StateT s m a -> s -> m (a, s)-instance MonadError e m => MonadError e (StateT s m)-instance MonadReader r m => MonadReader r (StateT s m)-instance Monad m => MonadState s (StateT s m)-instance MonadWriter w m => MonadWriter w (StateT s m)-instance MonadTrans (StateT s)-instance Monad m => Functor (StateT s m)-instance Monad m => Monad (StateT s m)-instance MonadCont m => MonadCont (StateT s m)-instance MonadFix m => MonadFix (StateT s m)-instance MonadIO m => MonadIO (StateT s m)-instance MonadPlus m => MonadPlus (StateT s m)-evalStateT :: Monad m => StateT s m a -> s -> m a-execStateT :: Monad m => StateT s m a -> s -> m s-mapStateT :: (m (a, s) -> n (b, s)) -> StateT s m a -> StateT s n b-withStateT :: (s -> s) -> StateT s m a -> StateT s m a--module Control.Monad.Writer.Lazy-newtype Writer w a-Writer :: (a, w) -> Writer w a-runWriter :: Writer w a -> (a, w)-instance Monoid w => MonadWriter w (Writer w)-instance Functor (Writer w)-instance Monoid w => Monad (Writer w)-instance Monoid w => MonadFix (Writer w)-execWriter :: Writer w a -> w-mapWriter :: ((a, w) -> (b, w')) -> Writer w a -> Writer w' b-newtype WriterT w m a-WriterT :: m (a, w) -> WriterT w m a-runWriterT :: WriterT w m a -> m (a, w)-instance (Monoid w, MonadError e m) => MonadError e (WriterT w m)-instance (Monoid w, MonadReader r m) => MonadReader r (WriterT w m)-instance (Monoid w, MonadState s m) => MonadState s (WriterT w m)-instance (Monoid w, Monad m) => MonadWriter w (WriterT w m)-instance Monoid w => MonadTrans (WriterT w)-instance Monad m => Functor (WriterT w m)-instance (Monoid w, Monad m) => Monad (WriterT w m)-instance (Monoid w, MonadCont m) => MonadCont (WriterT w m)-instance (Monoid w, MonadFix m) => MonadFix (WriterT w m)-instance (Monoid w, MonadIO m) => MonadIO (WriterT w m)-instance (Monoid w, MonadPlus m) => MonadPlus (WriterT w m)-execWriterT :: Monad m => WriterT w m a -> m w-mapWriterT :: (m (a, w) -> n (b, w')) -> WriterT w m a -> WriterT w' n b--module Control.Monad.Writer--module Control.Monad.Writer.Strict-newtype Writer w a-Writer :: (a, w) -> Writer w a-runWriter :: Writer w a -> (a, w)-instance Monoid w => MonadWriter w (Writer w)-instance Functor (Writer w)-instance Monoid w => Monad (Writer w)-instance Monoid w => MonadFix (Writer w)-execWriter :: Writer w a -> w-mapWriter :: ((a, w) -> (b, w')) -> Writer w a -> Writer w' b-newtype WriterT w m a-WriterT :: m (a, w) -> WriterT w m a-runWriterT :: WriterT w m a -> m (a, w)-instance (Monoid w, MonadError e m) => MonadError e (WriterT w m)-instance (Monoid w, MonadReader r m) => MonadReader r (WriterT w m)-instance (Monoid w, MonadState s m) => MonadState s (WriterT w m)-instance (Monoid w, Monad m) => MonadWriter w (WriterT w m)-instance Monoid w => MonadTrans (WriterT w)-instance Monad m => Functor (WriterT w m)-instance (Monoid w, Monad m) => Monad (WriterT w m)-instance (Monoid w, MonadCont m) => MonadCont (WriterT w m)-instance (Monoid w, MonadFix m) => MonadFix (WriterT w m)-instance (Monoid w, MonadIO m) => MonadIO (WriterT w m)-instance (Monoid w, MonadPlus m) => MonadPlus (WriterT w m)-execWriterT :: Monad m => WriterT w m a -> m w-mapWriterT :: (m (a, w) -> n (b, w')) -> WriterT w m a -> WriterT w' n b--module Control.Monad.Cont-newtype Cont r a-Cont :: (a -> r -> r) -> Cont r a-runCont :: Cont r a -> (a -> r) -> r-instance Functor (Cont r)-instance Monad (Cont r)-instance MonadCont (Cont r)-mapCont :: (r -> r) -> Cont r a -> Cont r a-withCont :: (b -> r -> a -> r) -> Cont r a -> Cont r b-newtype ContT r m a-ContT :: (a -> m r -> m r) -> ContT r m a-runContT :: ContT r m a -> (a -> m r) -> m r-instance MonadReader r' m => MonadReader r' (ContT r m)-instance MonadState s m => MonadState s (ContT r m)-instance MonadTrans (ContT r)-instance Monad m => Functor (ContT r m)-instance Monad m => Monad (ContT r m)-instance Monad m => MonadCont (ContT r m)-instance MonadIO m => MonadIO (ContT r m)-mapContT :: (m r -> m r) -> ContT r m a -> ContT r m a-withContT :: (b -> m r -> a -> m r) -> ContT r m a -> ContT r m b--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module System.Locale-data TimeLocale-TimeLocale :: [(String, String)] -> [(String, String)] -> [(String, String)] -> (String, String) -> String -> String -> String -> String -> TimeLocale-wDays :: TimeLocale -> [(String, String)]-months :: TimeLocale -> [(String, String)]-intervals :: TimeLocale -> [(String, String)]-amPm :: TimeLocale -> (String, String)-dateTimeFmt :: TimeLocale -> String-dateFmt :: TimeLocale -> String-timeFmt :: TimeLocale -> String-time12Fmt :: TimeLocale -> String-instance Eq TimeLocale-instance Ord TimeLocale-instance Show TimeLocale-defaultTimeLocale :: TimeLocale-iso8601DateFormat :: Maybe String -> String-rfc822DateFormat :: String--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module System.Time-data ClockTime-TOD :: Integer -> Integer -> ClockTime-instance Eq ClockTime-instance Ord ClockTime-instance Show ClockTime-getClockTime :: IO ClockTime-data TimeDiff-TimeDiff :: Int -> Int -> Int -> Int -> Int -> Int -> Integer -> TimeDiff-tdYear :: TimeDiff -> Int-tdMonth :: TimeDiff -> Int-tdDay :: TimeDiff -> Int-tdHour :: TimeDiff -> Int-tdMin :: TimeDiff -> Int-tdSec :: TimeDiff -> Int-tdPicosec :: TimeDiff -> Integer-instance Eq TimeDiff-instance Ord TimeDiff-instance Read TimeDiff-instance Show TimeDiff-noTimeDiff :: TimeDiff-diffClockTimes :: ClockTime -> ClockTime -> TimeDiff-addToClockTime :: TimeDiff -> ClockTime -> ClockTime-normalizeTimeDiff :: TimeDiff -> TimeDiff-timeDiffToString :: TimeDiff -> String-formatTimeDiff :: TimeLocale -> String -> TimeDiff -> String-data CalendarTime-CalendarTime :: Int -> Month -> Int -> Int -> Int -> Int -> Integer -> Day -> Int -> String -> Int -> Bool -> CalendarTime-ctYear :: CalendarTime -> Int-ctMonth :: CalendarTime -> Month-ctDay :: CalendarTime -> Int-ctHour :: CalendarTime -> Int-ctMin :: CalendarTime -> Int-ctSec :: CalendarTime -> Int-ctPicosec :: CalendarTime -> Integer-ctWDay :: CalendarTime -> Day-ctYDay :: CalendarTime -> Int-ctTZName :: CalendarTime -> String-ctTZ :: CalendarTime -> Int-ctIsDST :: CalendarTime -> Bool-instance Eq CalendarTime-instance Ord CalendarTime-instance Read CalendarTime-instance Show CalendarTime-data Month-January :: Month-February :: Month-March :: Month-April :: Month-May :: Month-June :: Month-July :: Month-August :: Month-September :: Month-October :: Month-November :: Month-December :: Month-instance Bounded Month-instance Enum Month-instance Eq Month-instance Ix Month-instance Ord Month-instance Read Month-instance Show Month-data Day-Sunday :: Day-Monday :: Day-Tuesday :: Day-Wednesday :: Day-Thursday :: Day-Friday :: Day-Saturday :: Day-instance Bounded Day-instance Enum Day-instance Eq Day-instance Ix Day-instance Ord Day-instance Read Day-instance Show Day-toCalendarTime :: ClockTime -> IO CalendarTime-toUTCTime :: ClockTime -> CalendarTime-toClockTime :: CalendarTime -> ClockTime-calendarTimeToString :: CalendarTime -> String-formatCalendarTime :: TimeLocale -> String -> CalendarTime -> String--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module Data.PackedString-data PackedString-instance Data PackedString-instance Eq PackedString-instance Ord PackedString-instance Show PackedString-instance Typeable PackedString-packString :: String -> PackedString-unpackPS :: PackedString -> String-hPutPS :: Handle -> PackedString -> IO ()-hGetPS :: Handle -> Int -> IO PackedString-nilPS :: PackedString-consPS :: Char -> PackedString -> PackedString-headPS :: PackedString -> Char-tailPS :: PackedString -> PackedString-nullPS :: PackedString -> Bool-appendPS :: PackedString -> PackedString -> PackedString-lengthPS :: PackedString -> Int-indexPS :: PackedString -> Int -> Char-mapPS :: (Char -> Char) -> PackedString -> PackedString-filterPS :: (Char -> Bool) -> PackedString -> PackedString-reversePS :: PackedString -> PackedString-concatPS :: [PackedString] -> PackedString-elemPS :: Char -> PackedString -> Bool-substrPS :: PackedString -> Int -> Int -> PackedString-takePS :: Int -> PackedString -> PackedString-dropPS :: Int -> PackedString -> PackedString-splitAtPS :: Int -> PackedString -> (PackedString, PackedString)-foldlPS :: (a -> Char -> a) -> a -> PackedString -> a-foldrPS :: (Char -> a -> a) -> a -> PackedString -> a-takeWhilePS :: (Char -> Bool) -> PackedString -> PackedString-dropWhilePS :: (Char -> Bool) -> PackedString -> PackedString-spanPS :: (Char -> Bool) -> PackedString -> (PackedString, PackedString)-breakPS :: (Char -> Bool) -> PackedString -> (PackedString, PackedString)-linesPS :: PackedString -> [PackedString]-unlinesPS :: [PackedString] -> PackedString-wordsPS :: PackedString -> [PackedString]-unwordsPS :: [PackedString] -> PackedString-splitPS :: Char -> PackedString -> [PackedString]-splitWithPS :: (Char -> Bool) -> PackedString -> [PackedString]-joinPS :: PackedString -> [PackedString] -> PackedString--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module Control.Parallel-par :: a -> b -> b-pseq :: a -> b -> b--module Control.Parallel.Strategies-type Done = ()-type Strategy a = a -> Done-(>|) :: Done -> Done -> Done-(>||) :: Done -> Done -> Done-using :: a -> Strategy a -> a-demanding :: a -> Done -> a-sparking :: a -> Done -> a-r0 :: Strategy a-rwhnf :: Strategy a-class NFData a-rnf :: NFData a => Strategy a-instance NFData Bool-instance NFData Char-instance NFData Double-instance NFData Float-instance NFData Int-instance NFData Int16-instance NFData Int32-instance NFData Int64-instance NFData Int8-instance NFData IntSet-instance NFData Integer-instance NFData Word16-instance NFData Word32-instance NFData Word64-instance NFData Word8-instance NFData ()-instance (NFData a, NFData b) => NFData (a, b)-instance (NFData a, NFData b, NFData c) => NFData (a, b, c)-instance (NFData a, NFData b, NFData c, NFData d) => NFData (a, b, c, d)-instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5) => NFData (a1, a2, a3, a4, a5)-instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6) => NFData (a1, a2, a3, a4, a5, a6)-instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7) => NFData (a1, a2, a3, a4, a5, a6, a7)-instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7, NFData a8) => NFData (a1, a2, a3, a4, a5, a6, a7, a8)-instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7, NFData a8, NFData a9) => NFData (a1, a2, a3, a4, a5, a6, a7, a8, a9)-instance (RealFloat a, NFData a) => NFData (Complex a)-instance NFData a => NFData (IntMap a)-instance NFData a => NFData (Maybe a)-instance (Integral a, NFData a) => NFData (Ratio a)-instance NFData a => NFData (Set a)-instance NFData a => NFData (Tree a)-instance NFData a => NFData [a]-instance (Ix a, NFData a, NFData b) => NFData (Array a b)-instance (NFData a, NFData b) => NFData (Assoc a b)-instance (NFData a, NFData b) => NFData (Either a b)-instance (NFData k, NFData a) => NFData (Map k a)-($|) :: (a -> b) -> Strategy a -> a -> b-($||) :: (a -> b) -> Strategy a -> a -> b-(.|) :: (b -> c) -> Strategy b -> (a -> b) -> a -> c-(.||) :: (b -> c) -> Strategy b -> (a -> b) -> a -> c-(-|) :: (a -> b) -> Strategy b -> (b -> c) -> a -> c-(-||) :: (a -> b) -> Strategy b -> (b -> c) -> a -> c-seqPair :: Strategy a -> Strategy b -> Strategy (a, b)-parPair :: Strategy a -> Strategy b -> Strategy (a, b)-seqTriple :: Strategy a -> Strategy b -> Strategy c -> Strategy (a, b, c)-parTriple :: Strategy a -> Strategy b -> Strategy c -> Strategy (a, b, c)-parList :: Strategy a -> Strategy [a]-parListN :: Integral b => b -> Strategy a -> Strategy [a]-parListNth :: Int -> Strategy a -> Strategy [a]-parListChunk :: Int -> Strategy a -> Strategy [a]-parMap :: Strategy b -> (a -> b) -> [a] -> [b]-parFlatMap :: Strategy [b] -> (a -> [b]) -> [a] -> [b]-parZipWith :: Strategy c -> (a -> b -> c) -> [a] -> [b] -> [c]-seqList :: Strategy a -> Strategy [a]-seqListN :: Integral a => a -> Strategy b -> Strategy [b]-seqListNth :: Int -> Strategy b -> Strategy [b]-parBuffer :: Int -> Strategy a -> [a] -> [a]-seqArr :: Ix b => Strategy a -> Strategy (Array b a)-parArr :: Ix b => Strategy a -> Strategy (Array b a)-sPar :: a -> Strategy b-sSeq :: a -> Strategy b-data Assoc a b-(:=) :: a -> b -> Assoc a b-instance (NFData a, NFData b) => NFData (Assoc a b)-fstPairFstList :: NFData a => Strategy [(a, b)]-force :: NFData a => a -> a-sforce :: NFData a => a -> b -> b--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module Text.ParserCombinators.Parsec.Pos-type SourceName = String-type Line = Int-type Column = Int-data SourcePos-instance Eq SourcePos-instance Ord SourcePos-instance Show SourcePos-sourceLine :: SourcePos -> Line-sourceColumn :: SourcePos -> Column-sourceName :: SourcePos -> SourceName-incSourceLine :: SourcePos -> Line -> SourcePos-incSourceColumn :: SourcePos -> Column -> SourcePos-setSourceLine :: SourcePos -> Line -> SourcePos-setSourceColumn :: SourcePos -> Column -> SourcePos-setSourceName :: SourcePos -> SourceName -> SourcePos-newPos :: SourceName -> Line -> Column -> SourcePos-initialPos :: SourceName -> SourcePos-updatePosChar :: SourcePos -> Char -> SourcePos-updatePosString :: SourcePos -> String -> SourcePos--module Text.ParserCombinators.Parsec.Error-data Message-SysUnExpect :: String -> Message-UnExpect :: String -> Message-Expect :: String -> Message-Message :: String -> Message-messageString :: Message -> String-messageCompare :: Message -> Message -> Ordering-messageEq :: Message -> Message -> Bool-data ParseError-instance Show ParseError-errorPos :: ParseError -> SourcePos-errorMessages :: ParseError -> [Message]-errorIsUnknown :: ParseError -> Bool-showErrorMessages :: String -> String -> String -> String -> String -> [Message] -> String-newErrorMessage :: Message -> SourcePos -> ParseError-newErrorUnknown :: SourcePos -> ParseError-addErrorMessage :: Message -> ParseError -> ParseError-setErrorPos :: SourcePos -> ParseError -> ParseError-setErrorMessage :: Message -> ParseError -> ParseError-mergeError :: ParseError -> ParseError -> ParseError--module Text.ParserCombinators.Parsec.Prim-(<?>) :: GenParser tok st a -> String -> GenParser tok st a-(<|>) :: GenParser tok st a -> GenParser tok st a -> GenParser tok st a-type Parser a = GenParser Char () a-data GenParser tok st a-instance Functor (GenParser tok st)-instance Monad (GenParser tok st)-instance MonadPlus (GenParser tok st)-runParser :: GenParser tok st a -> st -> SourceName -> [tok] -> Either ParseError a-parse :: GenParser tok () a -> SourceName -> [tok] -> Either ParseError a-parseFromFile :: Parser a -> SourceName -> IO (Either ParseError a)-parseTest :: Show a => GenParser tok () a -> [tok] -> IO ()-token :: (tok -> String) -> (tok -> SourcePos) -> (tok -> Maybe a) -> GenParser tok st a-tokens :: Eq tok => ([tok] -> String) -> (SourcePos -> [tok] -> SourcePos) -> [tok] -> GenParser tok st [tok]-tokenPrim :: (tok -> String) -> (SourcePos -> tok -> [tok] -> SourcePos) -> (tok -> Maybe a) -> GenParser tok st a-tokenPrimEx :: (tok -> String) -> (SourcePos -> tok -> [tok] -> SourcePos) -> Maybe (SourcePos -> tok -> [tok] -> st -> st) -> (tok -> Maybe a) -> GenParser tok st a-try :: GenParser tok st a -> GenParser tok st a-label :: GenParser tok st a -> String -> GenParser tok st a-labels :: GenParser tok st a -> [String] -> GenParser tok st a-unexpected :: String -> GenParser tok st a-pzero :: GenParser tok st a-many :: GenParser tok st a -> GenParser tok st [a]-skipMany :: GenParser tok st a -> GenParser tok st ()-getState :: GenParser tok st st-setState :: st -> GenParser tok st ()-updateState :: (st -> st) -> GenParser tok st ()-getPosition :: GenParser tok st SourcePos-setPosition :: SourcePos -> GenParser tok st ()-getInput :: GenParser tok st [tok]-setInput :: [tok] -> GenParser tok st ()-data State tok st-State :: [tok] -> SourcePos -> st -> State tok st-stateInput :: State tok st -> [tok]-statePos :: State tok st -> SourcePos-stateUser :: State tok st -> st-getParserState :: GenParser tok st (State tok st)-setParserState :: State tok st -> GenParser tok st (State tok st)--module Text.ParserCombinators.Parsec.Combinator-choice :: [GenParser tok st a] -> GenParser tok st a-count :: Int -> GenParser tok st a -> GenParser tok st [a]-between :: GenParser tok st open -> GenParser tok st close -> GenParser tok st a -> GenParser tok st a-option :: a -> GenParser tok st a -> GenParser tok st a-optionMaybe :: GenParser tok st a -> GenParser tok st (Maybe a)-optional :: GenParser tok st a -> GenParser tok st ()-skipMany1 :: GenParser tok st a -> GenParser tok st ()-many1 :: GenParser tok st a -> GenParser tok st [a]-sepBy :: GenParser tok st a -> GenParser tok st sep -> GenParser tok st [a]-sepBy1 :: GenParser tok st a -> GenParser tok st sep -> GenParser tok st [a]-endBy :: GenParser tok st a -> GenParser tok st sep -> GenParser tok st [a]-endBy1 :: GenParser tok st a -> GenParser tok st sep -> GenParser tok st [a]-sepEndBy :: GenParser tok st a -> GenParser tok st sep -> GenParser tok st [a]-sepEndBy1 :: GenParser tok st a -> GenParser tok st sep -> GenParser tok st [a]-chainl :: GenParser tok st a -> GenParser tok st (a -> a -> a) -> a -> GenParser tok st a-chainl1 :: GenParser tok st a -> GenParser tok st (a -> a -> a) -> GenParser tok st a-chainr :: GenParser tok st a -> GenParser tok st (a -> a -> a) -> a -> GenParser tok st a-chainr1 :: GenParser tok st a -> GenParser tok st (a -> a -> a) -> GenParser tok st a-eof :: Show tok => GenParser tok st ()-notFollowedBy :: Show tok => GenParser tok st tok -> GenParser tok st ()-manyTill :: GenParser tok st a -> GenParser tok st end -> GenParser tok st [a]-lookAhead :: GenParser tok st a -> GenParser tok st a-anyToken :: Show tok => GenParser tok st tok--module Text.ParserCombinators.Parsec.Expr-data Assoc-AssocNone :: Assoc-AssocLeft :: Assoc-AssocRight :: Assoc-data Operator t st a-Infix :: GenParser t st (a -> a -> a) -> Assoc -> Operator t st a-Prefix :: GenParser t st (a -> a) -> Operator t st a-Postfix :: GenParser t st (a -> a) -> Operator t st a-type OperatorTable t st a = [[Operator t st a]]-buildExpressionParser :: OperatorTable tok st a -> GenParser tok st a -> GenParser tok st a--module Text.ParserCombinators.Parsec.Char-type CharParser st a = GenParser Char st a-spaces :: CharParser st ()-space :: CharParser st Char-newline :: CharParser st Char-tab :: CharParser st Char-upper :: CharParser st Char-lower :: CharParser st Char-alphaNum :: CharParser st Char-letter :: CharParser st Char-digit :: CharParser st Char-hexDigit :: CharParser st Char-octDigit :: CharParser st Char-char :: Char -> CharParser st Char-string :: String -> CharParser st String-anyChar :: CharParser st Char-oneOf :: [Char] -> CharParser st Char-noneOf :: [Char] -> CharParser st Char-satisfy :: (Char -> Bool) -> CharParser st Char--module Text.ParserCombinators.Parsec-data ParseError-instance Show ParseError-errorPos :: ParseError -> SourcePos-data SourcePos-instance Eq SourcePos-instance Ord SourcePos-instance Show SourcePos-type SourceName = String-type Line = Int-type Column = Int-sourceName :: SourcePos -> SourceName-sourceLine :: SourcePos -> Line-sourceColumn :: SourcePos -> Column-incSourceLine :: SourcePos -> Line -> SourcePos-incSourceColumn :: SourcePos -> Column -> SourcePos-setSourceLine :: SourcePos -> Line -> SourcePos-setSourceColumn :: SourcePos -> Column -> SourcePos-setSourceName :: SourcePos -> SourceName -> SourcePos--module Text.ParserCombinators.Parsec.Perm-data PermParser tok st a-permute :: PermParser tok st a -> GenParser tok st a-(<||>) :: PermParser tok st (a -> b) -> GenParser tok st a -> PermParser tok st b-(<$$>) :: (a -> b) -> GenParser tok st a -> PermParser tok st b-(<|?>) :: PermParser tok st (a -> b) -> (a, GenParser tok st a) -> PermParser tok st b-(<$?>) :: (a -> b) -> (a, GenParser tok st a) -> PermParser tok st b--module Text.ParserCombinators.Parsec.Token-data LanguageDef st-LanguageDef :: String -> String -> String -> Bool -> CharParser st Char -> CharParser st Char -> CharParser st Char -> CharParser st Char -> [String] -> [String] -> Bool -> LanguageDef st-commentStart :: LanguageDef st -> String-commentEnd :: LanguageDef st -> String-commentLine :: LanguageDef st -> String-nestedComments :: LanguageDef st -> Bool-identStart :: LanguageDef st -> CharParser st Char-identLetter :: LanguageDef st -> CharParser st Char-opStart :: LanguageDef st -> CharParser st Char-opLetter :: LanguageDef st -> CharParser st Char-reservedNames :: LanguageDef st -> [String]-reservedOpNames :: LanguageDef st -> [String]-caseSensitive :: LanguageDef st -> Bool-data TokenParser st-TokenParser :: CharParser st String -> (String -> CharParser st ()) -> CharParser st String -> (String -> CharParser st ()) -> CharParser st Char -> CharParser st String -> CharParser st Integer -> CharParser st Integer -> CharParser st Double -> CharParser st (Either Integer Double) -> CharParser st Integer -> CharParser st Integer -> CharParser st Integer -> (String -> CharParser st String) -> (CharParser st a -> CharParser st a) -> CharParser st () -> (CharParser st a -> CharParser st a) -> (CharParser st a -> CharParser st a) -> (CharParser st a -> CharParser st a) -> (CharParser st a -> CharParser st a) -> (CharParser st a -> CharParser st a) -> CharParser st String -> CharParser st String -> CharParser st String -> CharParser st String -> (CharParser st a -> CharParser st [a]) -> (CharParser st a -> CharParser st [a]) -> (CharParser st a -> CharParser st [a]) -> (CharParser st a -> CharParser st [a]) -> TokenParser st-identifier :: TokenParser st -> CharParser st String-reserved :: TokenParser st -> String -> CharParser st ()-operator :: TokenParser st -> CharParser st String-reservedOp :: TokenParser st -> String -> CharParser st ()-charLiteral :: TokenParser st -> CharParser st Char-stringLiteral :: TokenParser st -> CharParser st String-natural :: TokenParser st -> CharParser st Integer-integer :: TokenParser st -> CharParser st Integer-float :: TokenParser st -> CharParser st Double-naturalOrFloat :: TokenParser st -> CharParser st (Either Integer Double)-decimal :: TokenParser st -> CharParser st Integer-hexadecimal :: TokenParser st -> CharParser st Integer-octal :: TokenParser st -> CharParser st Integer-symbol :: TokenParser st -> String -> CharParser st String-lexeme :: TokenParser st -> CharParser st a -> CharParser st a-whiteSpace :: TokenParser st -> CharParser st ()-parens :: TokenParser st -> CharParser st a -> CharParser st a-braces :: TokenParser st -> CharParser st a -> CharParser st a-angles :: TokenParser st -> CharParser st a -> CharParser st a-brackets :: TokenParser st -> CharParser st a -> CharParser st a-squares :: TokenParser st -> CharParser st a -> CharParser st a-semi :: TokenParser st -> CharParser st String-comma :: TokenParser st -> CharParser st String-colon :: TokenParser st -> CharParser st String-dot :: TokenParser st -> CharParser st String-semiSep :: TokenParser st -> CharParser st a -> CharParser st [a]-semiSep1 :: TokenParser st -> CharParser st a -> CharParser st [a]-commaSep :: TokenParser st -> CharParser st a -> CharParser st [a]-commaSep1 :: TokenParser st -> CharParser st a -> CharParser st [a]-makeTokenParser :: LanguageDef st -> TokenParser st--module Text.ParserCombinators.Parsec.Language-haskellDef :: LanguageDef st-haskell :: TokenParser st-mondrianDef :: LanguageDef st-mondrian :: TokenParser st-emptyDef :: LanguageDef st-haskellStyle :: LanguageDef st-javaStyle :: LanguageDef st-data LanguageDef st-LanguageDef :: String -> String -> String -> Bool -> CharParser st Char -> CharParser st Char -> CharParser st Char -> CharParser st Char -> [String] -> [String] -> Bool -> LanguageDef st-commentStart :: LanguageDef st -> String-commentEnd :: LanguageDef st -> String-commentLine :: LanguageDef st -> String-nestedComments :: LanguageDef st -> Bool-identStart :: LanguageDef st -> CharParser st Char-identLetter :: LanguageDef st -> CharParser st Char-opStart :: LanguageDef st -> CharParser st Char-opLetter :: LanguageDef st -> CharParser st Char-reservedNames :: LanguageDef st -> [String]-reservedOpNames :: LanguageDef st -> [String]-caseSensitive :: LanguageDef st -> Bool--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module System.Process-data ProcessHandle-runCommand :: String -> IO ProcessHandle-runProcess :: FilePath -> [String] -> Maybe FilePath -> Maybe [(String, String)] -> Maybe Handle -> Maybe Handle -> Maybe Handle -> IO ProcessHandle-runInteractiveCommand :: String -> IO (Handle, Handle, Handle, ProcessHandle)-runInteractiveProcess :: FilePath -> [String] -> Maybe FilePath -> Maybe [(String, String)] -> IO (Handle, Handle, Handle, ProcessHandle)-waitForProcess :: ProcessHandle -> IO ExitCode-getProcessExitCode :: ProcessHandle -> IO (Maybe ExitCode)-terminateProcess :: ProcessHandle -> IO ()--module System.Cmd-system :: String -> IO ExitCode-rawSystem :: String -> [String] -> IO ExitCode--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module System.Random-class RandomGen g-next :: RandomGen g => g -> (Int, g)-split :: RandomGen g => g -> (g, g)-genRange :: RandomGen g => g -> (Int, Int)-instance RandomGen StdGen-data StdGen-instance RandomGen StdGen-instance Read StdGen-instance Show StdGen-mkStdGen :: Int -> StdGen-getStdRandom :: (StdGen -> (a, StdGen)) -> IO a-getStdGen :: IO StdGen-setStdGen :: StdGen -> IO ()-newStdGen :: IO StdGen-class Random a-randomR :: (Random a, RandomGen g) => (a, a) -> g -> (a, g)-random :: (Random a, RandomGen g) => g -> (a, g)-randomRs :: (Random a, RandomGen g) => (a, a) -> g -> [a]-randoms :: (Random a, RandomGen g) => g -> [a]-randomRIO :: Random a => (a, a) -> IO a-randomIO :: Random a => IO a-instance Random Bool-instance Random Char-instance Random Double-instance Random Float-instance Random Int-instance Random Integer--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module Control.Monad.STM-check :: Bool -> STM a--module Control.Concurrent.STM.TVar--module Control.Concurrent.STM.TMVar-data TMVar a-newTMVar :: a -> STM (TMVar a)-newEmptyTMVar :: STM (TMVar a)-newTMVarIO :: a -> IO (TMVar a)-newEmptyTMVarIO :: IO (TMVar a)-takeTMVar :: TMVar a -> STM a-putTMVar :: TMVar a -> a -> STM ()-readTMVar :: TMVar a -> STM a-swapTMVar :: TMVar a -> a -> STM a-tryTakeTMVar :: TMVar a -> STM (Maybe a)-tryPutTMVar :: TMVar a -> a -> STM Bool-isEmptyTMVar :: TMVar a -> STM Bool--module Control.Concurrent.STM.TChan-data TChan a-newTChan :: STM (TChan a)-newTChanIO :: IO (TChan a)-readTChan :: TChan a -> STM a-writeTChan :: TChan a -> a -> STM ()-dupTChan :: TChan a -> STM (TChan a)-unGetTChan :: TChan a -> a -> STM ()-isEmptyTChan :: TChan a -> STM Bool--module Control.Concurrent.STM.TArray-data TArray i e-instance MArray TArray e STM--module Control.Concurrent.STM--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module Language.Haskell.TH.Syntax-class (Monad m, Functor m) => Quasi m-qNewName :: Quasi m => String -> m Name-qReport :: Quasi m => Bool -> String -> m ()-qRecover :: Quasi m => m a -> m a -> m a-qReify :: Quasi m => Name -> m Info-qCurrentModule :: Quasi m => m String-qRunIO :: Quasi m => IO a -> m a-instance Quasi IO-instance Quasi Q-class Lift t-lift :: Lift t => t -> Q Exp-instance Lift Bool-instance Lift Char-instance Lift Int-instance Lift Integer-instance (Lift a, Lift b) => Lift (a, b)-instance (Lift a, Lift b, Lift c) => Lift (a, b, c)-instance (Lift a, Lift b, Lift c, Lift d) => Lift (a, b, c, d)-instance (Lift a, Lift b, Lift c, Lift d, Lift e) => Lift (a, b, c, d, e)-instance (Lift a, Lift b, Lift c, Lift d, Lift e, Lift f) => Lift (a, b, c, d, e, f)-instance (Lift a, Lift b, Lift c, Lift d, Lift e, Lift f, Lift g) => Lift (a, b, c, d, e, f, g)-instance Lift a => Lift (Maybe a)-instance Lift a => Lift [a]-instance (Lift a, Lift b) => Lift (Either a b)-data Q a-instance Functor Q-instance Monad Q-instance Quasi Q-runQ :: Quasi m => Q a -> m a-report :: Bool -> String -> Q ()-recover :: Q a -> Q a -> Q a-reify :: Name -> Q Info-currentModule :: Q String-runIO :: IO a -> Q a-data Name-Name :: OccName -> NameFlavour -> Name-instance Data Name-instance Eq Name-instance Ord Name-instance Ppr Name-instance Show Name-instance Typeable Name-mkName :: String -> Name-newName :: String -> Q Name-nameBase :: Name -> String-nameModule :: Name -> Maybe String-showName :: Name -> String-showName' :: NameIs -> Name -> String-data NameIs-Alone :: NameIs-Applied :: NameIs-Infix :: NameIs-data Dec-FunD :: Name -> [Clause] -> Dec-ValD :: Pat -> Body -> [Dec] -> Dec-DataD :: Cxt -> Name -> [Name] -> [Con] -> [Name] -> Dec-NewtypeD :: Cxt -> Name -> [Name] -> Con -> [Name] -> Dec-TySynD :: Name -> [Name] -> Type -> Dec-ClassD :: Cxt -> Name -> [Name] -> [FunDep] -> [Dec] -> Dec-InstanceD :: Cxt -> Type -> [Dec] -> Dec-SigD :: Name -> Type -> Dec-ForeignD :: Foreign -> Dec-instance Data Dec-instance Eq Dec-instance Ppr Dec-instance Show Dec-instance Typeable Dec-data Exp-VarE :: Name -> Exp-ConE :: Name -> Exp-LitE :: Lit -> Exp-AppE :: Exp -> Exp -> Exp-InfixE :: Maybe Exp -> Exp -> Maybe Exp -> Exp-LamE :: [Pat] -> Exp -> Exp-TupE :: [Exp] -> Exp-CondE :: Exp -> Exp -> Exp -> Exp-LetE :: [Dec] -> Exp -> Exp-CaseE :: Exp -> [Match] -> Exp-DoE :: [Stmt] -> Exp-CompE :: [Stmt] -> Exp-ArithSeqE :: Range -> Exp-ListE :: [Exp] -> Exp-SigE :: Exp -> Type -> Exp-RecConE :: Name -> [FieldExp] -> Exp-RecUpdE :: Exp -> [FieldExp] -> Exp-instance Data Exp-instance Eq Exp-instance Ppr Exp-instance Show Exp-instance Typeable Exp-data Con-NormalC :: Name -> [StrictType] -> Con-RecC :: Name -> [VarStrictType] -> Con-InfixC :: StrictType -> Name -> StrictType -> Con-ForallC :: [Name] -> Cxt -> Con -> Con-instance Data Con-instance Eq Con-instance Ppr Con-instance Show Con-instance Typeable Con-data Type-ForallT :: [Name] -> Cxt -> Type -> Type-VarT :: Name -> Type-ConT :: Name -> Type-TupleT :: Int -> Type-ArrowT :: Type-ListT :: Type-AppT :: Type -> Type -> Type-instance Data Type-instance Eq Type-instance Ppr Type-instance Show Type-instance Typeable Type-type Cxt = [Type]-data Match-Match :: Pat -> Body -> [Dec] -> Match-instance Data Match-instance Eq Match-instance Ppr Match-instance Show Match-instance Typeable Match-data Clause-Clause :: [Pat] -> Body -> [Dec] -> Clause-instance Data Clause-instance Eq Clause-instance Ppr Clause-instance Show Clause-instance Typeable Clause-data Body-GuardedB :: [(Guard, Exp)] -> Body-NormalB :: Exp -> Body-instance Data Body-instance Eq Body-instance Show Body-instance Typeable Body-data Guard-NormalG :: Exp -> Guard-PatG :: [Stmt] -> Guard-instance Data Guard-instance Eq Guard-instance Show Guard-instance Typeable Guard-data Stmt-BindS :: Pat -> Exp -> Stmt-LetS :: [Dec] -> Stmt-NoBindS :: Exp -> Stmt-ParS :: [[Stmt]] -> Stmt-instance Data Stmt-instance Eq Stmt-instance Ppr Stmt-instance Show Stmt-instance Typeable Stmt-data Range-FromR :: Exp -> Range-FromThenR :: Exp -> Exp -> Range-FromToR :: Exp -> Exp -> Range-FromThenToR :: Exp -> Exp -> Exp -> Range-instance Data Range-instance Eq Range-instance Ppr Range-instance Show Range-instance Typeable Range-data Lit-CharL :: Char -> Lit-StringL :: String -> Lit-IntegerL :: Integer -> Lit-RationalL :: Rational -> Lit-IntPrimL :: Integer -> Lit-FloatPrimL :: Rational -> Lit-DoublePrimL :: Rational -> Lit-instance Data Lit-instance Eq Lit-instance Show Lit-instance Typeable Lit-data Pat-LitP :: Lit -> Pat-VarP :: Name -> Pat-TupP :: [Pat] -> Pat-ConP :: Name -> [Pat] -> Pat-InfixP :: Pat -> Name -> Pat -> Pat-TildeP :: Pat -> Pat-AsP :: Name -> Pat -> Pat-WildP :: Pat-RecP :: Name -> [FieldPat] -> Pat-ListP :: [Pat] -> Pat-SigP :: Pat -> Type -> Pat-instance Data Pat-instance Eq Pat-instance Ppr Pat-instance Show Pat-instance Typeable Pat-type FieldExp = (Name, Exp)-type FieldPat = (Name, Pat)-data Strict-IsStrict :: Strict-NotStrict :: Strict-instance Data Strict-instance Eq Strict-instance Show Strict-instance Typeable Strict-data Foreign-ImportF :: Callconv -> Safety -> String -> Name -> Type -> Foreign-ExportF :: Callconv -> String -> Name -> Type -> Foreign-instance Data Foreign-instance Eq Foreign-instance Ppr Foreign-instance Show Foreign-instance Typeable Foreign-data Callconv-CCall :: Callconv-StdCall :: Callconv-instance Data Callconv-instance Eq Callconv-instance Show Callconv-instance Typeable Callconv-data Safety-Unsafe :: Safety-Safe :: Safety-Threadsafe :: Safety-instance Data Safety-instance Eq Safety-instance Show Safety-instance Typeable Safety-type StrictType = (Strict, Type)-type VarStrictType = (Name, Strict, Type)-data FunDep-FunDep :: [Name] -> [Name] -> FunDep-instance Data FunDep-instance Eq FunDep-instance Ppr FunDep-instance Show FunDep-instance Typeable FunDep-data Info-ClassI :: Dec -> Info-ClassOpI :: Name -> Type -> Name -> Fixity -> Info-TyConI :: Dec -> Info-PrimTyConI :: Name -> Int -> Bool -> Info-DataConI :: Name -> Type -> Name -> Fixity -> Info-VarI :: Name -> Type -> Maybe Dec -> Fixity -> Info-TyVarI :: Name -> Type -> Info-instance Data Info-instance Ppr Info-instance Show Info-instance Typeable Info-data Fixity-Fixity :: Int -> FixityDirection -> Fixity-instance Data Fixity-instance Eq Fixity-instance Show Fixity-instance Typeable Fixity-data FixityDirection-InfixL :: FixityDirection-InfixR :: FixityDirection-InfixN :: FixityDirection-instance Data FixityDirection-instance Eq FixityDirection-instance Show FixityDirection-instance Typeable FixityDirection-defaultFixity :: Fixity-maxPrecedence :: Int-returnQ :: a -> Q a-bindQ :: Q a -> (a -> Q b) -> Q b-sequenceQ :: [Q a] -> Q [a]-data NameFlavour-NameS :: NameFlavour-NameQ :: ModName -> NameFlavour-NameU :: Int# -> NameFlavour-NameL :: Int# -> NameFlavour-NameG :: NameSpace -> PkgName -> ModName -> NameFlavour-instance Data NameFlavour-instance Eq NameFlavour-instance Ord NameFlavour-instance Typeable NameFlavour-data NameSpace-VarName :: NameSpace-DataName :: NameSpace-TcClsName :: NameSpace-instance Data NameSpace-instance Eq NameSpace-instance Ord NameSpace-instance Typeable NameSpace-mkNameG_v :: String -> String -> String -> Name-mkNameG_d :: String -> String -> String -> Name-mkNameG_tc :: String -> String -> String -> Name-type Uniq = Int-mkNameL :: String -> Uniq -> Name-mkNameU :: String -> Uniq -> Name-tupleTypeName :: Int -> Name-tupleDataName :: Int -> Name-type OccName = PackedString-mkOccName :: String -> OccName-occString :: OccName -> String-type ModName = PackedString-mkModName :: String -> ModName-modString :: ModName -> String-type PkgName = PackedString-mkPkgName :: String -> PkgName-pkgString :: PkgName -> String--module Language.Haskell.TH.PprLib-type Doc = PprM Doc-instance Show Doc-data PprM a-instance Monad PprM-empty :: Doc-semi :: Doc-comma :: Doc-colon :: Doc-space :: Doc-equals :: Doc-lparen :: Doc-rparen :: Doc-lbrack :: Doc-rbrack :: Doc-lbrace :: Doc-rbrace :: Doc-text :: String -> Doc-char :: Char -> Doc-ptext :: String -> Doc-int :: Int -> Doc-integer :: Integer -> Doc-float :: Float -> Doc-double :: Double -> Doc-rational :: Rational -> Doc-parens :: Doc -> Doc-brackets :: Doc -> Doc-braces :: Doc -> Doc-quotes :: Doc -> Doc-doubleQuotes :: Doc -> Doc-(<>) :: Doc -> Doc -> Doc-(<+>) :: Doc -> Doc -> Doc-hcat :: [Doc] -> Doc-hsep :: [Doc] -> Doc-($$) :: Doc -> Doc -> Doc-($+$) :: Doc -> Doc -> Doc-vcat :: [Doc] -> Doc-sep :: [Doc] -> Doc-cat :: [Doc] -> Doc-fsep :: [Doc] -> Doc-fcat :: [Doc] -> Doc-nest :: Int -> Doc -> Doc-hang :: Doc -> Int -> Doc -> Doc-punctuate :: Doc -> [Doc] -> [Doc]-isEmpty :: Doc -> PprM Bool-to_HPJ_Doc :: Doc -> Doc-pprName :: Name -> Doc-pprName' :: NameIs -> Name -> Doc--module Language.Haskell.TH.Ppr-nestDepth :: Int-type Precedence = Int-appPrec :: Precedence-opPrec :: Precedence-noPrec :: Precedence-parensIf :: Bool -> Doc -> Doc-pprint :: Ppr a => a -> String-class Ppr a-ppr :: Ppr a => a -> Doc-ppr_list :: Ppr a => [a] -> Doc-instance Ppr Clause-instance Ppr Con-instance Ppr Dec-instance Ppr Exp-instance Ppr Foreign-instance Ppr FunDep-instance Ppr Info-instance Ppr Match-instance Ppr Name-instance Ppr Pat-instance Ppr Range-instance Ppr Stmt-instance Ppr Type-instance Ppr a => Ppr [a]-pprFixity :: Name -> Fixity -> Doc-pprInfixExp :: Exp -> Doc-pprExp :: Precedence -> Exp -> Doc-pprFields :: [(Name, Exp)] -> Doc-pprMaybeExp :: Precedence -> Maybe Exp -> Doc-pprBody :: Bool -> Body -> Doc-pprLit :: Precedence -> Lit -> Doc-pprPat :: Precedence -> Pat -> Doc-pprVarStrictType :: (Name, Strict, Type) -> Doc-pprStrictType :: (Strict, Type) -> Doc-pprParendType :: Type -> Doc-pprTyApp :: (Type, [Type]) -> Doc-split :: Type -> (Type, [Type])-pprCxt :: Cxt -> Doc-where_clause :: [Dec] -> Doc-showtextl :: Show a => a -> Doc--module Language.Haskell.TH.Lib-type InfoQ = Q Info-type PatQ = Q Pat-type FieldPatQ = Q FieldPat-type ExpQ = Q Exp-type DecQ = Q Dec-type ConQ = Q Con-type TypeQ = Q Type-type CxtQ = Q Cxt-type MatchQ = Q Match-type ClauseQ = Q Clause-type BodyQ = Q Body-type GuardQ = Q Guard-type StmtQ = Q Stmt-type RangeQ = Q Range-type StrictTypeQ = Q StrictType-type VarStrictTypeQ = Q VarStrictType-type FieldExpQ = Q FieldExp-intPrimL :: Integer -> Lit-floatPrimL :: Rational -> Lit-doublePrimL :: Rational -> Lit-integerL :: Integer -> Lit-charL :: Char -> Lit-stringL :: String -> Lit-rationalL :: Rational -> Lit-litP :: Lit -> PatQ-varP :: Name -> PatQ-tupP :: [PatQ] -> PatQ-conP :: Name -> [PatQ] -> PatQ-infixP :: PatQ -> Name -> PatQ -> PatQ-tildeP :: PatQ -> PatQ-asP :: Name -> PatQ -> PatQ-wildP :: PatQ-recP :: Name -> [FieldPatQ] -> PatQ-listP :: [PatQ] -> PatQ-sigP :: PatQ -> TypeQ -> PatQ-fieldPat :: Name -> PatQ -> FieldPatQ-bindS :: PatQ -> ExpQ -> StmtQ-letS :: [DecQ] -> StmtQ-noBindS :: ExpQ -> StmtQ-parS :: [[StmtQ]] -> StmtQ-fromR :: ExpQ -> RangeQ-fromThenR :: ExpQ -> ExpQ -> RangeQ-fromToR :: ExpQ -> ExpQ -> RangeQ-fromThenToR :: ExpQ -> ExpQ -> ExpQ -> RangeQ-normalB :: ExpQ -> BodyQ-guardedB :: [Q (Guard, Exp)] -> BodyQ-normalG :: ExpQ -> GuardQ-normalGE :: ExpQ -> ExpQ -> Q (Guard, Exp)-patG :: [StmtQ] -> GuardQ-patGE :: [StmtQ] -> ExpQ -> Q (Guard, Exp)-match :: PatQ -> BodyQ -> [DecQ] -> MatchQ-clause :: [PatQ] -> BodyQ -> [DecQ] -> ClauseQ-dyn :: String -> Q Exp-global :: Name -> ExpQ-varE :: Name -> ExpQ-conE :: Name -> ExpQ-litE :: Lit -> ExpQ-appE :: ExpQ -> ExpQ -> ExpQ-infixE :: Maybe ExpQ -> ExpQ -> Maybe ExpQ -> ExpQ-infixApp :: ExpQ -> ExpQ -> ExpQ -> ExpQ-sectionL :: ExpQ -> ExpQ -> ExpQ-sectionR :: ExpQ -> ExpQ -> ExpQ-lamE :: [PatQ] -> ExpQ -> ExpQ-lam1E :: PatQ -> ExpQ -> ExpQ-tupE :: [ExpQ] -> ExpQ-condE :: ExpQ -> ExpQ -> ExpQ -> ExpQ-letE :: [DecQ] -> ExpQ -> ExpQ-caseE :: ExpQ -> [MatchQ] -> ExpQ-doE :: [StmtQ] -> ExpQ-compE :: [StmtQ] -> ExpQ-arithSeqE :: RangeQ -> ExpQ-fromE :: ExpQ -> ExpQ-fromThenE :: ExpQ -> ExpQ -> ExpQ-fromToE :: ExpQ -> ExpQ -> ExpQ-fromThenToE :: ExpQ -> ExpQ -> ExpQ -> ExpQ-listE :: [ExpQ] -> ExpQ-sigE :: ExpQ -> TypeQ -> ExpQ-recConE :: Name -> [Q (Name, Exp)] -> ExpQ-recUpdE :: ExpQ -> [Q (Name, Exp)] -> ExpQ-stringE :: String -> ExpQ-fieldExp :: Name -> ExpQ -> Q (Name, Exp)-valD :: PatQ -> BodyQ -> [DecQ] -> DecQ-funD :: Name -> [ClauseQ] -> DecQ-tySynD :: Name -> [Name] -> TypeQ -> DecQ-dataD :: CxtQ -> Name -> [Name] -> [ConQ] -> [Name] -> DecQ-newtypeD :: CxtQ -> Name -> [Name] -> ConQ -> [Name] -> DecQ-classD :: CxtQ -> Name -> [Name] -> [FunDep] -> [DecQ] -> DecQ-instanceD :: CxtQ -> TypeQ -> [DecQ] -> DecQ-sigD :: Name -> TypeQ -> DecQ-forImpD :: Callconv -> Safety -> String -> Name -> TypeQ -> DecQ-cxt :: [TypeQ] -> CxtQ-normalC :: Name -> [StrictTypeQ] -> ConQ-recC :: Name -> [VarStrictTypeQ] -> ConQ-infixC :: Q (Strict, Type) -> Name -> Q (Strict, Type) -> ConQ-forallC :: [Name] -> CxtQ -> ConQ -> ConQ-forallT :: [Name] -> CxtQ -> TypeQ -> TypeQ-varT :: Name -> TypeQ-conT :: Name -> TypeQ-appT :: TypeQ -> TypeQ -> TypeQ-arrowT :: TypeQ-listT :: TypeQ-tupleT :: Int -> TypeQ-isStrict :: Q Strict-notStrict :: Q Strict-strictType :: Q Strict -> TypeQ -> StrictTypeQ-varStrictType :: Name -> StrictTypeQ -> VarStrictTypeQ-cCall :: Callconv-stdCall :: Callconv-unsafe :: Safety-safe :: Safety-threadsafe :: Safety-funDep :: [Name] -> [Name] -> FunDep-combine :: [([(Name, Name)], Pat)] -> ([(Name, Name)], [Pat])-rename :: Pat -> Q ([(Name, Name)], Pat)-genpat :: Pat -> Q (Name -> ExpQ, Pat)-alpha :: [(Name, Name)] -> Name -> ExpQ-appsE :: [ExpQ] -> ExpQ-simpleMatch :: Pat -> Exp -> Match--module Language.Haskell.TH-data Q a-instance Functor Q-instance Monad Q-instance Quasi Q-runQ :: Quasi m => Q a -> m a-report :: Bool -> String -> Q ()-recover :: Q a -> Q a -> Q a-reify :: Name -> Q Info-currentModule :: Q String-runIO :: IO a -> Q a-data Name-instance Data Name-instance Eq Name-instance Ord Name-instance Ppr Name-instance Show Name-instance Typeable Name-mkName :: String -> Name-newName :: String -> Q Name-nameBase :: Name -> String-nameModule :: Name -> Maybe String-tupleTypeName :: Int -> Name-tupleDataName :: Int -> Name-data Dec-FunD :: Name -> [Clause] -> Dec-ValD :: Pat -> Body -> [Dec] -> Dec-DataD :: Cxt -> Name -> [Name] -> [Con] -> [Name] -> Dec-NewtypeD :: Cxt -> Name -> [Name] -> Con -> [Name] -> Dec-TySynD :: Name -> [Name] -> Type -> Dec-ClassD :: Cxt -> Name -> [Name] -> [FunDep] -> [Dec] -> Dec-InstanceD :: Cxt -> Type -> [Dec] -> Dec-SigD :: Name -> Type -> Dec-ForeignD :: Foreign -> Dec-instance Data Dec-instance Eq Dec-instance Ppr Dec-instance Show Dec-instance Typeable Dec-data Exp-VarE :: Name -> Exp-ConE :: Name -> Exp-LitE :: Lit -> Exp-AppE :: Exp -> Exp -> Exp-InfixE :: Maybe Exp -> Exp -> Maybe Exp -> Exp-LamE :: [Pat] -> Exp -> Exp-TupE :: [Exp] -> Exp-CondE :: Exp -> Exp -> Exp -> Exp-LetE :: [Dec] -> Exp -> Exp-CaseE :: Exp -> [Match] -> Exp-DoE :: [Stmt] -> Exp-CompE :: [Stmt] -> Exp-ArithSeqE :: Range -> Exp-ListE :: [Exp] -> Exp-SigE :: Exp -> Type -> Exp-RecConE :: Name -> [FieldExp] -> Exp-RecUpdE :: Exp -> [FieldExp] -> Exp-instance Data Exp-instance Eq Exp-instance Ppr Exp-instance Show Exp-instance Typeable Exp-data Con-NormalC :: Name -> [StrictType] -> Con-RecC :: Name -> [VarStrictType] -> Con-InfixC :: StrictType -> Name -> StrictType -> Con-ForallC :: [Name] -> Cxt -> Con -> Con-instance Data Con-instance Eq Con-instance Ppr Con-instance Show Con-instance Typeable Con-data Type-ForallT :: [Name] -> Cxt -> Type -> Type-VarT :: Name -> Type-ConT :: Name -> Type-TupleT :: Int -> Type-ArrowT :: Type-ListT :: Type-AppT :: Type -> Type -> Type-instance Data Type-instance Eq Type-instance Ppr Type-instance Show Type-instance Typeable Type-type Cxt = [Type]-data Match-Match :: Pat -> Body -> [Dec] -> Match-instance Data Match-instance Eq Match-instance Ppr Match-instance Show Match-instance Typeable Match-data Clause-Clause :: [Pat] -> Body -> [Dec] -> Clause-instance Data Clause-instance Eq Clause-instance Ppr Clause-instance Show Clause-instance Typeable Clause-data Body-GuardedB :: [(Guard, Exp)] -> Body-NormalB :: Exp -> Body-instance Data Body-instance Eq Body-instance Show Body-instance Typeable Body-data Guard-NormalG :: Exp -> Guard-PatG :: [Stmt] -> Guard-instance Data Guard-instance Eq Guard-instance Show Guard-instance Typeable Guard-data Stmt-BindS :: Pat -> Exp -> Stmt-LetS :: [Dec] -> Stmt-NoBindS :: Exp -> Stmt-ParS :: [[Stmt]] -> Stmt-instance Data Stmt-instance Eq Stmt-instance Ppr Stmt-instance Show Stmt-instance Typeable Stmt-data Range-FromR :: Exp -> Range-FromThenR :: Exp -> Exp -> Range-FromToR :: Exp -> Exp -> Range-FromThenToR :: Exp -> Exp -> Exp -> Range-instance Data Range-instance Eq Range-instance Ppr Range-instance Show Range-instance Typeable Range-data Lit-CharL :: Char -> Lit-StringL :: String -> Lit-IntegerL :: Integer -> Lit-RationalL :: Rational -> Lit-IntPrimL :: Integer -> Lit-FloatPrimL :: Rational -> Lit-DoublePrimL :: Rational -> Lit-instance Data Lit-instance Eq Lit-instance Show Lit-instance Typeable Lit-data Pat-LitP :: Lit -> Pat-VarP :: Name -> Pat-TupP :: [Pat] -> Pat-ConP :: Name -> [Pat] -> Pat-InfixP :: Pat -> Name -> Pat -> Pat-TildeP :: Pat -> Pat-AsP :: Name -> Pat -> Pat-WildP :: Pat-RecP :: Name -> [FieldPat] -> Pat-ListP :: [Pat] -> Pat-SigP :: Pat -> Type -> Pat-instance Data Pat-instance Eq Pat-instance Ppr Pat-instance Show Pat-instance Typeable Pat-type FieldExp = (Name, Exp)-type FieldPat = (Name, Pat)-data Strict-IsStrict :: Strict-NotStrict :: Strict-instance Data Strict-instance Eq Strict-instance Show Strict-instance Typeable Strict-data Foreign-ImportF :: Callconv -> Safety -> String -> Name -> Type -> Foreign-ExportF :: Callconv -> String -> Name -> Type -> Foreign-instance Data Foreign-instance Eq Foreign-instance Ppr Foreign-instance Show Foreign-instance Typeable Foreign-data Callconv-CCall :: Callconv-StdCall :: Callconv-instance Data Callconv-instance Eq Callconv-instance Show Callconv-instance Typeable Callconv-data Safety-Unsafe :: Safety-Safe :: Safety-Threadsafe :: Safety-instance Data Safety-instance Eq Safety-instance Show Safety-instance Typeable Safety-data FunDep-FunDep :: [Name] -> [Name] -> FunDep-instance Data FunDep-instance Eq FunDep-instance Ppr FunDep-instance Show FunDep-instance Typeable FunDep-data Info-ClassI :: Dec -> Info-ClassOpI :: Name -> Type -> Name -> Fixity -> Info-TyConI :: Dec -> Info-PrimTyConI :: Name -> Int -> Bool -> Info-DataConI :: Name -> Type -> Name -> Fixity -> Info-VarI :: Name -> Type -> Maybe Dec -> Fixity -> Info-TyVarI :: Name -> Type -> Info-instance Data Info-instance Ppr Info-instance Show Info-instance Typeable Info-data Fixity-Fixity :: Int -> FixityDirection -> Fixity-instance Data Fixity-instance Eq Fixity-instance Show Fixity-instance Typeable Fixity-data FixityDirection-InfixL :: FixityDirection-InfixR :: FixityDirection-InfixN :: FixityDirection-instance Data FixityDirection-instance Eq FixityDirection-instance Show FixityDirection-instance Typeable FixityDirection-defaultFixity :: Fixity-maxPrecedence :: Int-type InfoQ = Q Info-type ExpQ = Q Exp-type DecQ = Q Dec-type ConQ = Q Con-type TypeQ = Q Type-type CxtQ = Q Cxt-type MatchQ = Q Match-type ClauseQ = Q Clause-type BodyQ = Q Body-type GuardQ = Q Guard-type StmtQ = Q Stmt-type RangeQ = Q Range-type StrictTypeQ = Q StrictType-type VarStrictTypeQ = Q VarStrictType-type PatQ = Q Pat-type FieldPatQ = Q FieldPat-intPrimL :: Integer -> Lit-floatPrimL :: Rational -> Lit-doublePrimL :: Rational -> Lit-integerL :: Integer -> Lit-charL :: Char -> Lit-stringL :: String -> Lit-rationalL :: Rational -> Lit-litP :: Lit -> PatQ-varP :: Name -> PatQ-tupP :: [PatQ] -> PatQ-conP :: Name -> [PatQ] -> PatQ-infixP :: PatQ -> Name -> PatQ -> PatQ-tildeP :: PatQ -> PatQ-asP :: Name -> PatQ -> PatQ-wildP :: PatQ-recP :: Name -> [FieldPatQ] -> PatQ-listP :: [PatQ] -> PatQ-sigP :: PatQ -> TypeQ -> PatQ-fieldPat :: Name -> PatQ -> FieldPatQ-bindS :: PatQ -> ExpQ -> StmtQ-letS :: [DecQ] -> StmtQ-noBindS :: ExpQ -> StmtQ-parS :: [[StmtQ]] -> StmtQ-fromR :: ExpQ -> RangeQ-fromThenR :: ExpQ -> ExpQ -> RangeQ-fromToR :: ExpQ -> ExpQ -> RangeQ-fromThenToR :: ExpQ -> ExpQ -> ExpQ -> RangeQ-normalB :: ExpQ -> BodyQ-guardedB :: [Q (Guard, Exp)] -> BodyQ-normalG :: ExpQ -> GuardQ-normalGE :: ExpQ -> ExpQ -> Q (Guard, Exp)-patG :: [StmtQ] -> GuardQ-patGE :: [StmtQ] -> ExpQ -> Q (Guard, Exp)-match :: PatQ -> BodyQ -> [DecQ] -> MatchQ-clause :: [PatQ] -> BodyQ -> [DecQ] -> ClauseQ-dyn :: String -> Q Exp-global :: Name -> ExpQ-varE :: Name -> ExpQ-conE :: Name -> ExpQ-litE :: Lit -> ExpQ-appE :: ExpQ -> ExpQ -> ExpQ-infixE :: Maybe ExpQ -> ExpQ -> Maybe ExpQ -> ExpQ-infixApp :: ExpQ -> ExpQ -> ExpQ -> ExpQ-sectionL :: ExpQ -> ExpQ -> ExpQ-sectionR :: ExpQ -> ExpQ -> ExpQ-lamE :: [PatQ] -> ExpQ -> ExpQ-lam1E :: PatQ -> ExpQ -> ExpQ-tupE :: [ExpQ] -> ExpQ-condE :: ExpQ -> ExpQ -> ExpQ -> ExpQ-letE :: [DecQ] -> ExpQ -> ExpQ-caseE :: ExpQ -> [MatchQ] -> ExpQ-doE :: [StmtQ] -> ExpQ-compE :: [StmtQ] -> ExpQ-arithSeqE :: RangeQ -> ExpQ-appsE :: [ExpQ] -> ExpQ-fromE :: ExpQ -> ExpQ-fromThenE :: ExpQ -> ExpQ -> ExpQ-fromToE :: ExpQ -> ExpQ -> ExpQ-fromThenToE :: ExpQ -> ExpQ -> ExpQ -> ExpQ-listE :: [ExpQ] -> ExpQ-sigE :: ExpQ -> TypeQ -> ExpQ-recConE :: Name -> [Q (Name, Exp)] -> ExpQ-recUpdE :: ExpQ -> [Q (Name, Exp)] -> ExpQ-stringE :: String -> ExpQ-fieldExp :: Name -> ExpQ -> Q (Name, Exp)-valD :: PatQ -> BodyQ -> [DecQ] -> DecQ-funD :: Name -> [ClauseQ] -> DecQ-tySynD :: Name -> [Name] -> TypeQ -> DecQ-dataD :: CxtQ -> Name -> [Name] -> [ConQ] -> [Name] -> DecQ-newtypeD :: CxtQ -> Name -> [Name] -> ConQ -> [Name] -> DecQ-classD :: CxtQ -> Name -> [Name] -> [FunDep] -> [DecQ] -> DecQ-instanceD :: CxtQ -> TypeQ -> [DecQ] -> DecQ-sigD :: Name -> TypeQ -> DecQ-forImpD :: Callconv -> Safety -> String -> Name -> TypeQ -> DecQ-cxt :: [TypeQ] -> CxtQ-normalC :: Name -> [StrictTypeQ] -> ConQ-recC :: Name -> [VarStrictTypeQ] -> ConQ-infixC :: Q (Strict, Type) -> Name -> Q (Strict, Type) -> ConQ-forallT :: [Name] -> CxtQ -> TypeQ -> TypeQ-varT :: Name -> TypeQ-conT :: Name -> TypeQ-appT :: TypeQ -> TypeQ -> TypeQ-arrowT :: TypeQ-listT :: TypeQ-tupleT :: Int -> TypeQ-isStrict :: Q Strict-notStrict :: Q Strict-strictType :: Q Strict -> TypeQ -> StrictTypeQ-varStrictType :: Name -> StrictTypeQ -> VarStrictTypeQ-cCall :: Callconv-stdCall :: Callconv-unsafe :: Safety-safe :: Safety-threadsafe :: Safety-class Ppr a-ppr :: Ppr a => a -> Doc-ppr_list :: Ppr a => [a] -> Doc-instance Ppr Clause-instance Ppr Con-instance Ppr Dec-instance Ppr Exp-instance Ppr Foreign-instance Ppr FunDep-instance Ppr Info-instance Ppr Match-instance Ppr Name-instance Ppr Pat-instance Ppr Range-instance Ppr Stmt-instance Ppr Type-instance Ppr a => Ppr [a]-pprint :: Ppr a => a -> String-pprExp :: Precedence -> Exp -> Doc-pprLit :: Precedence -> Lit -> Doc-pprPat :: Precedence -> Pat -> Doc-pprParendType :: Type -> Doc--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module Data.Time.Calendar.MonthDay-monthAndDayToDayOfYear :: Bool -> Int -> Int -> Int-dayOfYearToMonthAndDay :: Bool -> Int -> (Int, Int)-monthLength :: Bool -> Int -> Int--module Data.Time.Calendar.Julian-toJulianYearAndDay :: Day -> (Integer, Int)-fromJulianYearAndDay :: Integer -> Int -> Day-showJulianYearAndDay :: Day -> String-isJulianLeapYear :: Integer -> Bool-toJulian :: Day -> (Integer, Int, Int)-fromJulian :: Integer -> Int -> Int -> Day-showJulian :: Day -> String-julianMonthLength :: Integer -> Int -> Int-addJulianMonthsClip :: Integer -> Day -> Day-addJulianMonthsRollOver :: Integer -> Day -> Day-addJulianYearsClip :: Integer -> Day -> Day-addJulianYearsRollOver :: Integer -> Day -> Day--module Data.Time.Calendar.OrdinalDate-toOrdinalDate :: Day -> (Integer, Int)-fromOrdinalDate :: Integer -> Int -> Day-showOrdinalDate :: Day -> String-isLeapYear :: Integer -> Bool-mondayStartWeek :: Day -> (Int, Int)-sundayStartWeek :: Day -> (Int, Int)-fromMondayStartWeek :: Integer -> Int -> Int -> Day-fromSundayStartWeek :: Integer -> Int -> Int -> Day--module Data.Time.Calendar.WeekDate-toWeekDate :: Day -> (Integer, Int, Int)-fromWeekDate :: Integer -> Int -> Int -> Day-showWeekDate :: Day -> String--module Data.Time.Clock.POSIX-posixDayLength :: NominalDiffTime-type POSIXTime = NominalDiffTime-posixSecondsToUTCTime :: POSIXTime -> UTCTime-utcTimeToPOSIXSeconds :: UTCTime -> POSIXTime-getPOSIXTime :: IO POSIXTime--module Data.Time.Clock-newtype UniversalTime-ModJulianDate :: Rational -> UniversalTime-getModJulianDate :: UniversalTime -> Rational-instance Eq UniversalTime-instance Ord UniversalTime-data DiffTime-instance Enum DiffTime-instance Eq DiffTime-instance Fractional DiffTime-instance Num DiffTime-instance Ord DiffTime-instance Real DiffTime-instance Show DiffTime-secondsToDiffTime :: Integer -> DiffTime-picosecondsToDiffTime :: Integer -> DiffTime-data UTCTime-UTCTime :: Day -> DiffTime -> UTCTime-utctDay :: UTCTime -> Day-utctDayTime :: UTCTime -> DiffTime-instance Eq UTCTime-instance FormatTime UTCTime-instance Ord UTCTime-instance ParseTime UTCTime-instance Read UTCTime-instance Show UTCTime-data NominalDiffTime-instance Enum NominalDiffTime-instance Eq NominalDiffTime-instance Fractional NominalDiffTime-instance Num NominalDiffTime-instance Ord NominalDiffTime-instance Real NominalDiffTime-instance RealFrac NominalDiffTime-instance Show NominalDiffTime-addUTCTime :: NominalDiffTime -> UTCTime -> UTCTime-diffUTCTime :: UTCTime -> UTCTime -> NominalDiffTime-getCurrentTime :: IO UTCTime--module Data.Time.Calendar-newtype Day-ModifiedJulianDay :: Integer -> Day-toModifiedJulianDay :: Day -> Integer-instance Enum Day-instance Eq Day-instance FormatTime Day-instance Ord Day-instance ParseTime Day-instance Read Day-instance Show Day-addDays :: Integer -> Day -> Day-diffDays :: Day -> Day -> Integer-toGregorian :: Day -> (Integer, Int, Int)-fromGregorian :: Integer -> Int -> Int -> Day-showGregorian :: Day -> String-gregorianMonthLength :: Integer -> Int -> Int-addGregorianMonthsClip :: Integer -> Day -> Day-addGregorianMonthsRollOver :: Integer -> Day -> Day-addGregorianYearsClip :: Integer -> Day -> Day-addGregorianYearsRollOver :: Integer -> Day -> Day-isLeapYear :: Integer -> Bool--module Data.Time.Calendar.Easter-sundayAfter :: Day -> Day-orthodoxPaschalMoon :: Integer -> Day-orthodoxEaster :: Integer -> Day-gregorianPaschalMoon :: Integer -> Day-gregorianEaster :: Integer -> Day--module Data.Time.LocalTime-data TimeZone-TimeZone :: Int -> Bool -> String -> TimeZone-timeZoneMinutes :: TimeZone -> Int-timeZoneSummerOnly :: TimeZone -> Bool-timeZoneName :: TimeZone -> String-instance Eq TimeZone-instance FormatTime TimeZone-instance Ord TimeZone-instance ParseTime TimeZone-instance Read TimeZone-instance Show TimeZone-timeZoneOffsetString :: TimeZone -> String-minutesToTimeZone :: Int -> TimeZone-hoursToTimeZone :: Int -> TimeZone-utc :: TimeZone-getTimeZone :: UTCTime -> IO TimeZone-getCurrentTimeZone :: IO TimeZone-data TimeOfDay-TimeOfDay :: Int -> Int -> Pico -> TimeOfDay-todHour :: TimeOfDay -> Int-todMin :: TimeOfDay -> Int-todSec :: TimeOfDay -> Pico-instance Eq TimeOfDay-instance FormatTime TimeOfDay-instance Ord TimeOfDay-instance ParseTime TimeOfDay-instance Read TimeOfDay-instance Show TimeOfDay-midnight :: TimeOfDay-midday :: TimeOfDay-utcToLocalTimeOfDay :: TimeZone -> TimeOfDay -> (Integer, TimeOfDay)-localToUTCTimeOfDay :: TimeZone -> TimeOfDay -> (Integer, TimeOfDay)-timeToTimeOfDay :: DiffTime -> TimeOfDay-timeOfDayToTime :: TimeOfDay -> DiffTime-dayFractionToTimeOfDay :: Rational -> TimeOfDay-timeOfDayToDayFraction :: TimeOfDay -> Rational-data LocalTime-LocalTime :: Day -> TimeOfDay -> LocalTime-localDay :: LocalTime -> Day-localTimeOfDay :: LocalTime -> TimeOfDay-instance Eq LocalTime-instance FormatTime LocalTime-instance Ord LocalTime-instance ParseTime LocalTime-instance Read LocalTime-instance Show LocalTime-utcToLocalTime :: TimeZone -> UTCTime -> LocalTime-localTimeToUTC :: TimeZone -> LocalTime -> UTCTime-ut1ToLocalTime :: Rational -> UniversalTime -> LocalTime-localTimeToUT1 :: Rational -> LocalTime -> UniversalTime-data ZonedTime-ZonedTime :: LocalTime -> TimeZone -> ZonedTime-zonedTimeToLocalTime :: ZonedTime -> LocalTime-zonedTimeZone :: ZonedTime -> TimeZone-instance FormatTime ZonedTime-instance ParseTime ZonedTime-instance Read ZonedTime-instance Show ZonedTime-utcToZonedTime :: TimeZone -> UTCTime -> ZonedTime-zonedTimeToUTC :: ZonedTime -> UTCTime-getZonedTime :: IO ZonedTime-utcToLocalZonedTime :: UTCTime -> IO ZonedTime--module Data.Time.Clock.TAI-data AbsoluteTime-instance Eq AbsoluteTime-instance Ord AbsoluteTime-instance Show AbsoluteTime-taiEpoch :: AbsoluteTime-addAbsoluteTime :: DiffTime -> AbsoluteTime -> AbsoluteTime-diffAbsoluteTime :: AbsoluteTime -> AbsoluteTime -> DiffTime-type LeapSecondTable = Day -> Integer-utcDayLength :: LeapSecondTable -> Day -> DiffTime-utcToTAITime :: LeapSecondTable -> UTCTime -> AbsoluteTime-taiToUTCTime :: LeapSecondTable -> AbsoluteTime -> UTCTime-parseTAIUTCDATFile :: String -> LeapSecondTable--module Data.Time.Format-class FormatTime t-formatCharacter :: FormatTime t => Char -> Maybe (TimeLocale -> t -> String)-instance FormatTime Day-instance FormatTime LocalTime-instance FormatTime TimeOfDay-instance FormatTime TimeZone-instance FormatTime UTCTime-instance FormatTime ZonedTime-formatTime :: FormatTime t => TimeLocale -> String -> t -> String-parseTime :: ParseTime t => TimeLocale -> String -> String -> Maybe t-readTime :: ParseTime t => TimeLocale -> String -> String -> t-readsTime :: ParseTime t => TimeLocale -> String -> ReadS t-class ParseTime t-buildTime :: ParseTime t => TimeLocale -> [(Char, String)] -> t-instance ParseTime Day-instance ParseTime LocalTime-instance ParseTime TimeOfDay-instance ParseTime TimeZone-instance ParseTime UTCTime-instance ParseTime ZonedTime--module Data.Time
+ State/imports.h view
@@ -0,0 +1,74 @@+import qualified Prelude as P+import Prelude hiding (mapM, sequence, mapM_, sequence_, (.), (++), map)+import Numeric+import System.Random+import Data.Array+import Data.Bits+import Data.Bool+import Data.Char+import Data.Complex+import Data.Dynamic+import Data.Either+import Data.Eq+import Data.Fixed+import qualified Data.Foldable+import Data.Function hiding ((.))+import Data.Ord+import qualified Data.Generics+import Data.Generics hiding (GT)+import Data.Graph+import Data.Int+import Data.Ix+import Data.List hiding ((++),map)+import Data.Maybe+import Data.Monoid+import Data.Ratio+import qualified Data.Sequence+import Data.Tree+import Data.Tuple+import qualified Data.Traversable+import Data.Typeable+import Data.Word+import Data.STRef+import qualified Data.Map as M+import qualified Data.Set as S+import qualified Data.IntSet as IS+import qualified Data.IntMap as IM+import qualified Data.ByteString as BS+import qualified Data.ByteString.Char8 as BSC+import qualified Data.ByteString.Lazy as BSL+import qualified Data.ByteString.Lazy.Char8 as BSLC+import Data.Number.Symbolic+import Data.Number.Dif+import Data.Number.CReal+import Data.Number.Fixed+import Data.Number.Interval+import Data.Number.BigFloat+import Data.Number.Natural+import Control.Monad+import Control.Monad.Cont+import Control.Monad.Identity+import Control.Monad.State+import Control.Monad.State+import Control.Monad.ST (ST, runST, fixST)+import Control.Monad.Reader+import Control.Monad.Fix+import Control.Monad.Writer+import Control.Monad.RWS+import Control.Monad.Error+import Control.Monad.Instances+import Control.Monad.Logic+import Control.Arrow hiding (pure)+import qualified Control.Arrow.Transformer as AT+import qualified Control.Arrow.Transformer.All as AT+import Control.Arrow.Operations+import Control.Applicative+import Control.Parallel+import Control.Parallel.Strategies+import Text.Printf+import Text.PrettyPrint.HughesPJ hiding (empty)+import Test.QuickCheck+import ShowQ++import SimpleReflect hiding (var)+import Math.OEIS
State/karma view
@@ -1,945 +1,103 @@-("(File::HomeDir)",-1)-("--17:23:02",-1)-("\"",-2)-("\"C",2)-("\"nick",1)-("\"rhr",1)-("#",1)-("##c",4)-("##iso-c++/##c",1)-("#c",4)-("#define>THUNK_1_0>----",-1)-("#gentoo-uy",1)-("#haskell",5)-("'",-4)-("'s/^>//||!/\\S/||s/^/",-1)-("(",5)-("()",-1)-("(*p)",1)-("(->a)",1)-("(<",-1)-("(a->)",1)-("(C",1)-("(darwin's",1)-("*p1",2)-("+",4)-("++p*",1)-("-",-68)-("---",-1)-("--------------",-2)-("-----------------",-2)-("-----------------------",-1)-("------------------------------",-2)-("----------------------------------",-1)-("----------------------------------------------------------------------",-2)-("-rw-r--r",-9)-(".++.",1)-("100",-1)-("50",1)-("6.83--",-1)-("<",-91)-("<!",-4)-("<-",-13)-("<--",-3)-("<---",-3)-("<-----",-1)-("<-------------",-1)-("<<<----",-1)-("<bd_>",1)-("<nick>",1)-("@karma",1)-("@karma-",1)-("@pl",0)-("A",1)-("Aankhen",219)-("Aankhen``",1)-("abstraction",1)-("abz64__",1)-("ack",2)-("Adamant",1)-("adept",0)-("agentz",46)-("agentzh",15)-("ahmadz",1)-("ai",1)-("air",0)-("AIX",1)-("ajb",1)-("ajgill",1)-("ajs_work",1)-("akemp",1)-("alar",1)-("alblue",1)-("aleator",1)-("alex777",1)-("allbery_b",5)-("alphacar",1)-("alpheccar",1)-("anarchy",1)-("anatolyv",1)-("and",-1)-("andara",7)-("andygill",2)-("angLia",-1)-("aot",1)-("ap",1)-("apfelmus",1)-("apple",-8)-("aptitude",1)-("araujo",6)-("arch",-1)-("ari",2)-("arjanoosting",1)-("arossato",5)-("arrows",1)-("asian",0)-("astrolabe",6)-("asTypeOf",-1)-("AtnNn",1)-("audreyt",114)-("audreyt++.",1)-("augustss",10)-("autrijus",6)-("avar",187)-("azawawi",22)-("b7j0c",1)-("babelfish",0)-("bacta",-2)-("bakert",1)-("Banksy",1)-("base_16",1)-("bash",4)-("basti",1)-("basti_",3)-("bBacta",-1)-("bbkr",1)-("BCoppens",3)-("bd",1)-("bd_",3)-("bd_+",1)-("bd_-",-1)-("bebop",2)-("beelsebob",4)-("beelsebob_",-1)-("benny",1)-("beschmi",5)-("Binkley",2)-("birkenfeld",1)-("blackdog",3)-("bleach",4)-("Blicero",-1)-("blitz",1)-("bloodlust",1)-("bloonix",9)-("blwood",1)-("Bobstopper",2)-("boegel",3)-("bolrod",1)-("bonsaikitten",-1)-("bos",5)-("bos_",1)-("Botje",0)-("Bourbaki",6)-("boy",1)-("br1",-4)-("brainwashing",1)-("brian_d_foy",13)-("bringert",18)-("bsmith",3)-("bueno",1)-("bug",-1)-("bukakke",1)-("bunkers",1)-("buubot",-1)-("byorgey",7)-("ByteString",1)-("c",15)-("C#/F#/C",1)-("c++",-8)-("c+/c",1)-("c--",3)-("c--------",-1)-("C/",2)-("C/C",18)-("cabal",5)-("cadillac_",-9)-("cafe",-9)-("cafebabe",-1)-("cain",-8)-("cain--",1)-("Cale",64)-("caltech",1)-("calvins",1)-("caridad",-1)-("cases)",-1)-("CategoryTheory",1)-("category_theory",1)-("chameleon",2)-("chamelion",0)-("characters)",-1)-("chessguy",5)-("chorros",-1)-("chris",1)-("christopher",4)-("chromatic",2)-("chucky",1)-("cialis",1)-("cinema",1)-("circularity",1)-("cjeris",3)-("clkao",6)-("cmarcelo",13)-("COBOL",-3)-("coffeemug",3)-("colin_mochrie",1)-("comments",1)-("commitbit",1)-("compilerThatWontGuess",1)-("composability",1)-("comprehensions",1)-("conal",2)-("configure",-1)-("confused-",-1)-("CONISLI",1)-("const",1)-("Cont",0)-("conversational",-1)-("cormen",1)-("CosmicRay",2)-("cparrott",1)-("cristo",-1)-("cruft",-1)-("csv",-1)-("ctcp",-1)-("CVS",-1)-("cygwin",-1)-("daan",1)-("Daemmerung",-1)-("dakkar",9)-("darcs",12)-("DarkWolf84",1)-("Darren_Duncan",11)-("Data.Typeable",1)-("davidhouse",1)-("daxim",2)-("dblhelix",1)-("dcoutss",1)-("dcoutsss",1)-("dcoutts",45)-("dcouttsByteString",1)-("dcoutts_",2)-("dcoutts__",0)-("ddarius",8)-("dduncan",1)-("deadbeef",2)-("debian",-1)-("debug",-1)-("define",1)-("demerphq",5)-("dependencies",-1)-("desegnis",1)-("dfeuer",1)-("dfranke",1)-("dgoldsmith",1)-("dgriffi3",1)-("diakopter",5)-("dibblego",4)-("diversity",1)-("djinn",2)-("dlo",115)-("dlocaus",9)-("dmead",3)-("dmhouse",5)-("dmq",1)-("dmwit",1)-("dolio",11)-("dons",140)-("doserj",1)-("dot",1)-("droundy",6)-("DukeDave",1)-("dvorak",2)-("dylan",4)-("e17",2)-("earthy",1)-("eclipse",-5)-("edwardk",4)-("Eelis",1)-("eivuokko",1)-("ekidd",1)-("Elifant",2)-("elmex",1)-("ELP",1)-("elpolilla",-5)-("else",-1)-("elvix",6)-("emacs",0)-("emertens",2)-("emk",1)-("emoggi",1)-("emu",1)-("engineers",1)-("entropyfails",1)-("epichrom",-1)-("epigram",1)-("erg0t",-51)-("eric256",1)-("err",0)-("error",-1)-("errors)",1)-("esr",-1)-("EvilRanter",1)-("EvilTerran",6)-("eviltwin_b",3)-("example",1)-("expletives",1)-("expressive",1)-("fabiim",1)-("factor",0)-("fasta",2)-("fax",21)-("faxathisia",1)-("FC",3)-("ferreira",1)-("ffmpeg",1)-("fglock",401)-("final",-1)-("fingers",-1)-("firefox",1)-("first",1)-("fix",1)-("FMota",1)-("folks)",1)-("foo",-1)-("foobar",1)-("FORTRAN",-1)-("foxy",4)-("FP",1)-("fps",1)-("frangor",0)-("franka",3)-("freewifi",1)-("fromIntegral",1)-("FTP",-1)-("funktio",1)-("fusibility",1)-("g",18)-("g++",-1)-("gaal",17)-("gabriele",1)-("gattocarlo",1)-("gbacon",1)-("GCC/G",1)-("GeJ",1)-("generation",2)-("gentoo",-4)-("george",-8)-("ggoebel",3)-("ghc",4)-("ghcprof",1)-("git",1)-("git-bisect",1)-("give",-1)-("gleb",1)-("glguy",51)-("globales",-1)-("gmail",-1)-("gnome",-23)-("gnuplot",0)-("gnuvince",6)-("Gofer",1)-("goltrpoat",1)-("google",-1)-("goron",0)-("gour",2)-("gpm",2)-("gravity",-1)-("greentea",1)-("grephthosthenes",2)-("GTK",-1)-("gutsy",1)-("gvim",1)-("h",1)-("hackathon",1)-("haddock",1)-("happs",1)-("Haskel98modules",-1)-("haskell",22)-("haskell-curious",1)-("haskellNoob",1)-("hate",1)-("Heffalump",6)-("hefner",1)-("here",1)-("holidays",1)-("hoogle",4)-("hthtrshs",1)-("https",1)-("Hudak",-1)-("hueso",-13)-("huffmanizing",1)-("hugs",3)-("humasect",1)-("HUnit",1)-("HWN",1)-("HXT",1)-("hyrax42",4)-("i",1)-("iah",1)-("Iambdabot",1)-("ibid",3)-("iblech",2)-("icfp-organizers",6)-("ick",1)-("IDA",1)-("idnar",1)-("IEEE",0)-("igli",1)-("Igloo",14)-("ihope",3)-("ikegami",-1)-("in",0)-("information",0)-("inliner",1)-("insomnia",-1)-("instance_Monad_((->)_r)",1)-("INS_MARKER_DEF='",-1)-("INS_MARKER_IMPORT='",-1)-("int-e",31)-("integral",-1)-("interact",1)-("intern",1)-("ion3",1)-("irc",-1)-("iron_maiden",5)-("ish",1)-("issues",-1)-("it-",-1)-("Itkovian",-1)-("J",3)-("Jaak",1)-("JaffaCake",14)-("java",-22)-("Java/C",2)-("jcreigh",4)-("jedai",1)-("jeremy",1)-("jethr0",2)-("jgrimes",1)-("jgrimes_",1)-("jhc",1)-("jip",4)-("jnthn",1)-("joelonsoftware",1)-("joelr1",3)-("JohnMeacham",3)-("jonalv",2)-("jonkri",1)-("jrockway",0)-("json",1)-("Juerd",7)-("juhp",2)-("jyp",2)-("kaitlyn",1)-("karma",5)-("karmatestthing",2)-("KatieHuber",1)-("kawa",1)-("kde",1)-("ketil",1)-("kfish",6)-("kjwcode",2)-("knowledge",2)-("koeien",1)-("kolibrie",3)-("kolmodin",2)-("kolmodin1",1)-("kolpudding",1)-("Korolary",1)-("korollary",-1)-("Korrolary",1)-("kosmikus",7)-("kowey",4)-("kp6",1)-("kpreid",12)-("kramms",-1)-("KrispyKringle",-1)-("kudra",10)-("kuribas`",1)-("kuser",2)-("kyevan",2)-("kzm",5)-("lag",-1)-("lambdabot",51)-("lambdacats",1)-("lament",2)-("lanny",1)-("larry",2)-("LarryWall",-1)-("later",0)-("latex",-2)-("laziness",2)-("lazyness",1)-("lazy_gather_take",1)-("leCamarade",1)-("leed",1)-("lelit",1)-("Lemmih",2)-("lennart",4)-("lftp",1)-("libraries@haskell.org",-1)-("libstdc",2)-("lightstep",2)-("like",-1)-("Limbic_Region",8)-("Limbric_Region",1)-("linux",1)-("lisppaste",1)-("lisppaste2",2)-("lispy",21)-("lithyum",-2)-("liyang",1)-("LoganCapaldo",2)-("Lokadin",0)-("lomeX",1)-("LordBrain",3)-("love",1)-("LPhas",1)-("Lucinda",1)-("lumi",2)-("luqui",13)-("luquick",1)-("lvm",1)-("lwall",55)-("lysdexsik",1)-("LyX",1)-("macbook",-1)-("Maddas",1)-("madpickle",1)-("make",-1)-("makstos",1)-("malcolm",4)-("malcolmw",3)-("malon",3)-("managers",-1)-("mapAccumL",1)-("markha",2)-("markstos",8)-("masak",40)-("Masklinn",1)-("math",-1)-("mathewm",1)-("maths",1)-("matt_r",0)-("mauke",9)-("max",2)-("mbishop",1)-("mboes",1)-("mchaves",1)-("MD5",-1)-("mediacorporations",-1)-("mercurial",1)-("messages)",-1)-("metal",2)-("metallica",-2)-("metaobjects",1)-("mflux",3)-("michaelkohwj",1)-("microsoft",-2)-("MiKTeX",1)-("miniperl6",1)-("misterbeebee",0)-("MJD",1)-("mnessenger",0)-("mnislaih",3)-("mod",2)-("modularity",1)-("monad",1)-("monadcomprehensions",1)-("monads",2)-("MonadZero",1)-("monochrom",17)-("monomorphism",-1)-("monomorphism_restriction",-1)-("moo",1)-("moose",1)-("moritz",160)-("moritz_",11)-("mozilla",1)-("MP0",0)-("mp6",1)-("MR",-2)-("mrd",4)-("ms",-1)-("MSVC",2)-("mtl",1)-("mukai",1)-("mundo",-1)-("musasabi",16)-("mushy_pile_of_code",1)-("mux",3)-("mwc",-1)-("n+k",-1)-("name",1)-("nap",1)-("ncalexan",1)-("ndm",16)-("negate",1)-("Nei",2)-("Nelson",1)-("neuronas-erg0t",-1)-("newsham",6)-("nick",2)-("nmessenger",2)-("nnunley",0)-("nocotigo",1)-("nomeata",2)-("nominolo",0)-("nornagon",5)-("norpan",0)-("nostromo",1)-("notebook",-3)-("nothingmuch",9)-("notsmack",2)-("nr",1)-("nscan",1)-("nub",1)-("nwc10",1)-("oasisbot",1)-("obfuscation",1)-("obra",4)-("ocaml",0)-("ocaml/c",1)-("oejan",-1)-("Oejet",1)-("oerjan",11)-("of",0)-("olas",3)-("Olathe",2)-("Ollydbg",1)-("olsner",3)-("omnId",9)-("omnIdiot",0)-("omniscientIdiot",0)-("OO",1)-("ookk",2)-("openoffice",-1)-("opensource",1)-("opera",-2)-("opqdonut",1)-("options",-1)-("osx",2)-("OUTPUT[-",-1)-("OUTPUT[fglock",2)-("overlay",-1)-("p",1)-("paj",1)-("palomer",5)-("paolin1",1)-("paolino",1)-("parsec",2)-("particle",2)-("pattern-matching",1)-("Patterner",2)-("patterns_in_list_comprehension",1)-("pbx",1)-("pc",2)-("pejo",2)-("perl",-1)-("perl6",5)-("perlbot",-1)-("perlDreamer",3)-("pesimismo",1)-("petekaz",2)-("Philippa",4)-("Philippa_",2)-("php",-1)-("phys_rules",1)-("Piponi",1)-("pkhuong",2)-("pl",1)-("pmichaud",5)-("pmurias",128)-("poetix",3)-("pony",1)-("portability)",-1)-("positiveoutlook",1)-("postfix",-1)-("Prelude",1)-("Problems)",-1)-("Programming\"",1)-("prolog",-1)-("Pseudonym",15)-("pstickne",1)-("psychic",0)-("psykotic",5)-("ptolomy",1)-("pugs",1)-("Pupeno",3)-("putter",41)-("pwadler",1)-("python",-1)-("qc",-4)-("qemu",1)-("quickcheck",1)-("quicksilver",9)-("quiet",1)-("ral1",1)-("ramok",1)-("raxas",1)-("readline",1)-("recursion",2)-("referential_transparency",1)-("RemiTurk",1)-("renormalist",37)-("rep",1)-("repl",1)-("reports",-1)-("resources)",-1)-("rgs",3)-("rhr",5)-("ricky_clarkson",1)-("robdockins",3)-("rob|",3)-("roconnor",2)-("rodi",2)-("RogerTaylor",1)-("romildo",1)-("ross",1)-("rumble",-1)-("runhaskell",3)-("runpugs",1)-("ruoso",117)-("RWS",-1)-("RyanT5000",1)-("Saizan",4)-("samb",0)-("SamB_XP",1)-("samreid",2)-("samurai7",1)-("Samus_",-3)-("sanctuary",1)-("sartak",16)-("Saulzar",1)-("scanl",1)-("scary",-1)-("scary_IO_monad",-1)-("scheme",-1)-("school",-1)-("sclv",1)-("scook0",2)-("scsibug",3)-("seano",1)-("search",1)-("sebazzz",-50)-("see",-1)-("segfault",-1)-("self.counter",1)-("sethk",4)-("sex",1)-("sh",-1)-("shadowfax",1)-("shapr",40)-("shay",1)-("shay|p6",1)-("shillelagh",3)-("shoffsta",1)-("SICP",1)-("sieni",4)-("sigfpe_",1)-("signatures-",-1)-("silvina",1)-("simonmar",1)-("sjanssen",51)-("sjanssen_",1)-("skew",1)-("ski",10)-("slava",1)-("slavemaster",-1)-("sleepycat",-1)-("SmallCheck",1)-("smartlinks",2)-("smoke-",-1)-("socal",-1)-("softice",1)-("somebody",1)-("somenick++or",-1)-("sorear",25)-("soreman",-6)-("sorman",6)-("spaceinvader",0)-("spam",-1)-("Spark",1)-("Speck",1)-("spj",4)-("SPPN",1)-("sp\195\164tzle",1)-("ssh_forwarding",1)-("staff",1)-("static",0)-("static_typing",1)-("stefanw",1)-("stepcut",3)-("streams",1)-("strong",1)-("Students;",-1)-("subbot",-1)-("subtract",1)-("suite>",1)-("sunnavy",12)-("SuSE",-2)-("svn",1)-("svnbot",1)-("sw17ch",1)-("sweden",1)-("swiert",8)-("SynapticPackageManager",1)-("syntaxfree",1)-("SyntaxNinja",11)-("Syzygy-",1)-("szabgab",9)-("tabs",-1)-("Tac-Tics2",1)-("tamarin",1)-("Taral",1)-("technology",1)-("Tene",0)-("test",3)-("testing)",1)-("th",-1)-("TheHunter",5)-("then",-1)-("theory",1)-("therp",1)-("the_evil_mangler",1)-("thighs",1)-("thinkpad",2)-("Thomas2_",1)-("ThreeQ",1)-("THUNK>-->-----",-1)-("tibbe",1)-("tikal",1)-("tilde/yakuake",1)-("timbod",1)-("time",-1)-("TimToady",8)-("tinyurl",3)-("tizoc",-102)-("tmoertel",3)-("TomPledger",2)-("tomshackell",1)-("ToRA",1)-("Toxaris",2)-("trabajo",-1)-("trac",1)-("TreyHarris",4)-("TSC",1)-("tumulus",3)-("tuomov",2)-("TuringTest",5)-("tuukkah",2)-("twanvl",7)-("twobitsprite",1)-("types",1)-("typesystem",1)-("U",1)-("u221e",2)-("uberpinguin",1)-("ulfdoz",1)-("uncons",1)-("undefined",1)-("unfoldr",7)-("unicode",1)-("university",1)-("unix",2)-("unpl",0)-("urgencyhook",1)-("use/mention",1)-("ValarQ",1)-("vascolet",12)-("vb",1)-("vb2hs",1)-("VC",6)-("vegai",2)-("ventonegro",2)-("viagra",1)-("views",1)-("vim",1)-("vim7",1)-("vimdiff",1)-("VImtermute",1)-("vincenz",19)-("vincenz/vincenz",1)-("virtualisation",1)-("visof",0)-("vista",-6)-("VisualJ",1)-("vital",1)-("vmware",1)-("vox",-1)-("wait",-1)-("walking",1)-("warmfuzzy",1)-("was",0)-("weekend",1)-("weitzman",-1)-("wget",1)-("whatsoever-",-1)-("whois",1)-("WholeWorld",1)-("wikipedia",0)-("windows",-4)-("wli",4)-("wnoise",1)-("wolverian",4)-("Writer",-1)-("WriterList",-1)-("WriterSequence",1)-("x",2)-("x3m",1)-("xDie",-2)-("xerox",28)-("xfce",3)-("xic",1)-("xinming",2)-("xkcd",3)-("xpdf",1)-("xs",1)-("xxx-x",0)-("y",0)-("Y-combinator",1)-("yaht",2)-("yaml",1)-("yaxu",4)-("yeah",-3)-("yhc",2)-("yiddel",1)-("yo",2)-("yodel",1)-("you!--More",-1)-("yozora",1)-("za",1)-("Zao",1)-("zeeeeeee",1)-("zellyn",0)-("zenpro",1)-("Ziggy6",3)-("zipWith",1)-("zonaforo",-4)-("zpg",1)-("ZU",-1)-("[()]",-1)-("[1]",1)-("[particle]",4)-("\\d",1)-("\\|-",-1)-("^",-1)-("^-",-1)-("_astrolabe",1)-("_foca",-2)-("_PB_",1)-("`",-5)-("|",-1)-("\150",-1)-("\226\144\164fglock",5)-("yi-gtk.cabal:",-1)+("[1,2,3,4,5]\226\144\164WHERE:/\\<",-1)+("\"",-1)+("\"\"",2)+("\"<!",-1)+("##c",3)+("#c",1)+("#cafe",1)+("(",3)+("()",1)+("(C",2)+("+",3)+("-",-10)+("--",-1)+("-----",-1)+("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------",-1)+("--------8<------",-1)+("-rw-r--r",-1)+("<",-40)+("<-",-2)+("a",1)+("anibal",1)+("arch",0)+("asdasd",1)+("astrolabe",1)+("audreyt",8)+("Auzon",8)+("b)",1)+("Baughn",1)+("bernhard",1)+("Blitz",1)+("BMeph",1)+("br1",1)+("brunox",1)+("byorgey",4)+("c/c",1)+("caca",1)+("cadillac_",1)+("chuelmo",1)+("ch\195\169vere",0)+("commitbit",1)+("dbertua",1)+("dcoutts",1)+("ddarius",2)+("decobot",-1)+("dolio",0)+("dons",2)+("dr_df0",3)+("elpolilla",13)+("erg0t",3)+("EvilTerran",2)+("fachos",1)+("ff3<",-1)+("fglock",6)+("frula",-2)+("gaal",1)+("git",1)+("guis",0)+("hackage",1)+("hexrays",1)+("hpaste",0)+("Ikary",1)+("imdb",1)+("infinoid",5)+("ingy",14)+("iran",-1)+("jinja",1)+("jonathan",7)+("kpreid",1)+("lambdabot",3)+("lamdbabot",1)+("larry",2)+("libstdc",1)+("lwall",24)+("masak",1)+("mempty",1)+("merca",-1)+("metadata---",-1)+("mono",1)+("moritz",47)+("MSVC",1)+("musica",1)+("nachof",1)+("ndmitchell",1)+("pmichaud",5)+("pmurias",22)+("putter",5)+("qtc",1)+("quicksilver",2)+("resaca",-1)+("resbalosa",1)+("ruoso",26)+("rurban",2)+("s1n",3)+("shapr",1)+("sirete",1)+("TimToady",1)+("tizoc",9)+("tusho",1)+("VIsta",-2)+("vixey",1)+("xmonad",1)+("_Jonas_",12)+("\239\189\183\239\190\128--",-1)
+ State/poll view
State/quote view

binary file changed (40712 → 44087 bytes)

+ State/seen view

binary file changed (absent → 1104708 bytes)

State/source view

binary file changed (8658 → 26698 bytes)

+ State/state view
@@ -0,0 +1,1 @@+"This page intentionally left blank."
State/system view
@@ -1,1 +1,1 @@-((1194745261,822710000000),TimeDiff {tdYear = 0, tdMonth = 0, tdDay = 0, tdHour = 0, tdMin = 0, tdSec = 3368669, tdPicosec = 0})+((1219971742,482623000000),TimeDiff {tdYear = 0, tdMonth = 0, tdDay = 0, tdHour = 0, tdMin = 0, tdSec = 3368669, tdPicosec = 0})
+ State/tell view
+ State/url view
@@ -0,0 +1,1 @@+True
State/where view

binary file changed (6992 → 7536 bytes)

− build
@@ -1,15 +0,0 @@-#!/bin/sh--set -e--ghc -O2 --make scripts/BotPP.hs -o BotPP-chmod +x Setup.hs configure-nice ./Setup.hs configure --bindir=`pwd` --libdir=`pwd`/lib-nice ./Setup.hs build-./Setup.hs copy-ghc -v0 -c -O2 -odir . -hidir . scripts/ShowQ.hs-ghc -v0 -c -O2 -odir . -hidir . scripts/ShowFun.hs-ghc -v0 -c -O2 -odir . -hidir . scripts/LargeWord.hs-ghc -v0 -c -O2 -funbox-strict-fields -odir . -hidir . scripts/SmallCheck.hs-ghc -v0 -c -O2 -odir . -hidir . scripts/SimpleReflect.hs-ghc -v0 -c -O2 -odir . -hidir . State/L.hs
− config.h.in
@@ -1,13 +0,0 @@-/* The following are used by the VersionModule */--#define GHC_VERSION     "@GHC_VERSION@"--#define PLATFORM        "@PLATFORM@"--#define REPO_PATH       "@REPO_PATH@"--#define GHC_LIB_PATH    "@GHC_LIB_PATH@"--#define PATCH_COUNT     "@PATCH_COUNT@"--#define CPU             "@CPU@"
− configure
@@ -1,2373 +0,0 @@-#! /bin/sh-# Guess values for system-dependent variables and create Makefiles.-# Generated by GNU Autoconf 2.59.-#-# Copyright (C) 2003 Free Software Foundation, Inc.-# This configure script is free software; the Free Software Foundation-# gives unlimited permission to copy, distribute and modify it.-## --------------------- ##-## M4sh Initialization.  ##-## --------------------- ##--# Be Bourne compatible-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then-  emulate sh-  NULLCMD=:-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which-  # is contrary to our usage.  Disable this feature.-  alias -g '${1+"$@"}'='"$@"'-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then-  set -o posix-fi-DUALCASE=1; export DUALCASE # for MKS sh--# Support unset when possible.-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then-  as_unset=unset-else-  as_unset=false-fi---# Work around bugs in pre-3.0 UWIN ksh.-$as_unset ENV MAIL MAILPATH-PS1='$ '-PS2='> '-PS4='+ '--# NLS nuisances.-for as_var in \-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \-  LC_TELEPHONE LC_TIME-do-  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then-    eval $as_var=C; export $as_var-  else-    $as_unset $as_var-  fi-done--# Required to use basename.-if expr a : '\(a\)' >/dev/null 2>&1; then-  as_expr=expr-else-  as_expr=false-fi--if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then-  as_basename=basename-else-  as_basename=false-fi---# Name of the executable.-as_me=`$as_basename "$0" ||-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \-	 X"$0" : 'X\(//\)$' \| \-	 X"$0" : 'X\(/\)$' \| \-	 .     : '\(.\)' 2>/dev/null ||-echo X/"$0" |-    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }-  	  /^X\/\(\/\/\)$/{ s//\1/; q; }-  	  /^X\/\(\/\).*/{ s//\1/; q; }-  	  s/.*/./; q'`---# PATH needs CR, and LINENO needs CR and PATH.-# Avoid depending upon Character Ranges.-as_cr_letters='abcdefghijklmnopqrstuvwxyz'-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'-as_cr_Letters=$as_cr_letters$as_cr_LETTERS-as_cr_digits='0123456789'-as_cr_alnum=$as_cr_Letters$as_cr_digits--# The user is always right.-if test "${PATH_SEPARATOR+set}" != set; then-  echo "#! /bin/sh" >conf$$.sh-  echo  "exit 0"   >>conf$$.sh-  chmod +x conf$$.sh-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then-    PATH_SEPARATOR=';'-  else-    PATH_SEPARATOR=:-  fi-  rm -f conf$$.sh-fi---  as_lineno_1=$LINENO-  as_lineno_2=$LINENO-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`-  test "x$as_lineno_1" != "x$as_lineno_2" &&-  test "x$as_lineno_3"  = "x$as_lineno_2"  || {-  # Find who we are.  Look in the path if we contain no path at all-  # relative or not.-  case $0 in-    *[\\/]* ) as_myself=$0 ;;-    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break-done--       ;;-  esac-  # We did not find ourselves, most probably we were run as `sh COMMAND'-  # in which case we are not to be found in the path.-  if test "x$as_myself" = x; then-    as_myself=$0-  fi-  if test ! -f "$as_myself"; then-    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2-   { (exit 1); exit 1; }; }-  fi-  case $CONFIG_SHELL in-  '')-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-  for as_base in sh bash ksh sh5; do-	 case $as_dir in-	 /*)-	   if ("$as_dir/$as_base" -c '-  as_lineno_1=$LINENO-  as_lineno_2=$LINENO-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`-  test "x$as_lineno_1" != "x$as_lineno_2" &&-  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then-	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }-	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }-	     CONFIG_SHELL=$as_dir/$as_base-	     export CONFIG_SHELL-	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}-	   fi;;-	 esac-       done-done-;;-  esac--  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO-  # uniformly replaced by the line number.  The first 'sed' inserts a-  # line-number line before each line; the second 'sed' does the real-  # work.  The second script uses 'N' to pair each line-number line-  # with the numbered line, and appends trailing '-' during-  # substitution so that $LINENO is not a special case at line end.-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the-  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)-  sed '=' <$as_myself |-    sed '-      N-      s,$,-,-      : loop-      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,-      t loop-      s,-$,,-      s,^['$as_cr_digits']*\n,,-    ' >$as_me.lineno &&-  chmod +x $as_me.lineno ||-    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2-   { (exit 1); exit 1; }; }--  # Don't try to exec as it changes $[0], causing all sort of problems-  # (the dirname of $[0] is not the place where we might find the-  # original and so on.  Autoconf is especially sensible to this).-  . ./$as_me.lineno-  # Exit status is that of the last command.-  exit-}---case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in-  *c*,-n*) ECHO_N= ECHO_C='-' ECHO_T='	' ;;-  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;-  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;-esac--if expr a : '\(a\)' >/dev/null 2>&1; then-  as_expr=expr-else-  as_expr=false-fi--rm -f conf$$ conf$$.exe conf$$.file-echo >conf$$.file-if ln -s conf$$.file conf$$ 2>/dev/null; then-  # We could just check for DJGPP; but this test a) works b) is more generic-  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).-  if test -f conf$$.exe; then-    # Don't use ln at all; we don't have any links-    as_ln_s='cp -p'-  else-    as_ln_s='ln -s'-  fi-elif ln conf$$.file conf$$ 2>/dev/null; then-  as_ln_s=ln-else-  as_ln_s='cp -p'-fi-rm -f conf$$ conf$$.exe conf$$.file--if mkdir -p . 2>/dev/null; then-  as_mkdir_p=:-else-  test -d ./-p && rmdir ./-p-  as_mkdir_p=false-fi--as_executable_p="test -f"--# Sed expression to map a string onto a valid CPP name.-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"--# Sed expression to map a string onto a valid variable name.-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"---# IFS-# We need space, tab and new line, in precisely that order.-as_nl='-'-IFS=" 	$as_nl"--# CDPATH.-$as_unset CDPATH---# Name of the host.-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,-# so uname gets run too.-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`--exec 6>&1--#-# Initializations.-#-ac_default_prefix=/usr/local-ac_config_libobj_dir=.-cross_compiling=no-subdirs=-MFLAGS=-MAKEFLAGS=-SHELL=${CONFIG_SHELL-/bin/sh}--# Maximum number of lines to put in a shell here document.-# This variable seems obsolete.  It should probably be removed, and-# only ac_max_sed_lines should be used.-: ${ac_max_here_lines=38}--# Identity of this package.-PACKAGE_NAME=-PACKAGE_TARNAME=-PACKAGE_VERSION=-PACKAGE_STRING=-PACKAGE_BUGREPORT=--ac_unique_file="Main.hs"-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS GHC_VERSION GHC_LIB_PATH PLATFORM CPU REPO_PATH PATCH_COUNT WithM4 SYMS LIBOBJS LTLIBOBJS'-ac_subst_files=''--# Initialize some variables set by options.-ac_init_help=-ac_init_version=false-# The variables have the same names as the options, with-# dashes changed to underlines.-cache_file=/dev/null-exec_prefix=NONE-no_create=-no_recursion=-prefix=NONE-program_prefix=NONE-program_suffix=NONE-program_transform_name=s,x,x,-silent=-site=-srcdir=-verbose=-x_includes=NONE-x_libraries=NONE--# Installation directory options.-# These are left unexpanded so users can "make install exec_prefix=/foo"-# and all the variables that are supposed to be based on exec_prefix-# by default will actually change.-# Use braces instead of parens because sh, perl, etc. also accept them.-bindir='${exec_prefix}/bin'-sbindir='${exec_prefix}/sbin'-libexecdir='${exec_prefix}/libexec'-datadir='${prefix}/share'-sysconfdir='${prefix}/etc'-sharedstatedir='${prefix}/com'-localstatedir='${prefix}/var'-libdir='${exec_prefix}/lib'-includedir='${prefix}/include'-oldincludedir='/usr/include'-infodir='${prefix}/info'-mandir='${prefix}/man'--ac_prev=-for ac_option-do-  # If the previous option needs an argument, assign it.-  if test -n "$ac_prev"; then-    eval "$ac_prev=\$ac_option"-    ac_prev=-    continue-  fi--  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`--  # Accept the important Cygnus configure options, so we can diagnose typos.--  case $ac_option in--  -bindir | --bindir | --bindi | --bind | --bin | --bi)-    ac_prev=bindir ;;-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)-    bindir=$ac_optarg ;;--  -build | --build | --buil | --bui | --bu)-    ac_prev=build_alias ;;-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)-    build_alias=$ac_optarg ;;--  -cache-file | --cache-file | --cache-fil | --cache-fi \-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)-    ac_prev=cache_file ;;-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)-    cache_file=$ac_optarg ;;--  --config-cache | -C)-    cache_file=config.cache ;;--  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)-    ac_prev=datadir ;;-  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \-  | --da=*)-    datadir=$ac_optarg ;;--  -disable-* | --disable-*)-    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`-    # Reject names that are not valid shell variable names.-    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2-   { (exit 1); exit 1; }; }-    ac_feature=`echo $ac_feature | sed 's/-/_/g'`-    eval "enable_$ac_feature=no" ;;--  -enable-* | --enable-*)-    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`-    # Reject names that are not valid shell variable names.-    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2-   { (exit 1); exit 1; }; }-    ac_feature=`echo $ac_feature | sed 's/-/_/g'`-    case $ac_option in-      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;-      *) ac_optarg=yes ;;-    esac-    eval "enable_$ac_feature='$ac_optarg'" ;;--  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \-  | --exec | --exe | --ex)-    ac_prev=exec_prefix ;;-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \-  | --exec=* | --exe=* | --ex=*)-    exec_prefix=$ac_optarg ;;--  -gas | --gas | --ga | --g)-    # Obsolete; use --with-gas.-    with_gas=yes ;;--  -help | --help | --hel | --he | -h)-    ac_init_help=long ;;-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)-    ac_init_help=recursive ;;-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)-    ac_init_help=short ;;--  -host | --host | --hos | --ho)-    ac_prev=host_alias ;;-  -host=* | --host=* | --hos=* | --ho=*)-    host_alias=$ac_optarg ;;--  -includedir | --includedir | --includedi | --included | --include \-  | --includ | --inclu | --incl | --inc)-    ac_prev=includedir ;;-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \-  | --includ=* | --inclu=* | --incl=* | --inc=*)-    includedir=$ac_optarg ;;--  -infodir | --infodir | --infodi | --infod | --info | --inf)-    ac_prev=infodir ;;-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)-    infodir=$ac_optarg ;;--  -libdir | --libdir | --libdi | --libd)-    ac_prev=libdir ;;-  -libdir=* | --libdir=* | --libdi=* | --libd=*)-    libdir=$ac_optarg ;;--  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \-  | --libexe | --libex | --libe)-    ac_prev=libexecdir ;;-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \-  | --libexe=* | --libex=* | --libe=*)-    libexecdir=$ac_optarg ;;--  -localstatedir | --localstatedir | --localstatedi | --localstated \-  | --localstate | --localstat | --localsta | --localst \-  | --locals | --local | --loca | --loc | --lo)-    ac_prev=localstatedir ;;-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \-  | --localstate=* | --localstat=* | --localsta=* | --localst=* \-  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)-    localstatedir=$ac_optarg ;;--  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)-    ac_prev=mandir ;;-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)-    mandir=$ac_optarg ;;--  -nfp | --nfp | --nf)-    # Obsolete; use --without-fp.-    with_fp=no ;;--  -no-create | --no-create | --no-creat | --no-crea | --no-cre \-  | --no-cr | --no-c | -n)-    no_create=yes ;;--  -no-recursion | --no-recursion | --no-recursio | --no-recursi \-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)-    no_recursion=yes ;;--  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \-  | --oldin | --oldi | --old | --ol | --o)-    ac_prev=oldincludedir ;;-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)-    oldincludedir=$ac_optarg ;;--  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)-    ac_prev=prefix ;;-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)-    prefix=$ac_optarg ;;--  -program-prefix | --program-prefix | --program-prefi | --program-pref \-  | --program-pre | --program-pr | --program-p)-    ac_prev=program_prefix ;;-  -program-prefix=* | --program-prefix=* | --program-prefi=* \-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)-    program_prefix=$ac_optarg ;;--  -program-suffix | --program-suffix | --program-suffi | --program-suff \-  | --program-suf | --program-su | --program-s)-    ac_prev=program_suffix ;;-  -program-suffix=* | --program-suffix=* | --program-suffi=* \-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)-    program_suffix=$ac_optarg ;;--  -program-transform-name | --program-transform-name \-  | --program-transform-nam | --program-transform-na \-  | --program-transform-n | --program-transform- \-  | --program-transform | --program-transfor \-  | --program-transfo | --program-transf \-  | --program-trans | --program-tran \-  | --progr-tra | --program-tr | --program-t)-    ac_prev=program_transform_name ;;-  -program-transform-name=* | --program-transform-name=* \-  | --program-transform-nam=* | --program-transform-na=* \-  | --program-transform-n=* | --program-transform-=* \-  | --program-transform=* | --program-transfor=* \-  | --program-transfo=* | --program-transf=* \-  | --program-trans=* | --program-tran=* \-  | --progr-tra=* | --program-tr=* | --program-t=*)-    program_transform_name=$ac_optarg ;;--  -q | -quiet | --quiet | --quie | --qui | --qu | --q \-  | -silent | --silent | --silen | --sile | --sil)-    silent=yes ;;--  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)-    ac_prev=sbindir ;;-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \-  | --sbi=* | --sb=*)-    sbindir=$ac_optarg ;;--  -sharedstatedir | --sharedstatedir | --sharedstatedi \-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \-  | --sharedst | --shareds | --shared | --share | --shar \-  | --sha | --sh)-    ac_prev=sharedstatedir ;;-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \-  | --sha=* | --sh=*)-    sharedstatedir=$ac_optarg ;;--  -site | --site | --sit)-    ac_prev=site ;;-  -site=* | --site=* | --sit=*)-    site=$ac_optarg ;;--  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)-    ac_prev=srcdir ;;-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)-    srcdir=$ac_optarg ;;--  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \-  | --syscon | --sysco | --sysc | --sys | --sy)-    ac_prev=sysconfdir ;;-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)-    sysconfdir=$ac_optarg ;;--  -target | --target | --targe | --targ | --tar | --ta | --t)-    ac_prev=target_alias ;;-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)-    target_alias=$ac_optarg ;;--  -v | -verbose | --verbose | --verbos | --verbo | --verb)-    verbose=yes ;;--  -version | --version | --versio | --versi | --vers | -V)-    ac_init_version=: ;;--  -with-* | --with-*)-    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`-    # Reject names that are not valid shell variable names.-    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&-      { echo "$as_me: error: invalid package name: $ac_package" >&2-   { (exit 1); exit 1; }; }-    ac_package=`echo $ac_package| sed 's/-/_/g'`-    case $ac_option in-      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;-      *) ac_optarg=yes ;;-    esac-    eval "with_$ac_package='$ac_optarg'" ;;--  -without-* | --without-*)-    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`-    # Reject names that are not valid shell variable names.-    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&-      { echo "$as_me: error: invalid package name: $ac_package" >&2-   { (exit 1); exit 1; }; }-    ac_package=`echo $ac_package | sed 's/-/_/g'`-    eval "with_$ac_package=no" ;;--  --x)-    # Obsolete; use --with-x.-    with_x=yes ;;--  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \-  | --x-incl | --x-inc | --x-in | --x-i)-    ac_prev=x_includes ;;-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)-    x_includes=$ac_optarg ;;--  -x-libraries | --x-libraries | --x-librarie | --x-librari \-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)-    ac_prev=x_libraries ;;-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)-    x_libraries=$ac_optarg ;;--  -*) { echo "$as_me: error: unrecognized option: $ac_option-Try \`$0 --help' for more information." >&2-   { (exit 1); exit 1; }; }-    ;;--  *=*)-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`-    # Reject names that are not valid shell variable names.-    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&-      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2-   { (exit 1); exit 1; }; }-    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`-    eval "$ac_envvar='$ac_optarg'"-    export $ac_envvar ;;--  *)-    # FIXME: should be removed in autoconf 3.0.-    echo "$as_me: WARNING: you should use --build, --host, --target" >&2-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&-      echo "$as_me: WARNING: invalid host type: $ac_option" >&2-    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}-    ;;--  esac-done--if test -n "$ac_prev"; then-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`-  { echo "$as_me: error: missing argument to $ac_option" >&2-   { (exit 1); exit 1; }; }-fi--# Be sure to have absolute paths.-for ac_var in exec_prefix prefix-do-  eval ac_val=$`echo $ac_var`-  case $ac_val in-    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;-    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2-   { (exit 1); exit 1; }; };;-  esac-done--# Be sure to have absolute paths.-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \-	      localstatedir libdir includedir oldincludedir infodir mandir-do-  eval ac_val=$`echo $ac_var`-  case $ac_val in-    [\\/$]* | ?:[\\/]* ) ;;-    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2-   { (exit 1); exit 1; }; };;-  esac-done--# There might be people who depend on the old broken behavior: `$host'-# used to hold the argument of --host etc.-# FIXME: To remove some day.-build=$build_alias-host=$host_alias-target=$target_alias--# FIXME: To remove some day.-if test "x$host_alias" != x; then-  if test "x$build_alias" = x; then-    cross_compiling=maybe-    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.-    If a cross compiler is detected then cross compile mode will be used." >&2-  elif test "x$build_alias" != "x$host_alias"; then-    cross_compiling=yes-  fi-fi--ac_tool_prefix=-test -n "$host_alias" && ac_tool_prefix=$host_alias---test "$silent" = yes && exec 6>/dev/null---# Find the source files, if location was not specified.-if test -z "$srcdir"; then-  ac_srcdir_defaulted=yes-  # Try the directory containing this script, then its parent.-  ac_confdir=`(dirname "$0") 2>/dev/null ||-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \-	 X"$0" : 'X\(//\)[^/]' \| \-	 X"$0" : 'X\(//\)$' \| \-	 X"$0" : 'X\(/\)' \| \-	 .     : '\(.\)' 2>/dev/null ||-echo X"$0" |-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }-  	  /^X\(\/\/\)$/{ s//\1/; q; }-  	  /^X\(\/\).*/{ s//\1/; q; }-  	  s/.*/./; q'`-  srcdir=$ac_confdir-  if test ! -r $srcdir/$ac_unique_file; then-    srcdir=..-  fi-else-  ac_srcdir_defaulted=no-fi-if test ! -r $srcdir/$ac_unique_file; then-  if test "$ac_srcdir_defaulted" = yes; then-    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2-   { (exit 1); exit 1; }; }-  else-    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2-   { (exit 1); exit 1; }; }-  fi-fi-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||-  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2-   { (exit 1); exit 1; }; }-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`-ac_env_build_alias_set=${build_alias+set}-ac_env_build_alias_value=$build_alias-ac_cv_env_build_alias_set=${build_alias+set}-ac_cv_env_build_alias_value=$build_alias-ac_env_host_alias_set=${host_alias+set}-ac_env_host_alias_value=$host_alias-ac_cv_env_host_alias_set=${host_alias+set}-ac_cv_env_host_alias_value=$host_alias-ac_env_target_alias_set=${target_alias+set}-ac_env_target_alias_value=$target_alias-ac_cv_env_target_alias_set=${target_alias+set}-ac_cv_env_target_alias_value=$target_alias--#-# Report the --help message.-#-if test "$ac_init_help" = "long"; then-  # Omit some internal or obsolete options to make the list less imposing.-  # This message is too long to be a string in the A/UX 3.1 sh.-  cat <<_ACEOF-\`configure' configures this package to adapt to many kinds of systems.--Usage: $0 [OPTION]... [VAR=VALUE]...--To assign environment variables (e.g., CC, CFLAGS...), specify them as-VAR=VALUE.  See below for descriptions of some of the useful variables.--Defaults for the options are specified in brackets.--Configuration:-  -h, --help              display this help and exit-      --help=short        display options specific to this package-      --help=recursive    display the short help of all the included packages-  -V, --version           display version information and exit-  -q, --quiet, --silent   do not print \`checking...' messages-      --cache-file=FILE   cache test results in FILE [disabled]-  -C, --config-cache      alias for \`--cache-file=config.cache'-  -n, --no-create         do not create output files-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']--_ACEOF--  cat <<_ACEOF-Installation directories:-  --prefix=PREFIX         install architecture-independent files in PREFIX-			  [$ac_default_prefix]-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX-			  [PREFIX]--By default, \`make install' will install all the files in-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify-an installation prefix other than \`$ac_default_prefix' using \`--prefix',-for instance \`--prefix=\$HOME'.--For better control, use the options below.--Fine tuning of the installation directories:-  --bindir=DIR           user executables [EPREFIX/bin]-  --sbindir=DIR          system admin executables [EPREFIX/sbin]-  --libexecdir=DIR       program executables [EPREFIX/libexec]-  --datadir=DIR          read-only architecture-independent data [PREFIX/share]-  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]-  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]-  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]-  --libdir=DIR           object code libraries [EPREFIX/lib]-  --includedir=DIR       C header files [PREFIX/include]-  --oldincludedir=DIR    C header files for non-gcc [/usr/include]-  --infodir=DIR          info documentation [PREFIX/info]-  --mandir=DIR           man documentation [PREFIX/man]-_ACEOF--  cat <<\_ACEOF-_ACEOF-fi--if test -n "$ac_init_help"; then--  cat <<\_ACEOF--_ACEOF-fi--if test "$ac_init_help" = "recursive"; then-  # If there are subdirs, report their specific --help.-  ac_popdir=`pwd`-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue-    test -d $ac_dir || continue-    ac_builddir=.--if test "$ac_dir" != .; then-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`-  # A "../" for each directory in $ac_dir_suffix.-  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`-else-  ac_dir_suffix= ac_top_builddir=-fi--case $srcdir in-  .)  # No --srcdir option.  We are building in place.-    ac_srcdir=.-    if test -z "$ac_top_builddir"; then-       ac_top_srcdir=.-    else-       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`-    fi ;;-  [\\/]* | ?:[\\/]* )  # Absolute path.-    ac_srcdir=$srcdir$ac_dir_suffix;-    ac_top_srcdir=$srcdir ;;-  *) # Relative path.-    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix-    ac_top_srcdir=$ac_top_builddir$srcdir ;;-esac--# Do not use `cd foo && pwd` to compute absolute paths, because-# the directories may not exist.-case `pwd` in-.) ac_abs_builddir="$ac_dir";;-*)-  case "$ac_dir" in-  .) ac_abs_builddir=`pwd`;;-  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;-  *) ac_abs_builddir=`pwd`/"$ac_dir";;-  esac;;-esac-case $ac_abs_builddir in-.) ac_abs_top_builddir=${ac_top_builddir}.;;-*)-  case ${ac_top_builddir}. in-  .) ac_abs_top_builddir=$ac_abs_builddir;;-  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;-  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;-  esac;;-esac-case $ac_abs_builddir in-.) ac_abs_srcdir=$ac_srcdir;;-*)-  case $ac_srcdir in-  .) ac_abs_srcdir=$ac_abs_builddir;;-  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;-  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;-  esac;;-esac-case $ac_abs_builddir in-.) ac_abs_top_srcdir=$ac_top_srcdir;;-*)-  case $ac_top_srcdir in-  .) ac_abs_top_srcdir=$ac_abs_builddir;;-  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;-  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;-  esac;;-esac--    cd $ac_dir-    # Check for guested configure; otherwise get Cygnus style configure.-    if test -f $ac_srcdir/configure.gnu; then-      echo-      $SHELL $ac_srcdir/configure.gnu  --help=recursive-    elif test -f $ac_srcdir/configure; then-      echo-      $SHELL $ac_srcdir/configure  --help=recursive-    elif test -f $ac_srcdir/configure.ac ||-	   test -f $ac_srcdir/configure.in; then-      echo-      $ac_configure --help-    else-      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2-    fi-    cd $ac_popdir-  done-fi--test -n "$ac_init_help" && exit 0-if $ac_init_version; then-  cat <<\_ACEOF--Copyright (C) 2003 Free Software Foundation, Inc.-This configure script is free software; the Free Software Foundation-gives unlimited permission to copy, distribute and modify it.-_ACEOF-  exit 0-fi-exec 5>config.log-cat >&5 <<_ACEOF-This file contains any messages produced by compilers while-running configure, to aid debugging if configure makes a mistake.--It was created by $as_me, which was-generated by GNU Autoconf 2.59.  Invocation command line was--  $ $0 $@--_ACEOF-{-cat <<_ASUNAME-## --------- ##-## Platform. ##-## --------- ##--hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`-uname -m = `(uname -m) 2>/dev/null || echo unknown`-uname -r = `(uname -r) 2>/dev/null || echo unknown`-uname -s = `(uname -s) 2>/dev/null || echo unknown`-uname -v = `(uname -v) 2>/dev/null || echo unknown`--/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`--/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`-hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`--_ASUNAME--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-  echo "PATH: $as_dir"-done--} >&5--cat >&5 <<_ACEOF---## ----------- ##-## Core tests. ##-## ----------- ##--_ACEOF---# Keep a trace of the command line.-# Strip out --no-create and --no-recursion so they do not pile up.-# Strip out --silent because we don't want to record it for future runs.-# Also quote any args containing shell meta-characters.-# Make two passes to allow for proper duplicate-argument suppression.-ac_configure_args=-ac_configure_args0=-ac_configure_args1=-ac_sep=-ac_must_keep_next=false-for ac_pass in 1 2-do-  for ac_arg-  do-    case $ac_arg in-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \-    | -silent | --silent | --silen | --sile | --sil)-      continue ;;-    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)-      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;-    esac-    case $ac_pass in-    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;-    2)-      ac_configure_args1="$ac_configure_args1 '$ac_arg'"-      if test $ac_must_keep_next = true; then-	ac_must_keep_next=false # Got value, back to normal.-      else-	case $ac_arg in-	  *=* | --config-cache | -C | -disable-* | --disable-* \-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \-	  | -with-* | --with-* | -without-* | --without-* | --x)-	    case "$ac_configure_args0 " in-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;-	    esac-	    ;;-	  -* ) ac_must_keep_next=true ;;-	esac-      fi-      ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"-      # Get rid of the leading space.-      ac_sep=" "-      ;;-    esac-  done-done-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }--# When interrupted or exit'd, cleanup temporary files, and complete-# config.log.  We remove comments because anyway the quotes in there-# would cause problems or look ugly.-# WARNING: Be sure not to use single quotes in there, as some shells,-# such as our DU 5.0 friend, will then `close' the trap.-trap 'exit_status=$?-  # Save into config.log some information that might help in debugging.-  {-    echo--    cat <<\_ASBOX-## ---------------- ##-## Cache variables. ##-## ---------------- ##-_ASBOX-    echo-    # The following way of writing the cache mishandles newlines in values,-{-  (set) 2>&1 |-    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in-    *ac_space=\ *)-      sed -n \-	"s/'"'"'/'"'"'\\\\'"'"''"'"'/g;-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"-      ;;-    *)-      sed -n \-	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"-      ;;-    esac;-}-    echo--    cat <<\_ASBOX-## ----------------- ##-## Output variables. ##-## ----------------- ##-_ASBOX-    echo-    for ac_var in $ac_subst_vars-    do-      eval ac_val=$`echo $ac_var`-      echo "$ac_var='"'"'$ac_val'"'"'"-    done | sort-    echo--    if test -n "$ac_subst_files"; then-      cat <<\_ASBOX-## ------------- ##-## Output files. ##-## ------------- ##-_ASBOX-      echo-      for ac_var in $ac_subst_files-      do-	eval ac_val=$`echo $ac_var`-	echo "$ac_var='"'"'$ac_val'"'"'"-      done | sort-      echo-    fi--    if test -s confdefs.h; then-      cat <<\_ASBOX-## ----------- ##-## confdefs.h. ##-## ----------- ##-_ASBOX-      echo-      sed "/^$/d" confdefs.h | sort-      echo-    fi-    test "$ac_signal" != 0 &&-      echo "$as_me: caught signal $ac_signal"-    echo "$as_me: exit $exit_status"-  } >&5-  rm -f core *.core &&-  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&-    exit $exit_status-     ' 0-for ac_signal in 1 2 13 15; do-  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal-done-ac_signal=0--# confdefs.h avoids OS command line length limits that DEFS can exceed.-rm -rf conftest* confdefs.h-# AIX cpp loses on an empty file, so make sure it contains at least a newline.-echo >confdefs.h--# Predefined preprocessor variables.--cat >>confdefs.h <<_ACEOF-#define PACKAGE_NAME "$PACKAGE_NAME"-_ACEOF---cat >>confdefs.h <<_ACEOF-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"-_ACEOF---cat >>confdefs.h <<_ACEOF-#define PACKAGE_VERSION "$PACKAGE_VERSION"-_ACEOF---cat >>confdefs.h <<_ACEOF-#define PACKAGE_STRING "$PACKAGE_STRING"-_ACEOF---cat >>confdefs.h <<_ACEOF-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"-_ACEOF---# Let the site file select an alternate cache file if it wants to.-# Prefer explicitly selected file to automatically selected ones.-if test -z "$CONFIG_SITE"; then-  if test "x$prefix" != xNONE; then-    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"-  else-    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"-  fi-fi-for ac_site_file in $CONFIG_SITE; do-  if test -r "$ac_site_file"; then-    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5-echo "$as_me: loading site script $ac_site_file" >&6;}-    sed 's/^/| /' "$ac_site_file" >&5-    . "$ac_site_file"-  fi-done--if test -r "$cache_file"; then-  # Some versions of bash will fail to source /dev/null (special-  # files actually), so we avoid doing that.-  if test -f "$cache_file"; then-    { echo "$as_me:$LINENO: loading cache $cache_file" >&5-echo "$as_me: loading cache $cache_file" >&6;}-    case $cache_file in-      [\\/]* | ?:[\\/]* ) . $cache_file;;-      *)                      . ./$cache_file;;-    esac-  fi-else-  { echo "$as_me:$LINENO: creating cache $cache_file" >&5-echo "$as_me: creating cache $cache_file" >&6;}-  >$cache_file-fi--# Check that the precious variables saved in the cache have kept the same-# value.-ac_cache_corrupted=false-for ac_var in `(set) 2>&1 |-	       sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do-  eval ac_old_set=\$ac_cv_env_${ac_var}_set-  eval ac_new_set=\$ac_env_${ac_var}_set-  eval ac_old_val="\$ac_cv_env_${ac_var}_value"-  eval ac_new_val="\$ac_env_${ac_var}_value"-  case $ac_old_set,$ac_new_set in-    set,)-      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}-      ac_cache_corrupted=: ;;-    ,set)-      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}-      ac_cache_corrupted=: ;;-    ,);;-    *)-      if test "x$ac_old_val" != "x$ac_new_val"; then-	{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}-	{ echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5-echo "$as_me:   former value:  $ac_old_val" >&2;}-	{ echo "$as_me:$LINENO:   current value: $ac_new_val" >&5-echo "$as_me:   current value: $ac_new_val" >&2;}-	ac_cache_corrupted=:-      fi;;-  esac-  # Pass precious variables to config.status.-  if test "$ac_new_set" = set; then-    case $ac_new_val in-    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)-      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;-    *) ac_arg=$ac_var=$ac_new_val ;;-    esac-    case " $ac_configure_args " in-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.-      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;-    esac-  fi-done-if $ac_cache_corrupted; then-  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5-echo "$as_me: error: changes in the environment can compromise the build" >&2;}-  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}-   { (exit 1); exit 1; }; }-fi--ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu---------------------# this is arbitrary---# check ghc version here-echo "$as_me:$LINENO: checking for ghc version" >&5-echo $ECHO_N "checking for ghc version... $ECHO_C" >&6-GHC_VERSION=`ghc --numeric-version`-echo "$as_me:$LINENO: result: $GHC_VERSION" >&5-echo "${ECHO_T}$GHC_VERSION" >&6---# check ghc library path-echo "$as_me:$LINENO: checking for ghc library path" >&5-echo $ECHO_N "checking for ghc library path... $ECHO_C" >&6-GHC_LIB_PATH=`ghc --print-libdir`-echo "$as_me:$LINENO: result: $GHC_LIB_PATH" >&5-echo "${ECHO_T}$GHC_LIB_PATH" >&6---PLATFORM=`uname -ms`---# extracting the cpu details (linux only)-CPU=`grep 'model name' /proc/cpuinfo 2> /dev/null | sed 's/.*: //' | sed 's/.* //;1q' || true`---REPO_PATH=`sed -n 1p _darcs/prefs/repos`---PATCH_COUNT=`darcs changes --xml-output 2> /dev/null | sed -n '/TAG/q;/^<\/patch/p' | wc -l | sed 's/ *//g'`---# Use GNU m4, which is called gm4 on *BSD-if gm4 --version > /dev/null 2>&1 ; then-        # Extract the first word of "gm4", so it can be a program name with args.-set dummy gm4; ac_word=$2-echo "$as_me:$LINENO: checking for $ac_word" >&5-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6-if test "${ac_cv_path_WithM4+set}" = set; then-  echo $ECHO_N "(cached) $ECHO_C" >&6-else-  case $WithM4 in-  [\\/]* | ?:[\\/]*)-  ac_cv_path_WithM4="$WithM4" # Let the user override the test with a path.-  ;;-  *)-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-  for ac_exec_ext in '' $ac_executable_extensions; do-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    ac_cv_path_WithM4="$as_dir/$ac_word$ac_exec_ext"-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-done--  ;;-esac-fi-WithM4=$ac_cv_path_WithM4--if test -n "$WithM4"; then-  echo "$as_me:$LINENO: result: $WithM4" >&5-echo "${ECHO_T}$WithM4" >&6-else-  echo "$as_me:$LINENO: result: no" >&5-echo "${ECHO_T}no" >&6-fi--else-        # Extract the first word of "m4", so it can be a program name with args.-set dummy m4; ac_word=$2-echo "$as_me:$LINENO: checking for $ac_word" >&5-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6-if test "${ac_cv_path_WithM4+set}" = set; then-  echo $ECHO_N "(cached) $ECHO_C" >&6-else-  case $WithM4 in-  [\\/]* | ?:[\\/]*)-  ac_cv_path_WithM4="$WithM4" # Let the user override the test with a path.-  ;;-  *)-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-  for ac_exec_ext in '' $ac_executable_extensions; do-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    ac_cv_path_WithM4="$as_dir/$ac_word$ac_exec_ext"-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-done--  ;;-esac-fi-WithM4=$ac_cv_path_WithM4--if test -n "$WithM4"; then-  echo "$as_me:$LINENO: result: $WithM4" >&5-echo "${ECHO_T}$WithM4" >&6-else-  echo "$as_me:$LINENO: result: no" >&5-echo "${ECHO_T}no" >&6-fi--fi--# need to recompile this if configure is rerun-touch Plugin/Version.hs----                    ac_config_files="$ac_config_files config.h testsuite/logpp"--          ac_config_commands="$ac_config_commands default"--cat >confcache <<\_ACEOF-# This file is a shell script that caches the results of configure-# tests run on this system so they can be shared between configure-# scripts and configure runs, see configure's option --config-cache.-# It is not useful on other systems.  If it contains results you don't-# want to keep, you may remove or edit it.-#-# config.status only pays attention to the cache file if you give it-# the --recheck option to rerun configure.-#-# `ac_cv_env_foo' variables (set or unset) will be overridden when-# loading this file, other *unset* `ac_cv_foo' will be assigned the-# following values.--_ACEOF--# The following way of writing the cache mishandles newlines in values,-# but we know of no workaround that is simple, portable, and efficient.-# So, don't put newlines in cache variables' values.-# Ultrix sh set writes to stderr and can't be redirected directly,-# and sets the high bit in the cache file unless we assign to the vars.-{-  (set) 2>&1 |-    case `(ac_space=' '; set | grep ac_space) 2>&1` in-    *ac_space=\ *)-      # `set' does not quote correctly, so add quotes (double-quote-      # substitution turns \\\\ into \\, and sed turns \\ into \).-      sed -n \-	"s/'/'\\\\''/g;-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"-      ;;-    *)-      # `set' quotes correctly as required by POSIX, so do not add quotes.-      sed -n \-	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"-      ;;-    esac;-} |-  sed '-     t clear-     : clear-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/-     t end-     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/-     : end' >>confcache-if diff $cache_file confcache >/dev/null 2>&1; then :; else-  if test -w $cache_file; then-    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"-    cat confcache >$cache_file-  else-    echo "not updating unwritable cache $cache_file"-  fi-fi-rm -f confcache--test "x$prefix" = xNONE && prefix=$ac_default_prefix-# Let make expand exec_prefix.-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'--# VPATH may cause trouble with some makes, so we remove $(srcdir),-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and-# trailing colons and then remove the whole line if VPATH becomes empty-# (actually we leave an empty line to preserve line numbers).-if test "x$srcdir" = x.; then-  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{-s/:*\$(srcdir):*/:/;-s/:*\${srcdir}:*/:/;-s/:*@srcdir@:*/:/;-s/^\([^=]*=[	 ]*\):*/\1/;-s/:*$//;-s/^[^=]*=[	 ]*$//;-}'-fi--# Transform confdefs.h into DEFS.-# Protect against shell expansion while executing Makefile rules.-# Protect against Makefile macro expansion.-#-# If the first sed substitution is executed (which looks for macros that-# take arguments), then we branch to the quote section.  Otherwise,-# look for a macro that doesn't take arguments.-cat >confdef2opt.sed <<\_ACEOF-t clear-: clear-s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\),-D\1=\2,g-t quote-s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\),-D\1=\2,g-t quote-d-: quote-s,[	 `~#$^&*(){}\\|;'"<>?],\\&,g-s,\[,\\&,g-s,\],\\&,g-s,\$,$$,g-p-_ACEOF-# We use echo to avoid assuming a particular line-breaking character.-# The extra dot is to prevent the shell from consuming trailing-# line-breaks from the sub-command output.  A line-break within-# single-quotes doesn't work because, if this script is created in a-# platform that uses two characters for line-breaks (e.g., DOS), tr-# would break.-ac_LF_and_DOT=`echo; echo .`-DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`-rm -f confdef2opt.sed---ac_libobjs=-ac_ltlibobjs=-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue-  # 1. Remove the extension, and $U if already installed.-  ac_i=`echo "$ac_i" |-	 sed 's/\$U\././;s/\.o$//;s/\.obj$//'`-  # 2. Add them.-  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"-  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'-done-LIBOBJS=$ac_libobjs--LTLIBOBJS=$ac_ltlibobjs----: ${CONFIG_STATUS=./config.status}-ac_clean_files_save=$ac_clean_files-ac_clean_files="$ac_clean_files $CONFIG_STATUS"-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5-echo "$as_me: creating $CONFIG_STATUS" >&6;}-cat >$CONFIG_STATUS <<_ACEOF-#! $SHELL-# Generated by $as_me.-# Run this file to recreate the current configuration.-# Compiler output produced by configure, useful for debugging-# configure, is in config.log if it exists.--debug=false-ac_cs_recheck=false-ac_cs_silent=false-SHELL=\${CONFIG_SHELL-$SHELL}-_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF-## --------------------- ##-## M4sh Initialization.  ##-## --------------------- ##--# Be Bourne compatible-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then-  emulate sh-  NULLCMD=:-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which-  # is contrary to our usage.  Disable this feature.-  alias -g '${1+"$@"}'='"$@"'-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then-  set -o posix-fi-DUALCASE=1; export DUALCASE # for MKS sh--# Support unset when possible.-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then-  as_unset=unset-else-  as_unset=false-fi---# Work around bugs in pre-3.0 UWIN ksh.-$as_unset ENV MAIL MAILPATH-PS1='$ '-PS2='> '-PS4='+ '--# NLS nuisances.-for as_var in \-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \-  LC_TELEPHONE LC_TIME-do-  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then-    eval $as_var=C; export $as_var-  else-    $as_unset $as_var-  fi-done--# Required to use basename.-if expr a : '\(a\)' >/dev/null 2>&1; then-  as_expr=expr-else-  as_expr=false-fi--if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then-  as_basename=basename-else-  as_basename=false-fi---# Name of the executable.-as_me=`$as_basename "$0" ||-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \-	 X"$0" : 'X\(//\)$' \| \-	 X"$0" : 'X\(/\)$' \| \-	 .     : '\(.\)' 2>/dev/null ||-echo X/"$0" |-    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }-  	  /^X\/\(\/\/\)$/{ s//\1/; q; }-  	  /^X\/\(\/\).*/{ s//\1/; q; }-  	  s/.*/./; q'`---# PATH needs CR, and LINENO needs CR and PATH.-# Avoid depending upon Character Ranges.-as_cr_letters='abcdefghijklmnopqrstuvwxyz'-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'-as_cr_Letters=$as_cr_letters$as_cr_LETTERS-as_cr_digits='0123456789'-as_cr_alnum=$as_cr_Letters$as_cr_digits--# The user is always right.-if test "${PATH_SEPARATOR+set}" != set; then-  echo "#! /bin/sh" >conf$$.sh-  echo  "exit 0"   >>conf$$.sh-  chmod +x conf$$.sh-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then-    PATH_SEPARATOR=';'-  else-    PATH_SEPARATOR=:-  fi-  rm -f conf$$.sh-fi---  as_lineno_1=$LINENO-  as_lineno_2=$LINENO-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`-  test "x$as_lineno_1" != "x$as_lineno_2" &&-  test "x$as_lineno_3"  = "x$as_lineno_2"  || {-  # Find who we are.  Look in the path if we contain no path at all-  # relative or not.-  case $0 in-    *[\\/]* ) as_myself=$0 ;;-    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break-done--       ;;-  esac-  # We did not find ourselves, most probably we were run as `sh COMMAND'-  # in which case we are not to be found in the path.-  if test "x$as_myself" = x; then-    as_myself=$0-  fi-  if test ! -f "$as_myself"; then-    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}-   { (exit 1); exit 1; }; }-  fi-  case $CONFIG_SHELL in-  '')-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-  for as_base in sh bash ksh sh5; do-	 case $as_dir in-	 /*)-	   if ("$as_dir/$as_base" -c '-  as_lineno_1=$LINENO-  as_lineno_2=$LINENO-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`-  test "x$as_lineno_1" != "x$as_lineno_2" &&-  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then-	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }-	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }-	     CONFIG_SHELL=$as_dir/$as_base-	     export CONFIG_SHELL-	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}-	   fi;;-	 esac-       done-done-;;-  esac--  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO-  # uniformly replaced by the line number.  The first 'sed' inserts a-  # line-number line before each line; the second 'sed' does the real-  # work.  The second script uses 'N' to pair each line-number line-  # with the numbered line, and appends trailing '-' during-  # substitution so that $LINENO is not a special case at line end.-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the-  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)-  sed '=' <$as_myself |-    sed '-      N-      s,$,-,-      : loop-      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,-      t loop-      s,-$,,-      s,^['$as_cr_digits']*\n,,-    ' >$as_me.lineno &&-  chmod +x $as_me.lineno ||-    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}-   { (exit 1); exit 1; }; }--  # Don't try to exec as it changes $[0], causing all sort of problems-  # (the dirname of $[0] is not the place where we might find the-  # original and so on.  Autoconf is especially sensible to this).-  . ./$as_me.lineno-  # Exit status is that of the last command.-  exit-}---case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in-  *c*,-n*) ECHO_N= ECHO_C='-' ECHO_T='	' ;;-  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;-  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;-esac--if expr a : '\(a\)' >/dev/null 2>&1; then-  as_expr=expr-else-  as_expr=false-fi--rm -f conf$$ conf$$.exe conf$$.file-echo >conf$$.file-if ln -s conf$$.file conf$$ 2>/dev/null; then-  # We could just check for DJGPP; but this test a) works b) is more generic-  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).-  if test -f conf$$.exe; then-    # Don't use ln at all; we don't have any links-    as_ln_s='cp -p'-  else-    as_ln_s='ln -s'-  fi-elif ln conf$$.file conf$$ 2>/dev/null; then-  as_ln_s=ln-else-  as_ln_s='cp -p'-fi-rm -f conf$$ conf$$.exe conf$$.file--if mkdir -p . 2>/dev/null; then-  as_mkdir_p=:-else-  test -d ./-p && rmdir ./-p-  as_mkdir_p=false-fi--as_executable_p="test -f"--# Sed expression to map a string onto a valid CPP name.-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"--# Sed expression to map a string onto a valid variable name.-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"---# IFS-# We need space, tab and new line, in precisely that order.-as_nl='-'-IFS=" 	$as_nl"--# CDPATH.-$as_unset CDPATH--exec 6>&1--# Open the log real soon, to keep \$[0] and so on meaningful, and to-# report actual input values of CONFIG_FILES etc. instead of their-# values after options handling.  Logging --version etc. is OK.-exec 5>>config.log-{-  echo-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX-## Running $as_me. ##-_ASBOX-} >&5-cat >&5 <<_CSEOF--This file was extended by $as_me, which was-generated by GNU Autoconf 2.59.  Invocation command line was--  CONFIG_FILES    = $CONFIG_FILES-  CONFIG_HEADERS  = $CONFIG_HEADERS-  CONFIG_LINKS    = $CONFIG_LINKS-  CONFIG_COMMANDS = $CONFIG_COMMANDS-  $ $0 $@--_CSEOF-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5-echo >&5-_ACEOF--# Files that config.status was made for.-if test -n "$ac_config_files"; then-  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS-fi--if test -n "$ac_config_headers"; then-  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS-fi--if test -n "$ac_config_links"; then-  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS-fi--if test -n "$ac_config_commands"; then-  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS-fi--cat >>$CONFIG_STATUS <<\_ACEOF--ac_cs_usage="\-\`$as_me' instantiates files from templates according to the-current configuration.--Usage: $0 [OPTIONS] [FILE]...--  -h, --help       print this help, then exit-  -V, --version    print version number, then exit-  -q, --quiet      do not print progress messages-  -d, --debug      don't remove temporary files-      --recheck    update $as_me by reconfiguring in the same conditions-  --file=FILE[:TEMPLATE]-		   instantiate the configuration file FILE--Configuration files:-$config_files--Configuration commands:-$config_commands--Report bugs to <bug-autoconf@gnu.org>."-_ACEOF--cat >>$CONFIG_STATUS <<_ACEOF-ac_cs_version="\\-config.status-configured by $0, generated by GNU Autoconf 2.59,-  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"--Copyright (C) 2003 Free Software Foundation, Inc.-This config.status script is free software; the Free Software Foundation-gives unlimited permission to copy, distribute and modify it."-srcdir=$srcdir-_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF-# If no file are specified by the user, then we need to provide default-# value.  By we need to know if files were specified by the user.-ac_need_defaults=:-while test $# != 0-do-  case $1 in-  --*=*)-    ac_option=`expr "x$1" : 'x\([^=]*\)='`-    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`-    ac_shift=:-    ;;-  -*)-    ac_option=$1-    ac_optarg=$2-    ac_shift=shift-    ;;-  *) # This is not an option, so the user has probably given explicit-     # arguments.-     ac_option=$1-     ac_need_defaults=false;;-  esac--  case $ac_option in-  # Handling of the options.-_ACEOF-cat >>$CONFIG_STATUS <<\_ACEOF-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)-    ac_cs_recheck=: ;;-  --version | --vers* | -V )-    echo "$ac_cs_version"; exit 0 ;;-  --he | --h)-    # Conflict between --help and --header-    { { echo "$as_me:$LINENO: error: ambiguous option: $1-Try \`$0 --help' for more information." >&5-echo "$as_me: error: ambiguous option: $1-Try \`$0 --help' for more information." >&2;}-   { (exit 1); exit 1; }; };;-  --help | --hel | -h )-    echo "$ac_cs_usage"; exit 0 ;;-  --debug | --d* | -d )-    debug=: ;;-  --file | --fil | --fi | --f )-    $ac_shift-    CONFIG_FILES="$CONFIG_FILES $ac_optarg"-    ac_need_defaults=false;;-  --header | --heade | --head | --hea )-    $ac_shift-    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"-    ac_need_defaults=false;;-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \-  | -silent | --silent | --silen | --sile | --sil | --si | --s)-    ac_cs_silent=: ;;--  # This is an error.-  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1-Try \`$0 --help' for more information." >&5-echo "$as_me: error: unrecognized option: $1-Try \`$0 --help' for more information." >&2;}-   { (exit 1); exit 1; }; } ;;--  *) ac_config_targets="$ac_config_targets $1" ;;--  esac-  shift-done--ac_configure_extra_args=--if $ac_cs_silent; then-  exec 6>/dev/null-  ac_configure_extra_args="$ac_configure_extra_args --silent"-fi--_ACEOF-cat >>$CONFIG_STATUS <<_ACEOF-if \$ac_cs_recheck; then-  echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6-  exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion-fi--_ACEOF------cat >>$CONFIG_STATUS <<\_ACEOF-for ac_config_target in $ac_config_targets-do-  case "$ac_config_target" in-  # Handling of arguments.-  "config.h" ) CONFIG_FILES="$CONFIG_FILES config.h" ;;-  "testsuite/logpp" ) CONFIG_FILES="$CONFIG_FILES testsuite/logpp" ;;-  "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;-  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}-   { (exit 1); exit 1; }; };;-  esac-done--# If the user did not use the arguments to specify the items to instantiate,-# then the envvar interface is used.  Set only those that are not.-# We use the long form for the default assignment because of an extremely-# bizarre bug on SunOS 4.1.3.-if $ac_need_defaults; then-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands-fi--# Have a temporary directory for convenience.  Make it in the build tree-# simply because there is no reason to put it here, and in addition,-# creating and moving files from /tmp can sometimes cause problems.-# Create a temporary directory, and hook for its removal unless debugging.-$debug ||-{-  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0-  trap '{ (exit 1); exit 1; }' 1 2 13 15-}--# Create a (secure) tmp directory for tmp files.--{-  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&-  test -n "$tmp" && test -d "$tmp"-}  ||-{-  tmp=./confstat$$-$RANDOM-  (umask 077 && mkdir $tmp)-} ||-{-   echo "$me: cannot create a temporary directory in ." >&2-   { (exit 1); exit 1; }-}--_ACEOF--cat >>$CONFIG_STATUS <<_ACEOF--#-# CONFIG_FILES section.-#--# No need to generate the scripts if there are no CONFIG_FILES.-# This happens for instance when ./config.status config.h-if test -n "\$CONFIG_FILES"; then-  # Protect against being on the right side of a sed subst in config.status.-  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;-   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF-s,@SHELL@,$SHELL,;t t-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t-s,@exec_prefix@,$exec_prefix,;t t-s,@prefix@,$prefix,;t t-s,@program_transform_name@,$program_transform_name,;t t-s,@bindir@,$bindir,;t t-s,@sbindir@,$sbindir,;t t-s,@libexecdir@,$libexecdir,;t t-s,@datadir@,$datadir,;t t-s,@sysconfdir@,$sysconfdir,;t t-s,@sharedstatedir@,$sharedstatedir,;t t-s,@localstatedir@,$localstatedir,;t t-s,@libdir@,$libdir,;t t-s,@includedir@,$includedir,;t t-s,@oldincludedir@,$oldincludedir,;t t-s,@infodir@,$infodir,;t t-s,@mandir@,$mandir,;t t-s,@build_alias@,$build_alias,;t t-s,@host_alias@,$host_alias,;t t-s,@target_alias@,$target_alias,;t t-s,@DEFS@,$DEFS,;t t-s,@ECHO_C@,$ECHO_C,;t t-s,@ECHO_N@,$ECHO_N,;t t-s,@ECHO_T@,$ECHO_T,;t t-s,@LIBS@,$LIBS,;t t-s,@GHC_VERSION@,$GHC_VERSION,;t t-s,@GHC_LIB_PATH@,$GHC_LIB_PATH,;t t-s,@PLATFORM@,$PLATFORM,;t t-s,@CPU@,$CPU,;t t-s,@REPO_PATH@,$REPO_PATH,;t t-s,@PATCH_COUNT@,$PATCH_COUNT,;t t-s,@WithM4@,$WithM4,;t t-s,@SYMS@,$SYMS,;t t-s,@LIBOBJS@,$LIBOBJS,;t t-s,@LTLIBOBJS@,$LTLIBOBJS,;t t-CEOF--_ACEOF--  cat >>$CONFIG_STATUS <<\_ACEOF-  # Split the substitutions into bite-sized pieces for seds with-  # small command number limits, like on Digital OSF/1 and HP-UX.-  ac_max_sed_lines=48-  ac_sed_frag=1 # Number of current file.-  ac_beg=1 # First line for current file.-  ac_end=$ac_max_sed_lines # Line after last line for current file.-  ac_more_lines=:-  ac_sed_cmds=-  while $ac_more_lines; do-    if test $ac_beg -gt 1; then-      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag-    else-      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag-    fi-    if test ! -s $tmp/subs.frag; then-      ac_more_lines=false-    else-      # The purpose of the label and of the branching condition is to-      # speed up the sed processing (if there are no `@' at all, there-      # is no need to browse any of the substitutions).-      # These are the two extra sed commands mentioned above.-      (echo ':t-  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed-      if test -z "$ac_sed_cmds"; then-	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"-      else-	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"-      fi-      ac_sed_frag=`expr $ac_sed_frag + 1`-      ac_beg=$ac_end-      ac_end=`expr $ac_end + $ac_max_sed_lines`-    fi-  done-  if test -z "$ac_sed_cmds"; then-    ac_sed_cmds=cat-  fi-fi # test -n "$CONFIG_FILES"--_ACEOF-cat >>$CONFIG_STATUS <<\_ACEOF-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".-  case $ac_file in-  - | *:- | *:-:* ) # input from stdin-	cat >$tmp/stdin-	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`-	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;-  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`-	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;-  * )   ac_file_in=$ac_file.in ;;-  esac--  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.-  ac_dir=`(dirname "$ac_file") 2>/dev/null ||-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \-	 X"$ac_file" : 'X\(//\)[^/]' \| \-	 X"$ac_file" : 'X\(//\)$' \| \-	 X"$ac_file" : 'X\(/\)' \| \-	 .     : '\(.\)' 2>/dev/null ||-echo X"$ac_file" |-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }-  	  /^X\(\/\/\)$/{ s//\1/; q; }-  	  /^X\(\/\).*/{ s//\1/; q; }-  	  s/.*/./; q'`-  { if $as_mkdir_p; then-    mkdir -p "$ac_dir"-  else-    as_dir="$ac_dir"-    as_dirs=-    while test ! -d "$as_dir"; do-      as_dirs="$as_dir $as_dirs"-      as_dir=`(dirname "$as_dir") 2>/dev/null ||-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \-	 X"$as_dir" : 'X\(//\)[^/]' \| \-	 X"$as_dir" : 'X\(//\)$' \| \-	 X"$as_dir" : 'X\(/\)' \| \-	 .     : '\(.\)' 2>/dev/null ||-echo X"$as_dir" |-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }-  	  /^X\(\/\/\)$/{ s//\1/; q; }-  	  /^X\(\/\).*/{ s//\1/; q; }-  	  s/.*/./; q'`-    done-    test ! -n "$as_dirs" || mkdir $as_dirs-  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}-   { (exit 1); exit 1; }; }; }--  ac_builddir=.--if test "$ac_dir" != .; then-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`-  # A "../" for each directory in $ac_dir_suffix.-  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`-else-  ac_dir_suffix= ac_top_builddir=-fi--case $srcdir in-  .)  # No --srcdir option.  We are building in place.-    ac_srcdir=.-    if test -z "$ac_top_builddir"; then-       ac_top_srcdir=.-    else-       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`-    fi ;;-  [\\/]* | ?:[\\/]* )  # Absolute path.-    ac_srcdir=$srcdir$ac_dir_suffix;-    ac_top_srcdir=$srcdir ;;-  *) # Relative path.-    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix-    ac_top_srcdir=$ac_top_builddir$srcdir ;;-esac--# Do not use `cd foo && pwd` to compute absolute paths, because-# the directories may not exist.-case `pwd` in-.) ac_abs_builddir="$ac_dir";;-*)-  case "$ac_dir" in-  .) ac_abs_builddir=`pwd`;;-  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;-  *) ac_abs_builddir=`pwd`/"$ac_dir";;-  esac;;-esac-case $ac_abs_builddir in-.) ac_abs_top_builddir=${ac_top_builddir}.;;-*)-  case ${ac_top_builddir}. in-  .) ac_abs_top_builddir=$ac_abs_builddir;;-  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;-  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;-  esac;;-esac-case $ac_abs_builddir in-.) ac_abs_srcdir=$ac_srcdir;;-*)-  case $ac_srcdir in-  .) ac_abs_srcdir=$ac_abs_builddir;;-  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;-  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;-  esac;;-esac-case $ac_abs_builddir in-.) ac_abs_top_srcdir=$ac_top_srcdir;;-*)-  case $ac_top_srcdir in-  .) ac_abs_top_srcdir=$ac_abs_builddir;;-  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;-  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;-  esac;;-esac----  if test x"$ac_file" != x-; then-    { echo "$as_me:$LINENO: creating $ac_file" >&5-echo "$as_me: creating $ac_file" >&6;}-    rm -f "$ac_file"-  fi-  # Let's still pretend it is `configure' which instantiates (i.e., don't-  # use $as_me), people would be surprised to read:-  #    /* config.h.  Generated by config.status.  */-  if test x"$ac_file" = x-; then-    configure_input=-  else-    configure_input="$ac_file.  "-  fi-  configure_input=$configure_input"Generated from `echo $ac_file_in |-				     sed 's,.*/,,'` by configure."--  # First look for the input files in the build tree, otherwise in the-  # src tree.-  ac_file_inputs=`IFS=:-    for f in $ac_file_in; do-      case $f in-      -) echo $tmp/stdin ;;-      [\\/$]*)-	 # Absolute (can't be DOS-style, as IFS=:)-	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5-echo "$as_me: error: cannot find input file: $f" >&2;}-   { (exit 1); exit 1; }; }-	 echo "$f";;-      *) # Relative-	 if test -f "$f"; then-	   # Build tree-	   echo "$f"-	 elif test -f "$srcdir/$f"; then-	   # Source tree-	   echo "$srcdir/$f"-	 else-	   # /dev/null tree-	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5-echo "$as_me: error: cannot find input file: $f" >&2;}-   { (exit 1); exit 1; }; }-	 fi;;-      esac-    done` || { (exit 1); exit 1; }-_ACEOF-cat >>$CONFIG_STATUS <<_ACEOF-  sed "$ac_vpsub-$extrasub-_ACEOF-cat >>$CONFIG_STATUS <<\_ACEOF-:t-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b-s,@configure_input@,$configure_input,;t t-s,@srcdir@,$ac_srcdir,;t t-s,@abs_srcdir@,$ac_abs_srcdir,;t t-s,@top_srcdir@,$ac_top_srcdir,;t t-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t-s,@builddir@,$ac_builddir,;t t-s,@abs_builddir@,$ac_abs_builddir,;t t-s,@top_builddir@,$ac_top_builddir,;t t-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out-  rm -f $tmp/stdin-  if test x"$ac_file" != x-; then-    mv $tmp/out $ac_file-  else-    cat $tmp/out-    rm -f $tmp/out-  fi--done-_ACEOF-cat >>$CONFIG_STATUS <<\_ACEOF--#-# CONFIG_COMMANDS section.-#-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue-  ac_dest=`echo "$ac_file" | sed 's,:.*,,'`-  ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`-  ac_dir=`(dirname "$ac_dest") 2>/dev/null ||-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \-	 X"$ac_dest" : 'X\(//\)[^/]' \| \-	 X"$ac_dest" : 'X\(//\)$' \| \-	 X"$ac_dest" : 'X\(/\)' \| \-	 .     : '\(.\)' 2>/dev/null ||-echo X"$ac_dest" |-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }-  	  /^X\(\/\/\)$/{ s//\1/; q; }-  	  /^X\(\/\).*/{ s//\1/; q; }-  	  s/.*/./; q'`-  { if $as_mkdir_p; then-    mkdir -p "$ac_dir"-  else-    as_dir="$ac_dir"-    as_dirs=-    while test ! -d "$as_dir"; do-      as_dirs="$as_dir $as_dirs"-      as_dir=`(dirname "$as_dir") 2>/dev/null ||-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \-	 X"$as_dir" : 'X\(//\)[^/]' \| \-	 X"$as_dir" : 'X\(//\)$' \| \-	 X"$as_dir" : 'X\(/\)' \| \-	 .     : '\(.\)' 2>/dev/null ||-echo X"$as_dir" |-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }-  	  /^X\(\/\/\)$/{ s//\1/; q; }-  	  /^X\(\/\).*/{ s//\1/; q; }-  	  s/.*/./; q'`-    done-    test ! -n "$as_dirs" || mkdir $as_dirs-  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}-   { (exit 1); exit 1; }; }; }--  ac_builddir=.--if test "$ac_dir" != .; then-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`-  # A "../" for each directory in $ac_dir_suffix.-  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`-else-  ac_dir_suffix= ac_top_builddir=-fi--case $srcdir in-  .)  # No --srcdir option.  We are building in place.-    ac_srcdir=.-    if test -z "$ac_top_builddir"; then-       ac_top_srcdir=.-    else-       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`-    fi ;;-  [\\/]* | ?:[\\/]* )  # Absolute path.-    ac_srcdir=$srcdir$ac_dir_suffix;-    ac_top_srcdir=$srcdir ;;-  *) # Relative path.-    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix-    ac_top_srcdir=$ac_top_builddir$srcdir ;;-esac--# Do not use `cd foo && pwd` to compute absolute paths, because-# the directories may not exist.-case `pwd` in-.) ac_abs_builddir="$ac_dir";;-*)-  case "$ac_dir" in-  .) ac_abs_builddir=`pwd`;;-  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;-  *) ac_abs_builddir=`pwd`/"$ac_dir";;-  esac;;-esac-case $ac_abs_builddir in-.) ac_abs_top_builddir=${ac_top_builddir}.;;-*)-  case ${ac_top_builddir}. in-  .) ac_abs_top_builddir=$ac_abs_builddir;;-  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;-  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;-  esac;;-esac-case $ac_abs_builddir in-.) ac_abs_srcdir=$ac_srcdir;;-*)-  case $ac_srcdir in-  .) ac_abs_srcdir=$ac_abs_builddir;;-  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;-  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;-  esac;;-esac-case $ac_abs_builddir in-.) ac_abs_top_srcdir=$ac_top_srcdir;;-*)-  case $ac_top_srcdir in-  .) ac_abs_top_srcdir=$ac_abs_builddir;;-  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;-  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;-  esac;;-esac---  { echo "$as_me:$LINENO: executing $ac_dest commands" >&5-echo "$as_me: executing $ac_dest commands" >&6;}-  case $ac_dest in-    default ) chmod 700 testsuite/logpp  ;;-  esac-done-_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF--{ (exit 0); exit 0; }-_ACEOF-chmod +x $CONFIG_STATUS-ac_clean_files=$ac_clean_files_save---# configure is writing to config.log, and then calls config.status.-# config.status does its own redirection, appending to config.log.-# Unfortunately, on DOS this fails, as config.log is still kept open-# by configure, so config.status won't be able to write to it; its-# output is simply discarded.  So we exec the FD to /dev/null,-# effectively closing config.log, so it can be properly (re)opened and-# appended to by config.status.  When coming back to configure, we-# need to make the FD available again.-if test "$no_create" != yes; then-  ac_cs_success=:-  ac_config_status_args=-  test "$silent" = yes &&-    ac_config_status_args="$ac_config_status_args --quiet"-  exec 5>/dev/null-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false-  exec 5>>config.log-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which-  # would make configure fail if this is the last instruction.-  $ac_cs_success || { (exit 1); exit 1; }-fi-
− configure.ac
@@ -1,47 +0,0 @@--# sanity-AC_INIT(Main.hs)--# this is arbitrary-AC_PREREQ([2.52])--# check ghc version here-AC_MSG_CHECKING([for ghc version])-GHC_VERSION=`ghc --numeric-version`-AC_MSG_RESULT([$GHC_VERSION])-AC_SUBST(GHC_VERSION)--# check ghc library path-AC_MSG_CHECKING([for ghc library path])-GHC_LIB_PATH=`ghc --print-libdir`-AC_MSG_RESULT([$GHC_LIB_PATH])-AC_SUBST(GHC_LIB_PATH)--PLATFORM=`uname -ms`-AC_SUBST(PLATFORM)--# extracting the cpu details (linux only)-CPU=`grep 'model name' /proc/cpuinfo 2> /dev/null | sed 's/.*: //' | sed 's/.* //;1q' || true`-AC_SUBST(CPU)--REPO_PATH=`sed -n 1p _darcs/prefs/repos`-AC_SUBST(REPO_PATH)--PATCH_COUNT=`darcs changes --xml-output 2> /dev/null | sed -n '/TAG/q;/^<\/patch/p' | wc -l | sed 's/ *//g'`-AC_SUBST(PATCH_COUNT)--# Use GNU m4, which is called gm4 on *BSD-if gm4 --version > /dev/null 2>&1 ; then-        AC_PATH_PROG(WithM4,gm4)-else-        AC_PATH_PROG(WithM4,m4)-fi--# need to recompile this if configure is rerun-touch Plugin/Version.hs--AC_SUBST(SYMS)--AC_CONFIG_FILES([config.h testsuite/logpp])-AC_CONFIG_COMMANDS([default], [chmod 700 testsuite/logpp] )-AC_OUTPUT
− ghci
@@ -1,26 +0,0 @@-#!/bin/sh--# Copyright (c) 2006 Don Stewart - http://www.cse.unsw.edu.au/~dons-# GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)--echo "Make sure you've done a full compiled build recently"--# build the preprocessor-if [ -e "BotPP" ] ; then-	BotPP=BotPP-elif [ -e "dist/build/BotPP/BotPP" ] ; then-	BotPP=dist/build/BotPP/BotPP-else-    ghc -O2 --make scripts/BotPP.hs -o BotPP-    BotPP=BotPP-fi--# find possible .o files-if [ -e "dist/build/lambdabot/lambdabot-tmp/" ] ; then-    Odir=dist/build/lambdabot/lambdabot-tmp/-else-    Odir=.-fi--# run ghci with the right command line flags to launch lambdabot-ghci -cpp -Wall -fglasgow-exts -I. -pgmF $BotPP -F -fno-warn-incomplete-patterns -fno-warn-missing-methods -fno-warn-orphans -DGHCi -hidir $Odir -odir $Odir $*
lambdabot.cabal view
@@ -1,501 +1,66 @@------ Cabal build system for lambdabot------ Currently only builds the static version of the bot, which should be--- enough for most people--- Name:                lambdabot-Version:             4.1+Version:             4.2.1 License:             GPL License-file:        LICENSE Author:              Don Stewart-Category:            Web-Synopsis:            A multi-talented IRC bot-Description:         Lambdabot is a Haskell development tool, written in Haskell.+Maintainer:          Cale Gibbard <cgibbard@gmail.com>+Category:            Development, Web+Synopsis:            Lambdabot is a development tool and advanced IRC bot+Description:         Lambdabot is an IRC bot written over several years by+                     those on the #haskell IRC channel.+                     .                      It operates as a command line tool, embedded in an editor,                      embedded in GHCi, via internet relay chat and on the web. Homepage:            http://haskell.org/haskellwiki/Lambdabot-Maintainer:          dons@galois.com-Build-Depends:       base, unix, network, parsec, mtl, haskell-src,-                     readline, QuickCheck, arrows, containers,-                     regex-compat, regex-posix, zlib, binary>=0.2,-                     plugins>=1.0, oeis, bytestring, old-time,-                     random, process, directory, array, pretty-Build-Type:          Custom -extra-source-files: Lib/FixPrecedence.hs-                Lib/Serial.hs-                Lib/Error.hs-                Lib/Url.hs-                Lib/Process.hs-                Lib/Regex.hs-                Lib/MiniHTTP.hs-                Lib/AltTime.hs-                Lib/Pointful.hs-                Lib/Parser.hs-                Lib/OEIS.hs-                Lib/Signals.hs-                Lib/Util.hs-                DMain.hs-                Shared.hs-                LBState.hs-                Plugin/Version.hs-                Plugin/Filter.hs-                Plugin/OfflineRC.hs-                Plugin/Pl.hs-                Plugin/Localtime.hs-                Plugin/Code.hs-                Plugin/Instances.hs-                Plugin/Url.hs-                Plugin/Dict/DictLookup.hs-                Plugin/Unlambda.hs-                Plugin/Hello.hs-                Plugin/UnMtl.hs-                Plugin/State.hs-                Plugin/Where.hs-                Plugin/Elite.hs-                Plugin/Seen.hs-                Plugin/Small.hs-                Plugin/Search.hs-                Plugin/Karma.hs-                Plugin/Dummy.hs-                Plugin/Dynamic.hs-                Plugin/Djinn.hs-                Plugin/System.hs-                Plugin/Slap.hs-                Plugin/Spell.hs-                Plugin/Undo.hs-                Plugin/Check.hs-                Plugin/Free.hs-                Plugin/Quote.hs-                Plugin/Pointful.hs-                Plugin/Haddock.hs-                Plugin/Paste.hs-                Plugin/More.hs-                Plugin/Fresh.hs-                Plugin/Babel.hs-                Plugin/Log.hs-                Plugin/Quote/Fortune.hs-                Plugin/Quote/Text.hs-                Plugin/Dice.hs-                Plugin/Compose.hs-                Plugin/Vixen.hs-                Plugin/Fact.hs-                Plugin/Tell.hs-                Plugin/OEIS.hs-                Plugin/Help.hs-                Plugin/Base.hs-                Plugin/IRC.hs-                Plugin/Hoogle.hs-                Plugin/Dummy/DocAssocs.hs-                Plugin/BF.hs-                Plugin/DarcsPatchWatch.hs-                Plugin/Dict.hs-                Plugin/Free/Theorem.hs-                Plugin/Free/Test.hs-                Plugin/Free/Parse.hs-                Plugin/Free/Expr.hs-                Plugin/Free/FreeTheorem.hs-                Plugin/Free/Type.hs-                Plugin/Free/Util.hs-                Plugin/Eval.hs-                Plugin/Type.hs-                Plugin/Todo.hs-                Plugin/Activity.hs-                Plugin/Maya.hs-                Plugin/Topic.hs-                Plugin/FT.hs-                Plugin/Poll.hs-                Plugin/Figlet.hs-                Plugin/Pl/Optimize.hs-                Plugin/Pl/Rules.hs-                Plugin/Pl/Transform.hs-                Plugin/Pl/Test.hs-                Plugin/Pl/RuleLib.hs-                Plugin/Pl/Names.hs-                Plugin/Pl/Parser.hs-                Plugin/Pl/PrettyPrinter.hs-                Plugin/Pl/Common.hs-                Plugin/Pretty.hs-                Plugin/Source.hs-                Main.hs-                Modules.hs-boot-                Config.hs-                DynModules.hs-                IRCBase.hs-                Message.hs-                scripts/LargeWord.hs-                scripts/ShowFun.hs-                scripts/FT/FreeTheorems.hs-                scripts/FT/PPrint.hs-                scripts/FT/FreeTheorems/TypeParser.hs-                scripts/FT/FreeTheorems/Preparation.hs-                scripts/FT/FreeTheorems/PrettyPrint.hs-                scripts/FT/FreeTheorems/Types.hs-                scripts/FT/FreeTheorems/Unfolding.hs-                scripts/FT/FreeTheorems/Lifts.hs-                scripts/FT/FreeTheorems/Specialization.hs-                scripts/FT/FreeTheorems/TheoremData.hs-                scripts/FT/FreeTheorems/Reduction.hs-                scripts/FT/FreeTheorems/Simplification.hs-                scripts/FT/FreeTheorems/Delta.hs-                scripts/FT/FreeTheorems/Declarations.hs-                scripts/FT/FreeTheorems/Types/Relation.hs-                scripts/FT/FreeTheorems/Types/Theorem.hs-                scripts/FT/FreeTheorems/Types/LanguageModel.hs-                scripts/FT/FreeTheorems/Types/Type.hs-                scripts/FT/FreeTheorems/PrettyPrint/Document.hs-                scripts/FT/FreeTheorems/PrettyPrint/AsText.hs-                scripts/FT/FreeTheorems/PrettyPrint/Common.hs-                scripts/FT/FreeTheorems/Modification.hs-                scripts/FT/FTbase.hs-                scripts/FT/PredefinedTypes.hs-                scripts/QuickCheck.hs-                scripts/Unlambda.hs-                scripts/RunPlugs.hs-                scripts/RunSmallCheck.hs-                scripts/SimpleReflect.hs-                scripts/hoogle/src/Web/Main.hs-                scripts/hoogle/src/Web/Lambdabot.hs-                scripts/hoogle/src/Web/CGI.hs-                scripts/hoogle/src/Score.hs-                scripts/hoogle/src/CmdLine.hs-                scripts/hoogle/src/Doc/Main.hs-                scripts/hoogle/src/Doc.hs-                scripts/hoogle/src/Score/Main.hs-                scripts/hoogle/src/Hoogle/Match.hs-                scripts/hoogle/src/Hoogle/MatchName.hs-                scripts/hoogle/src/Hoogle/General.hs-                scripts/hoogle/src/Hoogle/MatchType.hs-                scripts/hoogle/src/Hoogle/Search.hs-                scripts/hoogle/src/Hoogle/Lexer.hs-                scripts/hoogle/src/Hoogle/MatchClass.hs-                scripts/hoogle/src/Hoogle/TypeAlias.hs-                scripts/hoogle/src/Hoogle/Parser.hs-                scripts/hoogle/src/Hoogle/Result.hs-                scripts/hoogle/src/Hoogle/Hoogle.hs-                scripts/hoogle/src/Hoogle/Database.hs-                scripts/hoogle/src/Hoogle/TypeSig.hs-                scripts/hoogle/src/Hoogle/TextUtil.hs-                scripts/hoogle/src/Web.hs-                scripts/hoogle/src/CmdLine/Main.hs-                scripts/hoogle/src/Test/Test.hs-                scripts/hoogle/data/hadhtml/Main.hs-                scripts/hoogle/data/hadhtml/Lexer.hs-                scripts/hoogle/data/hadhtml/TextUtil.hs-                scripts/hoogle/data/hadhoo/Main.hs-                scripts/hoogle/test/data/examples/Basic.hs-                scripts/hoogle/test/data/examples/ClassesEx.hs-                scripts/hoogle/test/data/examples/Operators.hs-                scripts/hoogle/test/data/examples/Data.hs-                scripts/hoogle/test/data/examples/GhcExts.hs-                scripts/hoogle/test/data/examples/Classes.hs-                scripts/hoogle/test/data/runtests.hs-                scripts/GenHaddock.hs-                scripts/BotPP.hs-                scripts/SmallCheck.hs-                scripts/BF.hs-                scripts/Djinn/Poly.hs-                scripts/Djinn/tests/Test.hs-                scripts/Djinn/Util/Digraph.hs-                scripts/Djinn/Util/Sort.hs-                scripts/Djinn/MJ.hs-                scripts/Djinn/Djinn.hs-                scripts/Djinn/LJTFormula.hs-                scripts/Djinn/MonadBFS.hs-                scripts/Djinn/REPL.hs-                scripts/Djinn/HTypes.hs-                scripts/Djinn/LJT.hs-                scripts/Djinn/Help.hs-                scripts/Djinn/MLJT.hs-                scripts/Djinn/LJTParse.hs-                scripts/Djinn/Util.hs-                scripts/Djinn/HCheck.hs-                scripts/ShowQ.hs-                State/L.hs-                State/Pristine.hs-                Boot.hs-                LMain.hs-                NickEq.hs-                Plugin.hs-                Lambdabot.hs-                Modules.hs-                testsuite/UnitTestsMain.hs-                testsuite/VariableExpansion.hs-                testsuite/TestFramework.hs-                testsuite/logpp.in-                testsuite/macros.m4-                testsuite/Tests.hs-                testsuite/logpp-                testsuite/Makefile--data-files: COMMENTARY-            README-            config.h.in-            Lib/README-            lambdabot.cabal-            configure-            Plugin/Pl/COPYING-            Plugin/Pl/Makefile-            ghci-            testsuite/README-            STYLE-            scripts/hoogle/docs/todo.txt-            scripts/hoogle/docs/file-format.txt-            scripts/hoogle/docs/builddocs.bat-            scripts/hoogle/docs/haddock.txt-            scripts/hoogle/src/Web/res/suffix.inc-            scripts/hoogle/src/Web/res/front_gtk.inc-            scripts/hoogle/src/Web/res/noresults.inc-            scripts/hoogle/src/Web/res/gtk.txt-            scripts/hoogle/src/Web/res/error.inc-            scripts/hoogle/src/Web/res/prefix.inc-            scripts/hoogle/src/Web/res/prefix_gtk.inc-            scripts/hoogle/src/Web/res/front.inc-            scripts/hoogle/src/Doc/res/documentation.txt-            scripts/hoogle/src/Score/examples.txt-            scripts/hoogle/src/Score/classes.txt-            scripts/hoogle/src/hoogle.txt-            scripts/hoogle/README.txt-            scripts/hoogle/data/hadhtml/haskell98.txt-            scripts/hoogle/data/hadhtml/exclude.txt-            scripts/hoogle/data/hihoo/hihoo.pl-            scripts/hoogle/web/favicon.png-            scripts/hoogle/web/developers.htm-            scripts/hoogle/web/download.htm-            scripts/hoogle/web/res/hoogle_small.png-            scripts/hoogle/web/res/hoogle_small_classic.png-            scripts/hoogle/web/res/quicksearch.js-            scripts/hoogle/web/res/hoogle_large.png-            scripts/hoogle/web/res/icons.png-            scripts/hoogle/web/res/hoogle.css-            scripts/hoogle/web/res/top_left.png-            scripts/hoogle/web/res/hoogle_large_classic.png-            scripts/hoogle/web/res/bot_left.png-            scripts/hoogle/web/res/bot_right.png-            scripts/hoogle/web/res/haskell_icon.png-            scripts/hoogle/web/res/hoogle.src-            scripts/hoogle/web/res/top_right.png-            scripts/hoogle/web/academics.htm-            scripts/hoogle/web/favicon.ico-            scripts/hoogle/web/about.htm-            scripts/hoogle/web/nodocs.htm-            scripts/hoogle/web/help.htm-            scripts/hoogle/test/data/gen-hihoo.bat-            scripts/hoogle/test/data/gen-hihoo.sh-            scripts/hoogle/test/data/build-hadhtml.bat-            scripts/hoogle/test/data/gen-hadhtml.bat-            scripts/hoogle/test/data/examples/Data.hoo-            scripts/hoogle/test/data/examples/ClassesEx.hoo-            scripts/hoogle/test/data/examples/GhcExts.hoo-            scripts/hoogle/test/data/examples/Classes.hoo-            scripts/hoogle/test/data/examples/Basic.hoo-            scripts/hoogle/test/data/examples/Operators.hoo-            scripts/hoogle/test/data/Makefile-            scripts/hoogle/misc/icons/icons.vsd-            scripts/hoogle/misc/logo/hoogle.xar-            scripts/hoogle/misc/logo/hoogle.ppt-            scripts/hoogle/wiki/LibraryDocumentation_2fPrelude.html-            scripts/hoogle/wiki/LibraryDocumentation.html-            scripts/hoogle/wiki/LibraryDocumentation_2fIx.html-            scripts/hoogle/wiki/Keywords.html-            scripts/hoogle/wiki/Hoogle.html-            scripts/hoogle/wiki/backup.bat-            scripts/hoogle/wiki/LibraryDocumentation_2fCPUTime.html-            scripts/hoogle/Makefile-            scripts/gnuplot.script-            scripts/vim/README-            scripts/vim/pl-            scripts/vim/bot-            scripts/vim/runwith-            scripts/vim/run-            scripts/vim/typeOf-            scripts/Djinn/NEWS-            scripts/Djinn/verbose-help-            scripts/Djinn/tests/testfiles.all-            scripts/Djinn/tests/ljt/sch_mult.002.ljt-            scripts/Djinn/tests/ljt/kk_p.006.ljt-            scripts/Djinn/tests/ljt/sch_implies.ljt-            scripts/Djinn/tests/ljt/con_p.002.ljt-            scripts/Djinn/tests/ljt/debruijn_n.010.ljt-            scripts/Djinn/tests/ljt/con_n.002.ljt-            scripts/Djinn/tests/ljt/kk_n.006.ljt-            scripts/Djinn/tests/ljt/sch_prop_n.002.ljt-            scripts/Djinn/tests/ljt/debruijn_n.002.ljt-            scripts/Djinn/tests/ljt/ph_n.002.ljt-            scripts/Djinn/tests/ljt/con_p.010.ljt-            scripts/Djinn/tests/ljt/ph_n.006.ljt-            scripts/Djinn/tests/ljt/sch_prop_n.001.ljt-            scripts/Djinn/tests/ljt/debruijn_n.006.ljt-            scripts/Djinn/tests/ljt/sch_prop_n.003.ljt-            scripts/Djinn/tests/ljt/sch_ax.ljt-            scripts/Djinn/tests/ljt/ph_p.006.ljt-            scripts/Djinn/tests/ljt/equiv_n.010.ljt-            scripts/Djinn/tests/ljt/sch_notnot.ljt-            scripts/Djinn/tests/ljt/equiv_n.002.ljt-            scripts/Djinn/tests/ljt/kk_n.010.ljt-            scripts/Djinn/tests/ljt/sch_notnot2.ljt-            scripts/Djinn/tests/ljt/sch_mult.004.ljt-            scripts/Djinn/tests/ljt/schwicht_p.006.ljt-            scripts/Djinn/tests/ljt/equiv_p.010.ljt-            scripts/Djinn/tests/ljt/sch_prop_n.004.ljt-            scripts/Djinn/tests/ljt/ph_n.010.ljt-            scripts/Djinn/tests/ljt/con_n.006.ljt-            scripts/Djinn/tests/ljt/con_n.010.ljt-            scripts/Djinn/tests/ljt/debruijn_p.002.ljt-            scripts/Djinn/tests/ljt/equiv_p.002.ljt-            scripts/Djinn/tests/ljt/debruijn_p.006.ljt-            scripts/Djinn/tests/ljt/debruijn_p.010.ljt-            scripts/Djinn/tests/ljt/kk_n.002.ljt-            scripts/Djinn/tests/ljt/con_p.006.ljt-            scripts/Djinn/tests/ljt/schwicht_n.006.ljt-            scripts/Djinn/tests/ljt/ph_p.010.ljt-            scripts/Djinn/tests/ljt/schwicht_p.010.ljt-            scripts/Djinn/tests/ljt/schwicht_n.010.ljt-            scripts/Djinn/tests/ljt/sch_mult.003.ljt-            scripts/Djinn/tests/ljt/kk_p.010.ljt-            scripts/Djinn/tests/ljt/equiv_p.006.ljt-            scripts/Djinn/tests/ljt/ph_p.002.ljt-            scripts/Djinn/tests/ljt/kk_p.002.ljt-            scripts/Djinn/tests/ljt/schwicht_n.002.ljt-            scripts/Djinn/tests/ljt/equiv_n.006.ljt-            scripts/Djinn/tests/ljt/schwicht_p.002.ljt-            scripts/Djinn/tests/ljt/sch_jens_prop.ljt-            scripts/Djinn/tests/Makefile-            scripts/Djinn/tests/testfiles.fast-            scripts/Djinn/LICENSE-            scripts/Djinn/ljt.p-            scripts/Djinn/TODO-            scripts/Djinn/examples-            scripts/Djinn/examples.out-            scripts/Djinn/Makefile-            scripts/Djinn/Setup.lhs-            scripts/Djinn/djinn.cabal-            scripts/timein-            COMMANDS-            State/djinn-            State/haddock-            State/source-            State/hoogle.txt-            State/quote-            State/todo-            State/vixen-            State/system-            State/where-            State/karma-            State/fact-            configure.ac-            AUTHORS-            online.rc-            build-            Makefile-            lambdabot.cabal.ghc-6.4-            online2.rc-            Modules.hs------- first build the preprocessor----Executable:          BotPP-hs-source-dirs:      scripts/-Main-is:             BotPP.hs-ghc-options:         -fasm -funbox-strict-fields -O------- Lambdabot----Executable:          lambdabot-Main-is:             Main.hs-extensions:          CPP-ghc-options:         -Wall -Werror -fglasgow-exts -pgmF dist/build/BotPP/BotPP -F -H64m -O -funbox-strict-fields -fasm -fno-warn-incomplete-patterns -fno-warn-missing-methods -fno-warn-orphans -I. -optl-Wl,-s -threaded------- For a fast build use add -Onot---------- And a dynamically linked lambdabot------ Not quite there yet. The problem is how to recompile Modules.hs with--- a list of statics and plugins, and then to recompile the rest of--- lambdabot's core------Executable:         lambdabot-dynamic---main-is:            Boot.hs---extensions:         CPP---ghc-options:        -main-is Boot.main -Wall -Werror -fglasgow-exts -H64m -Onot -fasm -I. -threaded--- ghc-options:         -Wall -Werror -fglasgow-exts -funbox-strict-fields -O -fasm -I. -optl-Wl,-s -threaded------- Hoogle----Executable:          hoogle-hs-source-dirs:      scripts/hoogle/src-ghc-options:         -funbox-strict-fields -O-Main-is:             CmdLine.hs------- Djinn----Executable:          djinn-hs-source-dirs:      scripts/Djinn-ghc-options:         -O-Main-is:             Djinn.hs------- Unlambda------Executable:          unlambda---hs-source-dirs:      scripts/---ghc-options:         -O---Main-is:             Unlambda.hs------- runplugs------ Executable:          runplugs--- hs-source-dirs:      scripts/--- Main-is:             RunPlugs.hs------- BF------Executable:          bf---hs-source-dirs:      scripts/---Main-is:             BF.hs---ghc-options:         -O2------- FT----Executable:          ft-hs-source-dirs:      scripts/FT-Main-is:             FTbase.hs-ghc-options:         -O+build-type:          Simple+cabal-version:       >= 1.2 ---------------------------------------------------------------------------- The following only work if plugins are enabled+extra-source-files: Modules.hs-boot, State/imports.h, Plugin/Hello.hs, Modules.hs+data-files:         State/djinn, State/url, State/haddock, State/source,+                    State/L.hs, State/seen, State/state, State/Pristine.hs,+                    State/poll, State/quote, State/todo, State/vixen,+                    State/fresh, State/tell, State/system, State/where,+                    State/karma, State/fact,+                    -- Needed for @type+                    State/imports.h,+                    online.rc, online2.rc ------ runplugs----Executable:          runplugs-hs-source-dirs:      scripts/-ghc-options:         -funbox-strict-fields -O-Main-is:             RunPlugs.hs+Library+    build-depends: base, mtl, bytestring, unix+    exposed-modules: Config, IRCBase, File,+                     LBState, LMain, Lambdabot, Message,+                     NickEq, Plugin, Plugin.Activity, Plugin.BF,+                     Plugin.Babel, Plugin.Base, Plugin.Check, Plugin.Code, Plugin.Compose,+                     Plugin.DarcsPatchWatch, Plugin.Dice, Plugin.Dict, Plugin.Dict.DictLookup, Plugin.Djinn,+                     Plugin.Dummy, Plugin.Dummy.DocAssocs, Plugin.Dynamic, Plugin.Elite, Plugin.Eval,+                     Plugin.FT, Plugin.Fact, Plugin.Filter, Plugin.Free, Plugin.Free.Expr,+                     Plugin.Free.FreeTheorem, Plugin.Free.Parse, Plugin.Free.Test, Plugin.Free.Theorem, Plugin.Free.Type,+                     Plugin.Free.Util, Plugin.Fresh, Plugin.Haddock, Plugin.Help,+                     Plugin.Hoogle, Plugin.IRC, Plugin.Instances, Plugin.Karma, Plugin.Localtime,+                     Plugin.Log, Plugin.More, Plugin.OEIS, Plugin.OfflineRC,+                     Plugin.Pl, Plugin.Pl.Common, Plugin.Pl.Names, Plugin.Pl.Optimize, Plugin.Pl.Parser,+                     Plugin.Pl.PrettyPrinter, Plugin.Pl.RuleLib, Plugin.Pl.Rules, Plugin.Pl.Transform,+                     Plugin.Pointful, Plugin.Poll, Plugin.Pretty, Plugin.Quote, Plugin.Quote.Fortune,+                     Plugin.Quote.Text, Plugin.Search, Plugin.Seen, Plugin.Slap, Plugin.Scheck+                     Plugin.Source, Plugin.Spell, Plugin.State, Plugin.System, Plugin.Tell,+                     Plugin.Ticker, Plugin.Todo, Plugin.Topic, Plugin.Type, Plugin.UnMtl,+                     Plugin.Undo, Plugin.Unlambda, Plugin.Url, Plugin.Version, Plugin.Vixen,+                     Plugin.Where, Shared+    ghc-options: -fno-warn-missing-methods+    buildable:   False ------ check----Executable:          quickcheck-hs-source-dirs:      scripts/-ghc-options:         -funbox-strict-fields -O-Main-is:             QuickCheck.hs+-- Lambdabot main+Executable          lambdabot+    Build-depends:       containers, directory, pretty, parsec, old-time, random, array, network,+                         regex-compat, readline, binary>0.2, haskell-src, haskell-src-exts>=0.3.6, oeis, lambdabot-utils, show>=0.3, utf8-string,+                         -- runtime dependencies+                         brainfuck, unlambda, template-haskell+    Main-is:             Main.hs+    -- For a faster build, use -Onot+    ghc-options:         -funbox-strict-fields -fno-warn-incomplete-patterns+                         -fno-warn-missing-methods -fno-warn-orphans+                         -- Apparently needed to work around zombie & IRC connection issues+                         -threaded+    include-dirs:        . ------ check----Executable:          smallcheck-hs-source-dirs:      scripts/-ghc-options:         -funbox-strict-fields -O-Main-is:             RunSmallCheck.hs
− lambdabot.cabal.ghc-6.4
@@ -1,112 +0,0 @@------ Cabal build system for lambdabot------ Currently only builds the static version of the bot, which should be--- enough for most people----Name:                lambdabot-Version:             4.0-License:             GPL-License-file:        LICENSE-Author:              Don Stewart-Maintainer:          dons@cse.unsw.edu.au-Build-Depends:       base, unix, network, parsec, mtl, -                     haskell-src, readline, QuickCheck, template-haskell, -                     haskell98, fps>=0.7, plugins>=1.0------- first build the preprocessor----Executable:          BotPP-hs-source-dirs:      scripts/-Main-is:             BotPP.hs-ghc-options:         -fasm -funbox-strict-fields -O------- Lambdabot----Executable:          lambdabot-Main-is:             Main.hs-extensions:          CPP-ghc-options:         -Wall -Werror -fglasgow-exts -pgmF dist/build/BotPP/BotPP -F -H64m -O -funbox-strict-fields -fasm -fno-warn-incomplete-patterns -fno-warn-missing-methods -fno-warn-orphans -I. -threaded -optl-Wl,-s------- And a dynamically linked lambdabot--- --- Not quite there yet. The problem is how to recompile Modules.hs with--- a list of statics and plugins, and then to recompile the rest of--- lambdabot's core------Executable:         lambdabot-dynamic---main-is:            Boot.hs---extensions:         CPP---ghc-options:        -main-is Boot.main -Wall -Werror -fglasgow-exts -H64m -Onot -fasm -I. -threaded--- ghc-options:         -Wall -Werror -fglasgow-exts -funbox-strict-fields -O -fasm -I. -optl-Wl,-s -threaded------- Hoogle----Executable:          hoogle-hs-source-dirs:      scripts/hoogle/src-ghc-options:         -funbox-strict-fields -O-Main-is:             CmdLine.hs------- Djinn----Executable:          djinn-hs-source-dirs:      scripts/Djinn-ghc-options:         -O-Main-is:             Djinn.hs------- Unlambda----Executable:          unlambda-hs-source-dirs:      scripts/-ghc-options:         -O-Main-is:             Unlambda.hs------- BF----Executable:          bf-hs-source-dirs:      scripts/-Main-is:             BF.hs-ghc-options:         -O2------- FT----Executable:          ft-hs-source-dirs:      scripts/FT-Main-is:             FTbase.hs-ghc-options:         -O----------------------------------------------------------------------------- The following only work if plugins are enabled------- runplugs----Executable:          runplugs-hs-source-dirs:      scripts/-ghc-options:         -funbox-strict-fields -O-Main-is:             RunPlugs.hs------- check----Executable:          quickcheck-hs-source-dirs:      scripts/-ghc-options:         -funbox-strict-fields -O-Main-is:             QuickCheck.hs------- check----Executable:          smallcheck-hs-source-dirs:      scripts/-ghc-options:         -funbox-strict-fields -O-Main-is:             RunSmallCheck.hs-
online.rc view
@@ -1,30 +1,53 @@ irc-connect freenode chat.freenode.net 6667 lambdabot Lambda_Robots:_100%_Loyal rc passwd.rc-admin + freenode:Pseudonym-admin + freenode:shapr-admin + freenode:vincenz-admin + freenode:Igloo admin + freenode:Cale-admin + freenode:dons+admin + freenode:Igloo+admin + freenode:Lemmih+admin + freenode:Pseudonym admin + freenode:TheHunter+admin + freenode:dons+admin + freenode:gwern+admin + freenode:igli+admin + freenode:int-e admin + freenode:musasabi-admin + freenode:Lemmih+admin + freenode:shapr admin + freenode:sjanssen admin + freenode:sorear-admin + freenode:int-e-admin + freenode:igli+admin + freenode:vincenz+join freenode:##logic+join freenode:#arch-haskell join freenode:#darcs+join freenode:#debian-es+join freenode:#dreamlinux-es+join freenode:#friendly-coders+join freenode:#gentoo-haskell+join freenode:#gentoo-uy join freenode:#ghc join freenode:#haskell-join freenode:#scala join freenode:#haskell-blah+join freenode:#haskell-books+join freenode:#haskell-hac07 join freenode:#haskell-overflow join freenode:#haskell-soc+join freenode:#haskell.cz+join freenode:#haskell.de+join freenode:#haskell.dut+join freenode:#haskell.es+join freenode:#haskell.fi+join freenode:#haskell.fr+join freenode:#haskell.hr+join freenode:#haskell.it+join freenode:#haskell.jp+join freenode:#haskell.no+join freenode:#haskell.ru+join freenode:#haskell.se+join freenode:#haskell_ru+join freenode:#jhc join freenode:#jtiger-join freenode:#parrot+join freenode:#macosx join freenode:#perl6+join freenode:#rosettacode+join freenode:#scala+join freenode:#scannedinavian join freenode:#unicycling join freenode:#xmonad-join freenode:##logic-join freenode:#gentoo-haskell-join freenode:#scannedinavian
online2.rc view
@@ -1,32 +1,33 @@ irc-connect freenode chat.freenode.net 6667 lambdabot2 Lambda_Robots:_100%_Loyal rc passwd.rc-admin + freenode:Pseudonym-admin + freenode:shapr-admin + freenode:vincenz-admin + freenode:Igloo admin + freenode:Cale-admin + freenode:dons+admin + freenode:Igloo+admin + freenode:Lemmih+admin + freenode:Pseudonym admin + freenode:TheHunter+admin + freenode:dons+admin + freenode:gwern+admin + freenode:int-e admin + freenode:musasabi-admin + freenode:Lemmih+admin + freenode:shapr admin + freenode:sjanssen admin + freenode:sorear-admin + freenode:int-e-join freenode:#haskell.se-join freenode:#haskell.ru-join freenode:#haskell.no-join freenode:#haskell.jp-join freenode:#haskell.it-join freenode:#haskell.hr-join freenode:#haskell.fr-join freenode:#haskell.fi-join freenode:#haskell.es-join freenode:#haskell.de-join freenode:#haskell.dut-join freenode:#haskell_ru-join freenode:#haskell-hac07-join freenode:#thunks+admin + freenode:vincenz join freenode:#debian-es join freenode:#dreamlinux-es join freenode:#friendly-coders join freenode:#gentoo-uy+join freenode:#haskell-hac07+join freenode:#haskell.de+join freenode:#haskell.dut+join freenode:#haskell.es+join freenode:#haskell.fi+join freenode:#haskell.fr+join freenode:#haskell.hr+join freenode:#haskell.it+join freenode:#haskell.jp+join freenode:#haskell.no+join freenode:#haskell.ru+join freenode:#haskell.se+join freenode:#haskell_ru+join freenode:#thunks
− scripts/BF.hs
@@ -1,414 +0,0 @@-{-# OPTIONS -cpp #-}--- This is an interpreter of the braif*ck language, written in--- the pure, lazy, functional language Haskell.--- --- Copyright (C) 2006 by Jason Dagit <dagit@codersbase.com>---                                                                           --- This program is free software; you can redistribute it and/or modify--- it under the terms of the GNU General Public License as published by--- the Free Software Foundation; either version 2 of the License, or--- (at your option) any later version.---                                                                           --- This program is distributed in the hope that it will be useful,--- but WITHOUT ANY WARRANTY; without even the implied warranty of--- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the--- GNU General Public License for more details.---                                                                           --- You should have received a copy of the GNU General Public License--- along with this program; if not, write to the Free Software--- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA-----import Data.Array.IO-#if __GLASGOW_HASKELL__ >= 606-import Data.Array hiding (array)-#else-import Data.Array hiding (array,bounds)-#endif-import Data.Array.Base   (unsafeRead, unsafeWrite, array)-import Data.Word         ( Word8(..) )-import Data.Char         ( ord, chr )-import Data.List         ( find, findIndex, groupBy )-import Data.Maybe        ( catMaybes )-import Control.Monad     ( when )-import Control.Monad.State-import System.Posix.Resource--rlimit = ResourceLimit 3--main = setResourceLimit ResourceCPUTime (ResourceLimits rlimit rlimit) >> run--run = do-  prog <- getContents-  c    <- core-  let cmds = loadProgram prog-  when debug $ print cmds-  execute cmds (snd (bounds cmds)) (BF c 0 0)--{- | The complete BF language:--* \>    Increment the pointer.-* \<    Decrement the pointer.-* +     Increment the byte at the pointer.-* \-    Decrement the byte at the pointer.-* .     Output the byte at the pointer.-* ,     Input a byte and store it in the byte at the pointer.-* [     Jump forward past the matching ] if the byte at the pointer is zero.-* ]     Jump backward to the matching [ unless the byte at the pointer is zero.---}--data Command = IncPtr-             | IncPtrBy !Int  -- ^ Increment pointer by set amount-             | DecPtr-             | IncByte-             | IncByteBy !Int -- ^ Increment by a set amount-             | DecByte-             | OutputByte-         --  | InputByte-             | JmpForward  !Int -- ^ nesting level-             | JmpBackward !Int -- ^ nesting level-             | SetIpTo !Int   -- ^ Sets the instruction ptr to a specific value-             | Halt-             | Ignored-             deriving (Show, Eq)--type Core = IOUArray Int Word8--type InstPtr = Int-type CorePtr = Int-data BF = BF !Core !CorePtr !InstPtr--instance Show BF where-    show (BF c cp ip) = "BF <core> CorePtr = " ++ show cp ++ " InstPtr = " ++ show ip--coreSize = 30000--core :: IO Core-core = newArray (0, coreSize - 1) (0::Word8)--decode :: Char -> State Int Command -decode '>' = return IncPtr-decode '<' = return DecPtr-decode '+' = return IncByte-decode '-' = return DecByte-decode '.' = return OutputByte--- decode ',' = return InputByte-decode '[' = do n <- get-                put (n+1)-                return $ JmpForward n-decode ']' = do n <- get-                put (n-1)-                return $ JmpBackward (n-1)-decode '@' = return Halt-decode _   = return Ignored--debug = False--incIP :: InstPtr -> InstPtr-incIP = (+ 1)-{-# INLINE incIP #-}--incCP :: CorePtr -> CorePtr-incCP = (`mod` coreSize) . (1 +)-{-# inlinE incCP #-}--decCP :: CorePtr -> CorePtr-decCP = (`mod` coreSize) . subtract 1-{-# INLINE decCP #-}- -doCommand :: Array Int Command -> BF -> IO BF-doCommand cmds bf@(BF _ _ ip) = doCommand' (cmds ! ip) cmds bf-  where-  doCommand' :: Command -> Array Int Command -> BF -> IO BF-  doCommand' Halt _ _ = undefined-  doCommand' Ignored _ (BF c cp ip) = {-# SCC "Ignored" #-} do-    when debug $ putStrLn $ "Ignored " ++ show bf-    return (BF c cp (incIP ip))-  doCommand' IncPtr _ bf@(BF c cp ip) = {-# SCC "IncPtr" #-} do-    when debug $ putStrLn $ "IncPtr " ++ show bf-    return (BF c (incCP cp) (incIP ip))-  doCommand' DecPtr _ bf@(BF c cp ip) = {-# SCC "DecPtr" #-} do-    when debug $ putStrLn $ "DecPtr " ++ show bf-    return (BF c (decCP cp) (incIP ip))-  doCommand' (IncPtrBy n) _ bf@(BF c cp ip) = {-# SCC "IncPtrBy" #-} do-    when debug $ putStrLn $ "IncPtrBy " ++ show n ++ " " ++ show bf-    return (BF c ((cp + n) `mod` coreSize) (incIP ip))-  doCommand' IncByte _ bf = {-# SCC "IncByte" #-} do-    when debug $ putStrLn $ "IncByte " ++ show bf-    updateByte bf (+1)-  doCommand' DecByte _ bf = {-# SCC "DecByte" #-} do-    when debug $ putStrLn $ "DecByte " ++ show bf-    updateByte bf (subtract 1)-  doCommand' (IncByteBy n) _ bf = {-# SCC "IncByteBy" #-} do-    when debug $ putStrLn $ "IncByteBy " ++ show n ++ " " ++ show bf-    updateByte bf (+ fromIntegral n)-  doCommand' OutputByte _ bf@(BF c cp ip) = {-# SCC "OutputByte" #-} do -    when debug $ putStrLn $ "OutputByte " ++ show bf-    c' <- unsafeRead c cp-    putChar (word8ToChr c')-    return (BF c cp (incIP ip))--{--  doCommand' InputByte _ bf@(BF c cp ip) = {-# SCC "InputByte" #-} do-    when debug $ putStrLn $ "InputByte " ++ show bf-    c' <- getChar-    let newByte = chrToWord8 c'-    unsafeWrite c cp newByte-    return (BF c cp (incIP ip))--}--  doCommand' (JmpForward n) cmds bf@(BF c cp ip) = {-# SCC "JmpForw" #-} do-    c' <- unsafeRead c cp-    case c' of -      0 -> {-# SCC "JmpForward1" #-} do -        when debug $ putStrLn $ "JmpForward1 " ++ show bf-        return (BF c cp newInstPtr)-      _ -> {-# SCC "JmpForward2" #-} do-        when debug $ putStrLn $ "JmpForward2 " ++ show bf-        let newBF = (BF c cp (incIP ip))-        when debug $ putStrLn $ "JmpForward3" ++ show newBF-        return newBF-    where-    -- we add one to go one past the next back jump-    newInstPtr = (nextJmp cmds ip (+1) (JmpBackward n)) + 1 -  doCommand' (JmpBackward n) cmds bf@(BF c cp ip) = {-# SCC "JmpBack" #-} do-    c' <- unsafeRead c cp-    if (c' /= 0) -      then do when debug $ putStrLn $ "JmpBackward1 " ++ show bf-              return (BF c cp newInstPtr)-      else do when debug $ putStrLn $ "JmpBackward2 " ++ show bf-              return (BF c cp (incIP ip))-    where-    newInstPtr = nextJmp cmds ip (subtract 1) (JmpForward n)-  doCommand' (SetIpTo i) _ bf@(BF c cp ip) = {-# SCC "SetIPTo" #-} do-    c' <- unsafeRead c cp-    when debug $ putStrLn $ "SetIpTo " ++ show i ++ " " -                          ++ show bf ++ " @" ++ show c'-    -- jmping behaves differently depending on jmp forward vs. backward-    -- we handle that with pos. vs. neg addresses-    -- Note: SetIpTo 0 is always a JmpBackward -    -- Because the first instruction cannot be SetIpTo 0-    if i > 0-      then if (c' == 0)-             then return $ BF c cp i-             else return $ BF c cp (incIP ip)-      else if (c' /= 0) -             then return $ BF c cp (-i)-             else return $ BF c cp (incIP ip)--nextJmp :: Array Int Command -        -> InstPtr -        -> (InstPtr -> InstPtr) -> Command -> InstPtr-nextJmp cmds ip f cmd = if cmds ! ip == cmd-                          then ip-                          else nextJmp cmds (f ip) f cmd--chrToWord8 :: Char -> Word8-chrToWord8 = fromIntegral . ord--word8ToChr :: Word8 -> Char-word8ToChr = chr . fromIntegral--updateByte (BF c cp ip) f = do-  e  <- unsafeRead c cp-  unsafeWrite c cp (f e)-  return (BF c cp (incIP ip))-{-# INLINE updateByte #-}--loadProgram :: String -> Array Int Command-loadProgram [] = array (0, 0) [(0, Halt)]---- adding a halt on to the end fixes a bug when called from an irc session-loadProgram prog = optimize (cs++[Halt])-  where-  cs = fst $ runState (mapM decode prog) 0-  n  = length cs--optimize :: [Command] -> Array Int Command-optimize cmds = listArray (0, (length reduced)-1) reduced-  where-  reduced = phase3 . phase2 . phase1 $ cmds-  -- phase1 removes ignored things-  phase1 :: [Command] -> [Command]-  phase1 = filter (/=Ignored) -  -- in phase2 group inc/dec into special instructions-  phase2 :: [Command] -> [Command]-  phase2 cs = concat $ map reduce $ groupBy (==) cs-    where -    reduce :: [Command] -> [Command]-    reduce cs-      | all (==IncPtr)  cs = [IncPtrBy  (length cs)]-      | all (==DecPtr)  cs = [IncPtrBy  (-(length cs))]-      | all (==IncByte) cs = [IncByteBy (length cs)]-      | all (==DecByte) cs = [IncByteBy (-(length cs))]-      | otherwise          = cs-  -- now we can turn jumps into changes of the ip-  phase3 :: [Command] -> [Command]-  phase3 cmds = updates (updates cmds jmpBs) jmpFs-    where-    jmpBs = calcJmpBs (zip [0..] cmds)-    jmpFs = calcJmpFs (zip [0..] cmds)-    update :: [a] -> (Int, a) -> [a]-    update xs (i, a) = take i xs ++ [a] ++ drop (i+1) xs-    updates :: [a] -> [(Int, a)] -> [a]-    updates xs []     = xs-    updates xs (u:us) = updates (update xs u) us-    nested :: Command -> Int-    nested (JmpForward  n) = n-    nested (JmpBackward n) = n-    nested _               = undefined-    isJmp (JmpForward  _) = True-    isJmp (JmpBackward _) = False-    isJmpB (JmpBackward _) = True-    isJmpB _               = False-    isJmpF (JmpForward  _) = True-    isJmpF _               = False-    calcJmpBs :: [(Int, Command)] -> [(Int, Command)]-    calcJmpBs cmds = catMaybes $ map newCmd (filter (isJmpB . snd) cmds)-      where-      newCmd (i, c) = absJmpB (i, findPrevJmpF (map snd cmds) i (nested c))-    calcJmpFs :: [(Int, Command)] -> [(Int, Command)]-    calcJmpFs cmds = catMaybes $ map newCmd (filter (isJmpF . snd) cmds)-      where-      newCmd (i, c) = absJmpF (i, findNextJmpB (map snd cmds) i (nested c))-    absJmpB :: (Int, Maybe Int) -> Maybe (Int, Command)-    absJmpB (_, Nothing) = Nothing-    absJmpB (i, Just n)  = Just $ (i, SetIpTo (-n))-    absJmpF (_, Nothing) = Nothing-    absJmpF (i, Just n)  = Just $ (i, SetIpTo (n+1))-    findPrevJmpF :: [Command] -                 -> Int -- ^ index to start at-                 -> Int -- ^ nesting level to match-                 -> Maybe Int -- ^ index of next JmpF-    findPrevJmpF _    i _ | i < 0 = Nothing-    findPrevJmpF cmds i n = case (cmds !! i) of-                              (JmpForward l) | l == n -> Just i-                              _ -> findPrevJmpF cmds (i-1) n--    findNextJmpB :: [Command] -                 -> Int -- ^ index to start at-                 -> Int -- ^ nesting level to match-                 -> Maybe Int -- ^ index of next JmpF-    findNextJmpB cmds i _ | i >= length cmds = Nothing-    findNextJmpB cmds i    n = case (cmds !! i) of-                                 (JmpBackward l) | l == n -> Just i-                                 _ -> findNextJmpB cmds (i+1) n--execute :: Array Int Command -> Int -> BF -> IO ()-execute cmds n bf@(BF c cp ip) = do-  if ip >= n || cmds ! ip == Halt-    then halt-    else doCommand cmds bf >>= execute cmds n--halt = if debug -         then putStrLn "Machine Halted.\n"-         else putStrLn "\n"---- Example Programs--helloWorld = -  ">+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++++>-]"++-  "<.#>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]>++++++++["++-  "<++++>-]<+.[-]++++++++++."----- works now, thanks to int-e for explaining the BF spec to me-bottles = -  "99 Bottles of Beer in Urban Mueller's BrainF*** (The actual"++-  "name is impolite)"++-  ""++-  "by Ben Olmstead"++-  ""++-  "ANSI C interpreter available on the internet; due to"++-  "constraints in comments the address below needs to have the"++-  "stuff in parenthesis replaced with the appropriate symbol:"++-  ""++-  "http://www(dot)cats(dash)eye(dot)com/cet/soft/lang/bf/"++-  ""++-  "Believe it or not this language is indeed Turing complete!"++-  "Combines the speed of BASIC with the ease of INTERCAL and"++-  "the readability of an IOCCC entry!"++-  ""++-  ">+++++++++[<+++++++++++>-]<[>[-]>[-]<<[>+>+<<-]>>[<<+>>-]>>>"++-  "[-]<<<+++++++++<[>>>+<<[>+>[-]<<-]>[<+>-]>[<<++++++++++>>>+<"++-  "-]<<-<-]+++++++++>[<->-]>>+>[<[-]<<+>>>-]>[-]+<<[>+>-<<-]<<<"++-  "[>>+>+<<<-]>>>[<<<+>>>-]>[<+>-]<<-[>[-]<[-]]>>+<[>[-]<-]<+++"++-  "+++++[<++++++<++++++>>-]>>>[>+>+<<-]>>[<<+>>-]<[<<<<<.>>>>>-"++-  "]<<<<<<.>>[-]>[-]++++[<++++++++>-]<.>++++[<++++++++>-]<++.>+"++-  "++++[<+++++++++>-]<.><+++++..--------.-------.>>[>>+>+<<<-]>"++-  ">>[<<<+>>>-]<[<<<<++++++++++++++.>>>>-]<<<<[-]>++++[<+++++++"++-  "+>-]<.>+++++++++[<+++++++++>-]<--.---------.>+++++++[<------"++-  "---->-]<.>++++++[<+++++++++++>-]<.+++..+++++++++++++.>++++++"++-  "++[<---------->-]<--.>+++++++++[<+++++++++>-]<--.-.>++++++++"++-  "[<---------->-]<++.>++++++++[<++++++++++>-]<++++.-----------"++-  "-.---.>+++++++[<---------->-]<+.>++++++++[<+++++++++++>-]<-."++-  ">++[<----------->-]<.+++++++++++..>+++++++++[<---------->-]<"++-  "-----.---.>>>[>+>+<<-]>>[<<+>>-]<[<<<<<.>>>>>-]<<<<<<.>>>+++"++-  "+[<++++++>-]<--.>++++[<++++++++>-]<++.>+++++[<+++++++++>-]<."++-  "><+++++..--------.-------.>>[>>+>+<<<-]>>>[<<<+>>>-]<[<<<<++"++-  "++++++++++++.>>>>-]<<<<[-]>++++[<++++++++>-]<.>+++++++++[<++"++-  "+++++++>-]<--.---------.>+++++++[<---------->-]<.>++++++[<++"++-  "+++++++++>-]<.+++..+++++++++++++.>++++++++++[<---------->-]<"++-  "-.---.>+++++++[<++++++++++>-]<++++.+++++++++++++.++++++++++."++-  "------.>+++++++[<---------->-]<+.>++++++++[<++++++++++>-]<-."++-  "-.---------.>+++++++[<---------->-]<+.>+++++++[<++++++++++>-"++-  "]<--.+++++++++++.++++++++.---------.>++++++++[<---------->-]"++-  "<++.>+++++[<+++++++++++++>-]<.+++++++++++++.----------.>++++"++-  "+++[<---------->-]<++.>++++++++[<++++++++++>-]<.>+++[<----->"++-  "-]<.>+++[<++++++>-]<..>+++++++++[<--------->-]<--.>+++++++[<"++-  "++++++++++>-]<+++.+++++++++++.>++++++++[<----------->-]<++++"++-  ".>+++++[<+++++++++++++>-]<.>+++[<++++++>-]<-.---.++++++.----"++-  "---.----------.>++++++++[<----------->-]<+.---.[-]<<<->[-]>["++-  "-]<<[>+>+<<-]>>[<<+>>-]>>>[-]<<<+++++++++<[>>>+<<[>+>[-]<<-]"++-  ">[<+>-]>[<<++++++++++>>>+<-]<<-<-]+++++++++>[<->-]>>+>[<[-]<"++-  "<+>>>-]>[-]+<<[>+>-<<-]<<<[>>+>+<<<-]>>>[<<<+>>>-]<>>[<+>-]<"++-  "<-[>[-]<[-]]>>+<[>[-]<-]<++++++++[<++++++<++++++>>-]>>>[>+>+"++-  "<<-]>>[<<+>>-]<[<<<<<.>>>>>-]<<<<<<.>>[-]>[-]++++[<++++++++>"++-  "-]<.>++++[<++++++++>-]<++.>+++++[<+++++++++>-]<.><+++++..---"++-  "-----.-------.>>[>>+>+<<<-]>>>[<<<+>>>-]<[<<<<++++++++++++++"++-  ".>>>>-]<<<<[-]>++++[<++++++++>-]<.>+++++++++[<+++++++++>-]<-"++-  "-.---------.>+++++++[<---------->-]<.>++++++[<+++++++++++>-]"++-  "<.+++..+++++++++++++.>++++++++[<---------->-]<--.>+++++++++["++-  "<+++++++++>-]<--.-.>++++++++[<---------->-]<++.>++++++++[<++"++-  "++++++++>-]<++++.------------.---.>+++++++[<---------->-]<+."++-  ">++++++++[<+++++++++++>-]<-.>++[<----------->-]<.+++++++++++"++-  "..>+++++++++[<---------->-]<-----.---.+++.---.[-]<<<]"++-  "@"--helloum =-  "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.@"---- can't figure this one out either...-sort =-  "Here is a Brainf*** program that bubblesorts its input and spits it out:"++-  ">>>>>,+[>>>,+]<<<[<<<"++-  "[>>>[-<<<-<+>[>]>>]<<<[<]>>"++-  "[>>>+<<<-]<[>+>>>+<<<<-]"++-  "<<]>>>[-.[-]]>>>[>>>]<<<]"--toupper =-  ",----------[----------------------.,----------]"--{--Example optimized programs:--++++[>++++++++<-]>[.+]--[(0,IncByteBy 4),  (1,SetIpTo 7),     (2,IncPtrBy 1),- (3,IncByteBy 8),  (4,IncPtrBy (-1)), (5,IncByteBy (-1)),- (6,SetIpTo (-1)), (7,IncPtrBy 1),    (8,SetIpTo 12),- (9,OutputByte),   (10,IncByteBy 1),  (11,SetIpTo (-8)),- (12,Halt)-]--[[]]--[(0,SetIpTo 4), - (1,SetIpTo 3),- (2,SetIpTo (-1)),- (3,SetIpTo 0),- (4,Halt)-]---}
− scripts/BotPP.hs
@@ -1,106 +0,0 @@-{-# OPTIONS -O -funbox-strict-fields #-}--- Copyright (c) 2006 Don Stewart - http://www.cse.unsw.edu.au/~dons--- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)------- Implements a preprocessor for plugins, filling in commonly required--- syntax.------ Currently only useful for plugins that only:---  import Plugin--- and have () for state.  ------ Also used to generate the modules list in Modules.hs-----import System.Environment-import Data.Char-import Data.List--import Data.ByteString.Char8 (pack, ByteString)-import qualified Data.ByteString.Char8 as B -- crank it up, yeah!--main = do-    -- putStr "BotPP called with args: ";  print =<< getArgs-    [orig,i,o] <- getArgs-    let basename = baseName orig-    -- putStr "basename = "; print basename-    B.readFile i >>= \l -> B.writeFile o $ expand (B.length l) 0 basename l--baseName :: FilePath -> FilePath-baseName s = base -    where-    rfile = takeWhile (not . (`elem` "/\\")) (reverse s)-    base  = takeWhile (/='.') (reverse rfile)------- tricksy non-copying implementation.----expand :: Int -> Int -> String -> ByteString -> ByteString-expand l n basename xs-    | n `seq` xs `seq` False               = undefined -- strict-    | l == n                               = xs        -- not found-    | pLUGIN  `B.isPrefixOf` (B.drop n xs) = B.concat $ pref : render  name  ++ [B.tail rest]-    | mODULES `B.isPrefixOf` (B.drop n xs) = B.concat $ pref : modules basename name' ++ [B.tail rest']-    | otherwise                            = expand l (n+1) basename xs--    where pref         = B.take n xs    -- accumulating an offset--          pLUGIN       = pack "PLUGIN "-          (name, rest) = B.break (=='\n') (B.drop (n+B.length pLUGIN) xs)--          mODULES      = pack "MODULES "-          (name', rest') = B.break (=='\n') (B.drop (n+B.length mODULES) xs)------- render the plugin boiler plate----render :: ByteString -> [ByteString]-render name =-    pack "newtype "  : name :-    pack "Module = " : name : pack "Module () \n\ -    \\n\ -    \theModule :: MODULE                            \n\ -    \theModule = MODULE $ " : name : pack "Module ()       \n" : []------- Collect all the plugin names, and generate the Modules.hs file----modules :: String -> ByteString -> [ByteString]-modules basename s =-    [pack "module ", pack basename, pack " (modulesInfo) where\n"-    ,pack "import Lambdabot\n"-    ,pack "\n"]-    ++ (concatMap importify statics) ++-    [pack "modulesInfo :: (LB (), [String])\n"-    ,pack "modulesInfo = (loadStaticModules, plugins)\n"-    ,pack "loadStaticModules :: LB ()\n"-    ,pack "loadStaticModules = do\n"]-    ++ (concatMap instalify statics) ++-    [pack "plugins :: [String]\n"-    ,pack "plugins = ["]-    ++ ((concat . (intersperse [pack ","]) . map pluginify) plugins) ++-    [pack "]\n"]--    where ms  = filter nonWhitespace $ B.split ' ' s--          statics = sort statics'-          plugins = sort plugins'--          (statics', rest) = break ((==)(pack ":")) ms-          plugins' = drop 1 rest--          importify x = [pack "import qualified Plugin.", x, B.singleton '\n']-          instalify x = [pack "  ircInstallModule Plugin.",x-                        ,pack ".theModule \""-                        ,B.map toLower x-                        , pack "\"\n"]-          pluginify x = [pack "\""-                        ,B.map toLower x-                        ,pack "\""]-                               --          nonWhitespace s -              | s == pack ""   = False-              | s == pack "\n" = False-              | otherwise      = True
− scripts/Djinn/Djinn.hs
@@ -1,387 +0,0 @@------ Copyright (c) 2005 Lennart Augustsson--- See LICENSE for licensing details.----module Main(main) where-import Data.Char(isAlpha, isSpace, isAlphaNum)-import Data.List(sortBy, nub, intersperse)-import Data.Ratio-import Text.ParserCombinators.ReadP-import Control.Monad(when)-import Control.Monad.Error()-import System.IO-import System.Environment-import System.Exit--import REPL-import LJT---import MJ-import HTypes-import HCheck(htCheckEnv, htCheckType)-import Help--main :: IO ()-main = do-    args <- getArgs-    let decodeOptions (('-':cs) : as) st = decodeOption cs >>= \f -> decodeOptions as (f False st)-        decodeOptions (('+':cs) : as) st = decodeOption cs >>= \f -> decodeOptions as (f True  st)-        decodeOptions as st = return (as, st)-        decodeOption cs = case [ set | (cmd, _, _, set) <- options, isPrefix cs cmd ] of-                          [] -> do usage; exitWith (ExitFailure 1)-                          set : _ -> return set-    (args', state) <- decodeOptions args startState-    case args' of-        [] -> repl (hsGenRepl state)-        _ -> loop state args'-              where loop _ [] = return ()-                    loop s (a:as) = do-                        putStrLn $ "-- loading file " ++ a-                        (q, s') <- loadFile s a-                        if q then-                            return ()-                         else-                            loop s' as--usage :: IO ()-usage = putStrLn "Usage: djinn [option ...] [file ...]"--hsGenRepl :: State -> REPL State-hsGenRepl state = REPL {-    repl_init = inIt state,-    repl_eval = eval,-    repl_exit = exit-    }--data State = State {-    synonyms :: [(HSymbol, ([HSymbol], HType, HKind))],-    axioms :: [(HSymbol, HType)],-    classes :: [ClassDef],-    multi :: Bool,-    sorted :: Bool,-    debug :: Bool,-    cutOff :: Int-    }-    deriving (Show)--startState :: State-startState = State {-    synonyms = syns,-    classes = clss,-    axioms = [],-    multi = False,-    sorted = True,-    debug = False,-    cutOff = 100-    }- where syns = either (const $ error "Bad initial environment") id $ htCheckEnv $ reverse [-        ("()",     ([],        HTUnion [("()",[])],                                      undefined)),-        ("Either", (["a","b"], HTUnion [("Left", [HTVar "a"]), ("Right", [HTVar "b"])],  undefined)),-        ("Maybe",  (["a"],     HTUnion [("Nothing", []), ("Just", [HTVar "a"])],         undefined)),-        ("Bool",   ([],        HTUnion [("False", []), ("True", [])],                    undefined)),-        ("Void",   ([],        HTUnion [],                                               undefined)),-        ("Not",    (["x"],     htNot "x",                                                undefined))-        ]-       clss = [("Eq", (["a"], [("==", a `HTArrow` (a `HTArrow` HTCon "Bool"))]))]-       a = HTVar "a"---version :: String-version = "version 2007-04-20"--inIt :: State -> IO (String, State)-inIt state = do-    putStrLn $ "Welcome to Djinn " ++ version ++ "."-    putStrLn $ "Type :h to get help."-    return ("Djinn> ", state)--eval :: State -> String -> IO (Bool, State)-eval s line =-    case filter (null . snd) (readP_to_S pCmd line) of-    [] -> do-                putStrLn $ "Cannot parse command"-                return (False, s)-    (cmd, "") : _ -> runCmd s cmd-    _ -> error "eval"--exit :: State -> IO ()-exit _s = do-    putStrLn "Bye."-    return ()--type Context = (HSymbol, [HType])-type ClassDef = (HSymbol, ([HSymbol], [Method]))--data Cmd = Help Bool | Quit | Add HSymbol HType | Query HSymbol [Context] HType | Del HSymbol | Load HSymbol | Noop | Env |-           Type (HSymbol, ([HSymbol], HType, HKind)) | Set (State -> State) | Clear | Class ClassDef--pCmd :: ReadP Cmd-pCmd = do-    skipSpaces-    let adds (':':s) p = do schar ':'; pPrefix (takeWhile (/= ' ') s); c <- p; skipSpaces; return c-        adds _ p = do c <- p; skipSpaces; return c-    cmd <- foldr1 (+++) [ adds s p | (s, _, p) <- commands ]-    skipSpaces-    return cmd--pPrefix :: String -> ReadP String-pPrefix s = do-    skipSpaces-    cs <- look-    let w = takeWhile isAlpha cs-    if isPrefix w s then-        string w-     else-        pfail--isPrefix :: String -> String -> Bool-isPrefix p s = not (null p) && length p <= length s && take (length p) s == p--runCmd :: State -> Cmd -> IO (Bool, State)-runCmd s Noop = return (False, s)-runCmd s (Help verbose) = do-    putStr $ helpText ++ unlines (map getHelp commands) ++ getSettings s-    when verbose $ putStr verboseHelp-    return (False, s)-runCmd s Quit = -    return (True, s)-runCmd s (Load f) = loadFile s f-runCmd s (Add i t) = -    case htCheckType (synonyms s) t of-    Left msg -> do putStrLn $ "Error: " ++ msg; return (False, s)-    Right _ -> return (False, s { axioms = (i, t) : axioms s })-runCmd _ Clear =-    return (False, startState)-runCmd s (Del i) = -    return (False, s { axioms   = filter ((i /=) . fst) (axioms s)-                     , synonyms = filter ((i /=) . fst) (synonyms s)-                     , classes = filter ((i /=) . fst) (classes s) })-runCmd s Env = do---    print s-    let tname t = if isHTUnion t then "data" else "type"-        showd (HTUnion []) = ""-        showd t = " = " ++ show t-    mapM_ (\ (i, (vs, t, _)) -> putStrLn $ tname t ++ " " ++ unwords (i:vs) ++ showd t) (reverse $ synonyms s)-    mapM_ (\ (i, t) -> putStrLn $ i ++ " :: " ++ show t) (reverse $ axioms s)-    mapM_ (putStrLn . showClass) (reverse $ classes s)-    return (False, s)-runCmd s (Type syn) = do-    case htCheckEnv (syn : synonyms s) of-        Left msg -> do putStrLn $ "Error: " ++ msg; return (False, s)-        Right syns -> return (False, s { synonyms = syns })-runCmd s (Set f) =-    return (False, f s)-runCmd s (Query i ctx g) =-   case htCheckType (synonyms s) g >> mapM (ctxLookup (classes s)) ctx of-   Left msg -> do putStrLn $ "Error: " ++ msg; return (False, s)-   Right mss -> do-    let form = hTypeToFormula (synonyms s) g-        env = [ (Symbol v, hTypeToFormula (synonyms s) t) | (v, t) <- axioms s ] ++ ctxEnv-        ctxEnv = [ (Symbol v, hTypeToFormula (synonyms s) t) | ms <- mss, (v, t) <- ms ]-        mpr = prove (multi s || sorted s) env form-    when (debug s) $ putStrLn ("*** " ++ show form)-    case mpr of-        [] -> do-            putStrLn $ "-- " ++ i ++ " cannot be realized."-            return (False, s)-        ps -> do-            let f p =-                   let c = termToHClause i p-                       bvs = getBinderVars c-                       r = if null bvs then (0, 0) else (length (filter (== "_") bvs) % length bvs, length bvs)-                   in  (r, c)-                e:es = nub $ -                        if sorted s then-                            map snd $ sortBy (\ (x,_) (y,_) -> compare x y) $ map f $ take (cutOff s) ps-                        else-                            map (termToHClause i) $ take (cutOff s) ps-                pr = putStrLn . hPrClause-                sctx = if null ctx then "" else showContexts ctx ++ " => "-            when (debug s) $ putStrLn ("+++ " ++ show (head ps))-            putStrLn $ i ++ " :: " ++ sctx ++ show g-            pr e-            when (multi s) $ mapM_ (\ x -> putStrLn "-- or" >> pr x) es-            return (False, s)-runCmd s (Class c) = do-    return (False, s { classes = c : classes s })--loadFile :: State -> String -> IO (Bool, State)-loadFile s name = do-    file <- readFile name-    evalCmds s $ lines $ stripComments file--stripComments :: String -> String-stripComments "" = ""-stripComments ('-':'-':cs) = skip cs-  where skip "" = ""-        skip s@('\n':_) = stripComments s-        skip (_:s) = skip s-stripComments (c:cs) = c : stripComments cs--showClass :: ClassDef -> String-showClass (c, (as, ms)) = "class " ++ showContext (c, map HTVar as) ++ " where " ++ concat (intersperse "; " $ map sm ms)-  where sm (i, t) = pp i ++ " :: " ++ show t-        pp i@(ch:_) | not (isAlphaNum ch) = "(" ++ i ++ ")"-        pp i = i--showContext :: Context -> String-showContext (c, as) = show $ foldl HTApp (HTCon c) as--showContexts :: [Context] -> String-showContexts [] = ""-showContexts cs = "(" ++ concat (intersperse ", " $ map showContext cs) ++ ")"--ctxLookup :: [ClassDef] -> Context -> Either String [Method]-ctxLookup clss (c, as) =-    case lookup c clss of-    Nothing -> Left $ "Class not found: " ++ c-    Just (ps, ms) -> Right [(m, substHT (zip ps as) t) | (m, t) <- ms ]--evalCmds :: State -> [String] -> IO (Bool, State)-evalCmds state [] = return (False, state)-evalCmds state (l:ls) = do-    qs@(q, state') <- eval state l-    if q then-        return qs-     else-        evalCmds state' ls--commands :: [(String, String, ReadP Cmd)]-commands = [-        (":clear",              "Clear the envirnment",         return Clear),-        (":delete <sym>",       "Delete from environment.",     pDel),-        (":environment",        "Show environment",             return Env),-        (":help",               "Print this message.",          return (Help False)),-        (":load <file>",        "Load a file",                  pLoad),-        (":quit",               "Quit program.",                return Quit),-        (":set <option>",       "Set options",                  pSet),-        (":verbose-help",       "Print verbose help.",          return (Help True)),-        ("type <sym> <vars> = <type>", "Add a type synonym",    pType),-        ("data <sym> <vars> = <datatype>", "Add a data type",   pData),-        ("class <sym> <vars> where <method>...", "Add a class", pClass),-        ("<sym> :: <type>",     "Add to environment",           pAdd),-        ("<sym> ? <type>",      "Query",                        pQuery),-        ("",                    "",                             return Noop)-        ]--options :: [(String, String, State->Bool, Bool->State->State)]-options = [-          ("multi",             "print multiple solutions",     multi,  \ v s -> s { multi  = v }),-          ("sorted",            "sort solutions",               sorted, \ v s -> s { sorted = v }),-          ("debug",             "debug mode",                   debug,  \ v s -> s { debug  = v })-          ]--getHelp :: (String, String, a) -> String-getHelp (cmd, help, _) = cmd ++ replicate (35 - length cmd) ' ' ++ help--pDel :: ReadP Cmd-pDel = do-    s <- pHSymbol True +++ pHSymbol False-    return $ Del s--pLoad :: ReadP Cmd-pLoad = do-    skipSpaces-    s <- munch1 (not . isSpace)-    return $ Load s--pAdd :: ReadP Cmd-pAdd = do-    i <- pHSymbol False-    sstring "::"-    t <- pHType-    optional $ schar ';'-    return $ Add i t--pQuery :: ReadP Cmd-pQuery = do-    i <- pHSymbol False-    schar '?'-    c <- option [] pContext-    t <- pHType-    optional $ schar ';'-    return $ Query i c t--pContext :: ReadP [Context]-pContext = do-    let pCtx = do c <- pHSymbol True; ts <- many pHTAtom; return (c, ts)-    schar '('-    ctx <- sepBy1 pCtx (schar ',')-    schar ')'-    sstring "=>"-    return ctx--pType :: ReadP Cmd-pType = do-    sstring "type"-    syn <- pHSymbol True-    args <- many (pHSymbol False)-    schar '='-    t <- pHType-    return $ Type (syn, (args, t, undefined))--pData :: ReadP Cmd-pData = do-    sstring "data"-    syn <- pHSymbol True-    args <- many (pHSymbol False)-    (do schar '='; t <- pHDataType; return $ Type (syn, (args, t, undefined))) +++ (return $ Type (syn, (args, HTUnion [], undefined)))--pClass :: ReadP Cmd-pClass = do-    sstring "class"-    cls <- pHSymbol True-    args <- many (pHSymbol False)-    sstring "where"-    mets <- sepBy pMethod (schar ';')-    return $ Class (cls, (args, mets))--type Method = (HSymbol, HType)--pMethod :: ReadP Method-pMethod = do-    let pOpSym = satisfy (`elem` "~!#$%^&*-+=<>.:")-    i <- pHSymbol False +++ do schar '('; op <- many1 pOpSym; schar ')'; return op-    sstring "::"-    t <- pHType-    return (i, t)--pSet :: ReadP Cmd-pSet = do-    val <- (do schar '+'; return True) +++ (do schar '-'; return False) -    f <- foldr (+++) pfail [ do pPrefix s; return (set val) | (s, _, _, set) <- options ]-    return $ Set $ f--schar :: Char -> ReadP ()-schar c = do-    skipSpaces-    char c-    return ()--sstring :: String -> ReadP ()-sstring s = do-    skipSpaces-    string s-    return ()--helpText :: String-helpText = "\-\Djinn is a program that generates Haskell code from a type.\n\-\Given a type the program will deduce an expression of this type,\n\-\if one exists.  If the Djinn says the type is not realizable it is\n\-\because there is no (total) expression of the given type.\n\-\Djinn only knows about tuples, ->, and some data types in the\n\-\initial environment (do :e for a list).\n\-\\n\-\Caveat emptor: The expression will have the right type, but it\n\-\may not be what you were looking for.\n\-\\n\-\Send any comments and feedback to lennart@augustsson.net\n\-\\n\-\Commands (may be abbreviated):\n\-\"--getSettings :: State -> String-getSettings s = unlines $ [-    "",-    "Current settings" ] ++ [ "    " ++ (if gett s then "+" else "-") ++ name ++ replicate (10 - length name) ' ' ++ descr |-                              (name, descr, gett, _set) <- options ]
− scripts/Djinn/HCheck.hs
@@ -1,152 +0,0 @@------ Copyright (c) 2005 Lennart Augustsson--- See LICENSE for licensing details.----module HCheck(htCheckEnv, htCheckType) where-import Data.List(union)---import Control.Monad.Trans-import Control.Monad.Error()-import Control.Monad.State-import Data.IntMap(IntMap, insert, (!), empty)--import Util.Digraph(stronglyConnComp, SCC(..))--import HTypes----import Debug.Trace--type KState = (Int, IntMap (Maybe HKind))-initState :: KState-initState = (0, empty)--type M a = StateT KState (Either String) a--type KEnv = [(HSymbol, HKind)]--newKVar :: M HKind-newKVar = do-    (i, m) <- get-    put (i+1, insert i Nothing m)-    return $ KVar i--getVar :: Int -> M (Maybe HKind)-getVar i = do-    (_, m) <- get-    case m!i of-        Just (KVar i') -> getVar i'-        mk -> return mk--addMap :: Int -> HKind -> M ()-addMap i k = do-    (n, m) <- get-    put (n, insert i (Just k) m)--clearState :: M ()-clearState = put initState--htCheckType :: [(HSymbol, ([HSymbol], HType, HKind))] -> HType -> Either String ()-htCheckType its t = flip evalStateT initState $ do-    let vs = getHTVars t-    ks <- mapM (const newKVar) vs-    let env = zip vs ks ++ [(i, k) | (i, (_, _, k)) <- its ]-    iHKindStar env t        --htCheckEnv :: [(HSymbol, ([HSymbol], HType, a))] -> Either String [(HSymbol, ([HSymbol], HType, HKind))]-htCheckEnv its =-    let graph = [ (n, i, getHTCons t) | n@(i, (_, t, _)) <- its ]-        order = stronglyConnComp graph-    in  case [ c | CyclicSCC c <- order ] of-        c : _ -> Left $ "Recursive types are not allowed: " ++ unwords [ i | (i, _) <- c ]-        [] -> flip evalStateT initState $ addKinds-            where addKinds = do-                        env <- inferHKinds [] $ map (\ (AcyclicSCC n) -> n) order-                        let getK i = maybe (error $ "htCheck " ++ i) id $ lookup i env-                        return [ (i, (vs, t, getK i)) | (i, (vs, t, _)) <- its ]--inferHKinds :: KEnv -> [(HSymbol, ([HSymbol], HType, a))] -> M KEnv-inferHKinds env [] = return env-inferHKinds env ((i, (vs, t, _)) : its) = do-    k <- inferHKind env vs t-    inferHKinds ((i, k) : env) its--inferHKind :: KEnv -> [HSymbol] -> HType -> M HKind-inferHKind env vs t = do-    clearState-    ks <- mapM (const newKVar) vs-    let env' = zip vs ks ++ env-    k <- iHKind env' t-    ground $ foldr KArrow k ks--iHKind :: KEnv -> HType -> M HKind-iHKind env (HTApp f a) = do-    kf <- iHKind env f-    ka <- iHKind env a-    r <- newKVar-    unifyK (KArrow ka r) kf-    return r-iHKind env (HTVar v) = do-    getVarHKind env v-iHKind env (HTCon c) = do-    getConHKind env c-iHKind env (HTTuple ts) = do-    mapM_ (iHKindStar env) ts-    return KStar-iHKind env (HTArrow f a) = do-    iHKindStar env f-    iHKindStar env a-    return KStar-iHKind env (HTUnion cs) = do-    mapM_ (\ (_, ts) -> mapM_ (iHKindStar env) ts) cs-    return KStar--iHKindStar :: KEnv -> HType -> M ()-iHKindStar env t = do-    k <- iHKind env t-    unifyK k KStar--unifyK :: HKind -> HKind -> M ()-unifyK k1 k2 = do-    let follow k@(KVar i) = getVar i >>= return . maybe k id -        follow k = return k-        unify KStar KStar = return ()-        unify (KArrow k11 k12) (KArrow k21 k22) = do unifyK k11 k21; unifyK k12 k22-        unify (KVar i1) (KVar i2) | i1 == i2 = return ()-        unify (KVar i) k = do occurs i k; addMap i k-        unify k (KVar i) = do occurs i k; addMap i k-        unify _ _ = lift $ Left "kind error"-        occurs _ KStar = return ()-        occurs i (KArrow f a) = do follow f >>= occurs i; follow a >>= occurs i-        occurs i (KVar i') = if i == i' then lift $ Left "cyclic kind" else return ()-    k1' <- follow k1-    k2' <- follow k2-    unify k1' k2'-    --getVarHKind :: KEnv -> HSymbol -> M HKind-getVarHKind env v =-    case lookup v env of-    Just k -> return k-    Nothing -> lift $ Left $ "type variable not bound " ++ v--getConHKind :: KEnv -> HSymbol -> M HKind-getConHKind env v =-    case lookup v env of-    Just k -> return k-    Nothing -> newKVar          -- allow uninterpreted type constructors--ground :: HKind -> M HKind-ground KStar = return KStar-ground (KArrow k1 k2) = liftM2 KArrow (ground k1) (ground k2)-ground (KVar i) = do-    mk <- getVar i-    case mk of-        Just k -> return k-        Nothing -> return KStar--getHTCons :: HType -> [HSymbol]-getHTCons (HTApp f a) = getHTCons f `union` getHTCons a-getHTCons (HTVar _) = []-getHTCons (HTCon s) = [s]-getHTCons (HTTuple ts) = foldr union [] (map getHTCons ts)-getHTCons (HTArrow f a) = getHTCons f `union` getHTCons a-getHTCons (HTUnion alts) = foldr union [] [ getHTCons t | (_, ts) <- alts, t <- ts ]
− scripts/Djinn/HTypes.hs
@@ -1,452 +0,0 @@------ Copyright (c) 2005 Lennart Augustsson--- See LICENSE for licensing details.----module HTypes(HKind(..), HType(..), HSymbol, hTypeToFormula, pHSymbol, pHType, pHDataType, pHTAtom,-        htNot, isHTUnion, getHTVars, substHT,-        HClause, HPat, HExpr(HEVar), hPrClause, termToHExpr, termToHClause, getBinderVars) where-import Text.PrettyPrint.HughesPJ(Doc, renderStyle, style, text, (<>), parens, ($$), vcat, punctuate,-         sep, fsep, nest, comma, (<+>))-import Data.Char(isAlphaNum, isAlpha, isUpper)-import Data.List(union, (\\))-import Control.Monad(zipWithM)-import Text.ParserCombinators.ReadP-import LJTFormula----import Debug.Trace--type HSymbol = String--data HKind-    = KStar-    | KArrow HKind HKind-    | KVar Int-    deriving (Eq, Show)--data HType-        = HTApp HType HType-        | HTVar HSymbol-        | HTCon HSymbol-        | HTTuple [HType]-        | HTArrow HType HType-        | HTUnion [(HSymbol, [HType])]          -- Only for data types; only at top level-        deriving (Eq)--isHTUnion :: HType -> Bool-isHTUnion (HTUnion _) = True-isHTUnion _ = False--htNot :: HSymbol -> HType-htNot x = HTArrow (HTVar x) (HTCon "Void")--instance Show HType where-    showsPrec _ (HTApp (HTCon "[]") t) = showString "[" . showsPrec 0 t . showString "]"-    showsPrec p (HTApp f a) = showParen (p > 2) $ showsPrec 2 f . showString " " . showsPrec 3 a-    showsPrec _ (HTVar s) = showString s-    showsPrec _ (HTCon s) = showString s-    showsPrec _ (HTTuple ss) = showParen True $ f ss-        where f [] = error "showsPrec HType"-              f [t] = showsPrec 0 t-              f (t:ts) = showsPrec 0 t . showString ", " . f ts-    showsPrec p (HTArrow s t) = showParen (p > 0) $ showsPrec 1 s . showString " -> " . showsPrec 0 t-    showsPrec _ (HTUnion cs) = f cs-        where f [] = id-              f [cts] = scts cts-              f (cts : ctss) = scts cts . showString " | " . f ctss-              scts (c, ts) = foldl (\ s t -> s . showString " " . showsPrec 10 t) (showString c) ts--instance Read HType where-    readsPrec _ = readP_to_S pHType'--pHType' :: ReadP HType-pHType' = do-    t <- pHType-    skipSpaces-    return t--pHType :: ReadP HType-pHType = do-    ts <- sepBy1 pHTypeApp (do schar '-'; char '>')-    return $ foldr1 HTArrow ts--pHDataType :: ReadP HType-pHDataType = do-    let con = do-            c <- pHSymbol True-            ts <- many pHTAtom-            return (c, ts)-    cts <- sepBy con (schar '|')-    return $ HTUnion cts--pHTAtom :: ReadP HType-pHTAtom = pHTVar +++ pHTCon +++ pHTList +++ pParen pHTTuple +++ pParen pHType +++ pUnit--pUnit :: ReadP HType-pUnit = do-    schar '('-    char ')'-    return $ HTCon "()"--pHTCon :: ReadP HType-pHTCon = pHSymbol True >>= return . HTCon--pHTVar :: ReadP HType-pHTVar = pHSymbol False >>= return . HTVar--pHSymbol :: Bool -> ReadP HSymbol-pHSymbol con = do-    skipSpaces-    c <- satisfy $ \ c -> isAlpha c && isUpper c == con-    let isSym d = isAlphaNum d || d == '\'' || d == '.'-    cs <- munch isSym-    return $ c:cs--pHTTuple :: ReadP HType-pHTTuple = do-    t <- pHType-    ts <- many1 (do schar ','; pHType)-    return $ HTTuple $ t:ts--pHTypeApp :: ReadP HType-pHTypeApp = do-    ts <- many1 pHTAtom-    return $ foldl1 HTApp ts--pHTList :: ReadP HType-pHTList = do-    schar '['-    t <- pHType-    schar ']'-    return $ HTApp (HTCon "[]") t--pParen :: ReadP a -> ReadP a-pParen p = do-    schar '('-    e <- p-    schar ')'-    return e--schar :: Char -> ReadP ()-schar c = do-    skipSpaces-    char c-    return ()--getHTVars :: HType -> [HSymbol]-getHTVars (HTApp f a) = getHTVars f `union` getHTVars a-getHTVars (HTVar v) = [v]-getHTVars (HTCon _) = []-getHTVars (HTTuple ts) = foldr union [] (map getHTVars ts)-getHTVars (HTArrow f a) = getHTVars f `union` getHTVars a-getHTVars _ = error "getHTVars"-----------------------------------hTypeToFormula :: [(HSymbol, ([HSymbol], HType, a))] -> HType -> Formula-hTypeToFormula ss (HTTuple ts) = Conj (map (hTypeToFormula ss) ts)-hTypeToFormula ss (HTArrow t1 t2) = hTypeToFormula ss t1 :-> hTypeToFormula ss t2-hTypeToFormula ss (HTUnion ctss) = Disj [ (ConsDesc c (length ts), hTypeToFormula ss (HTTuple ts)) | (c, ts) <- ctss ]-hTypeToFormula ss t = -    case expandSyn ss t [] of-    Nothing -> PVar $ Symbol $ show t-    Just t' -> hTypeToFormula ss t'--expandSyn :: [(HSymbol, ([HSymbol], HType, a))] -> HType -> [HType] -> Maybe HType-expandSyn ss (HTApp f a) as = expandSyn ss f (a:as)-expandSyn ss (HTCon c) as =-    case lookup c ss of-    Just (vs, t, _) | length vs == length as -> Just $ substHT (zip vs as) t-    _ -> Nothing-expandSyn _ _ _ = Nothing--substHT :: [(HSymbol, HType)] -> HType -> HType-substHT r (HTApp f a) = HTApp (substHT r f) (substHT r a)-substHT r t@(HTVar v) =-    case lookup v r of-    Nothing -> t-    Just t' -> t'-substHT _ t@(HTCon _) = t-substHT r (HTTuple ts) = HTTuple (map (substHT r) ts)-substHT r (HTArrow f a) = HTArrow (substHT r f) (substHT r a)-substHT r (HTUnion (ctss)) = HTUnion [ (c, map (substHT r) ts) | (c, ts) <- ctss ]-------------------------------------data HClause = HClause HSymbol [HPat] HExpr-    deriving (Show, Eq)--data HPat = HPVar HSymbol | HPCon HSymbol | HPTuple [HPat] | HPAt HSymbol HPat | HPApply HPat HPat-    deriving (Show, Eq)--data HExpr = HELam [HPat] HExpr | HEApply HExpr HExpr | HECon HSymbol | HEVar HSymbol | HETuple [HExpr] |-        HECase HExpr [(HPat, HExpr)]-    deriving (Show, Eq)--hPrClause :: HClause -> String-hPrClause c = renderStyle style $ ppClause 0 c--ppClause :: Int -> HClause -> Doc-ppClause _p (HClause f ps e) = text f <+> sep [sep (map (ppPat 10) ps) <+> text "=",-                                               nest 2 $ ppExpr 0 e]--ppPat :: Int -> HPat -> Doc-ppPat _ (HPVar s) = text s-ppPat _ (HPCon s) = text s-ppPat _ (HPTuple ps) = parens $ fsep $ punctuate comma (map (ppPat 0) ps)-ppPat _ (HPAt s p) = text s <> text "@" <> ppPat 10 p-ppPat p (HPApply a b) = pparens (p > 1) $ ppPat 1 a <+> ppPat 2 b--ppExpr :: Int -> HExpr -> Doc-ppExpr p (HELam ps e) = pparens (p > 0) $ sep [ text "\\" <+> sep (map (ppPat 10) ps) <+> text "->",-                                                ppExpr 0 e]-ppExpr p (HEApply (HEApply (HEVar f@(c:_)) a1) a2) | not (isAlphaNum c) =-     pparens (p > 4) $ ppExpr 5 a1 <+> text f <+> ppExpr 5 a2-ppExpr p (HEApply f a) = pparens (p > 11) $ ppExpr 11 f <+> ppExpr 12 a-ppExpr _ (HECon s) = text s-ppExpr _ (HEVar s@(c:_)) | not (isAlphaNum c) = pparens True $ text s-ppExpr _ (HEVar s) = text s-ppExpr _ (HETuple es) = parens $ fsep $ punctuate comma (map (ppExpr 0) es)-ppExpr p (HECase s alts) = pparens (p > 0) $ (text "case" <+> ppExpr 0 s <+> text "of") $$-                            vcat (map ppAlt alts)-  where ppAlt (pp, e) = ppPat 0 pp <+> text "->" <+> ppExpr 0 e---pparens :: Bool -> Doc -> Doc-pparens True d = parens d-pparens False d = d------------------------------------unSymbol :: Symbol -> HSymbol-unSymbol (Symbol s) = s--termToHExpr :: Term -> HExpr-termToHExpr term = niceNames $ etaReduce $ remUnusedVars $ fst $ conv [] term-  where conv _vs (Var s) = (HEVar $ unSymbol s, [])-        conv vs (Lam s te) = -                let hs = unSymbol s-                    (te', ss) = conv (hs : vs) te-                in  (hELam [convV hs ss] te', ss)-        conv vs (Apply (Cinj (ConsDesc s n) _) a) = (f $ foldl HEApply (HECon s) as, ss)-                where (f, as) = unTuple n ha-                      (ha, ss) = conv vs a-        conv vs (Apply te1 te2) = convAp vs te1 [te2]-        conv _vs (Ctuple 0) = (HECon "()", [])-        conv _vs e = error $ "termToHExpr " ++ show e--        unTuple 0 _ = (id, [])-        unTuple 1 a = (id, [a])-        unTuple n (HETuple as) | length as == n = (id, as)-        unTuple n e = error $ "unTuple: unimplemented " ++ show (n, e)--        unTupleP 0 _ = []---      unTupleP 1 p = [p]-        unTupleP n (HPTuple ps) | length ps == n = ps-        unTupleP n p = error $ "unTupleP: unimplemented " ++ show (n, p)--        convAp vs (Apply te1 te2) as = convAp vs te1 (te2:as)-        convAp vs (Ctuple n) as | length as == n =-                let (es, sss) = unzip $ map (conv vs) as-                in  (hETuple es, concat sss)-        convAp vs (Ccases cds) (se : es) =-                let (alts, ass) = unzip $ zipWith cAlt es cds-                    cAlt (Lam v e) (ConsDesc c n) =-                        let hv = unSymbol v-                            (he, ss) = conv (hv : vs) e-                            ps = case lookup hv ss of-                                 Nothing -> replicate n (HPVar "_")-                                 Just p -> unTupleP n p-                        in  ((foldl HPApply (HPCon c) ps, he), ss)-                    cAlt e _ = error $ "cAlt " ++ show e-                    (e', ess) = conv vs se-                in  (hECase e' alts, ess ++ concat ass)-        convAp vs (Csplit n) (b : a : as) =-                let (hb, sb) = conv vs b-                    (a', sa) = conv vs a-                    (as', sss) = unzip $ map (conv vs) as-                    (ps, b') = unLam n hb-                    unLam 0 e = ([], e)-                    unLam k (HELam ps0 e) | length ps0 >= n = let (ps1, ps2) = splitAt k ps0 in (ps1, hELam ps2 e)-                    unLam k e = error $ "unLam: unimplemented" ++ show (k, e)-                in  case a' of-                        HEVar v | v `elem` vs && null as -> (b', [(v, HPTuple ps)] ++ sb ++ sa)-                        _ -> (foldr HEApply (hECase a' [(HPTuple ps, b')]) as',-                              sb ++ sa ++ concat sss)-                    -        convAp vs f as = -                let (es, sss) = unzip $ map (conv vs) (f:as)-                in  (foldl1 HEApply es, concat sss)--        convV hs ss =-                case lookup hs ss of-                Nothing -> HPVar hs-                Just p -> HPAt hs p--        hETuple [e] = e-        hETuple es = HETuple es--niceNames :: HExpr -> HExpr-niceNames e =-    let bvars = filter (/= "_") $ getBinderVarsHE e-        nvars = [[c] | c <- ['a'..'z']] ++ [ "x" ++ show i | i <- [1::Integer ..]]-        freevars = getAllVars e \\ bvars-        vars = nvars \\ freevars-        sub = zip bvars vars-    in  hESubst sub e--hELam :: [HPat] -> HExpr -> HExpr-hELam [] e = e-hELam ps (HELam ps' e) = HELam (ps ++ ps') e-hELam ps e = HELam ps e--hECase :: HExpr -> [(HPat, HExpr)] -> HExpr-hECase e [] = HEApply (HEVar "void") e-hECase _ [(HPCon "()", e)] = e-hECase e pes | all (uncurry eqPatExpr) pes = e-hECase e [(p, HELam ps b)] = HELam ps $ hECase e [(p, b)]-hECase se alts@((_, HELam ops _):_) | m > 0 = HELam (take m ops) $ hECase se alts'-  where m = minimum (map (numBind . snd) alts)-        numBind (HELam ps _) = length (takeWhile isPVar ps)-        numBind _ = 0-        isPVar (HPVar _) = True-        isPVar _ = False-        alts' = [ let (ps1, ps2) = splitAt m ps in (cps, hELam ps2 $ hESubst (zipWith (\ (HPVar v) n -> (v, n)) ps1 ns) e)-                  | (cps, HELam ps e) <- alts ]-        ns = [ n | HPVar n <- take m ops ]--- if all arms are equal and there are at least two alternatives there can be no bound vars--- from the patterns-hECase _ ((_,e):alts@(_:_)) | all (alphaEq e . snd) alts = e-hECase e alts = HECase e alts--eqPatExpr :: HPat -> HExpr -> Bool-eqPatExpr (HPVar s) (HEVar s') = s == s'-eqPatExpr (HPCon s) (HECon s') = s == s'-eqPatExpr (HPTuple ps) (HETuple es) = and (zipWith eqPatExpr ps es)-eqPatExpr (HPApply pf pa) (HEApply ef ea) = eqPatExpr pf ef && eqPatExpr pa ea-eqPatExpr _ _ = False--alphaEq :: HExpr -> HExpr -> Bool-alphaEq e1 e2 | e1 == e2 = True-alphaEq (HELam ps1 e1) (HELam ps2 e2) =-    Nothing /= do-        s <- matchPat (HPTuple ps1) (HPTuple ps2)-        if alphaEq (hESubst s e1) e2 then-            return ()-         else-            Nothing-alphaEq (HEApply f1 a1) (HEApply f2 a2) = alphaEq f1 f2 && alphaEq a1 a2-alphaEq (HECon s1) (HECon s2) = s1 == s2-alphaEq (HEVar s1) (HEVar s2) = s1 == s2-alphaEq (HETuple es1) (HETuple es2) | length es1 == length es2 = and (zipWith alphaEq es1 es2)-alphaEq (HECase e1 alts1) (HECase e2 alts2) =-    alphaEq e1 e2 && and (zipWith alphaEq [ HELam [p] e | (p, e) <- alts1 ] [ HELam [p] e | (p, e) <- alts2 ])-alphaEq _ _ = False--matchPat :: HPat -> HPat -> Maybe [(HSymbol, HSymbol)]-matchPat (HPVar s1) (HPVar s2) = return [(s1, s2)]-matchPat (HPCon s1) (HPCon s2) | s1 == s2 = return []-matchPat (HPTuple ps1) (HPTuple ps2) | length ps1 == length ps2 = do-    ss <- zipWithM matchPat ps1 ps2-    return $ concat ss-matchPat (HPAt s1 p1) (HPAt s2 p2) = do-    s <- matchPat p1 p2-    return $ (s1, s2) : s-matchPat (HPApply f1 a1) (HPApply f2 a2) = do-    s1 <- matchPat f1 f2-    s2 <- matchPat a1 a2-    return $ s1 ++ s2-matchPat _ _ = Nothing--hESubst :: [(HSymbol, HSymbol)] -> HExpr -> HExpr-hESubst s (HELam ps e) = HELam (map (hPSubst s) ps) (hESubst s e)-hESubst s (HEApply f a) = HEApply (hESubst s f) (hESubst s a)-hESubst _ e@(HECon _) = e-hESubst s (HEVar v) = HEVar $ maybe v id $ lookup v s-hESubst s (HETuple es) = HETuple (map (hESubst s) es)-hESubst s (HECase e alts) = HECase (hESubst s e) [(hPSubst s p, hESubst s b) | (p, b) <- alts]--hPSubst :: [(HSymbol, HSymbol)] -> HPat -> HPat-hPSubst s (HPVar v) = HPVar $ maybe v id $ lookup v s-hPSubst _ p@(HPCon _) = p-hPSubst s (HPTuple ps) = HPTuple (map (hPSubst s) ps)-hPSubst s (HPAt v p) = HPAt (maybe v id $ lookup v s) (hPSubst s p)-hPSubst s (HPApply f a) = HPApply (hPSubst s f) (hPSubst s a)---termToHClause :: HSymbol -> Term -> HClause-termToHClause i term =-    case termToHExpr term of-    HELam ps e -> HClause i ps e-    e -> HClause i [] e--remUnusedVars :: HExpr -> HExpr-remUnusedVars expr = fst $ remE expr-  where remE (HELam ps e) =-            let (e', vs) = remE e-            in  (HELam (map (remP vs) ps) e', vs)-        remE (HEApply f a) =-            let (f', fs) = remE f-                (a', as) = remE a-            in  (HEApply f' a', fs ++ as)-        remE (HETuple es) =-            let (es', sss) = unzip (map remE es)-            in  (HETuple es', concat sss)-        remE (HECase e alts) =-            let (e', es) = remE e-                (alts', sss) = unzip [ let (ee', ss) = remE ee in ((remP ss p, ee'), ss) | (p, ee) <- alts ]-            in  case alts' of-                [(HPVar "_", b)] -> (b, concat sss)-                _ -> (hECase e' alts', es ++ concat sss)-        remE e@(HECon _) = (e, [])-        remE e@(HEVar v) = (e, [v])-        remP vs p@(HPVar v) = if v `elem` vs then p else HPVar "_"-        remP _vs p@(HPCon _) = p-        remP vs (HPTuple ps) = hPTuple (map (remP vs) ps)-        remP vs (HPAt v p) = if v `elem` vs then HPAt v (remP vs p) else remP vs p-        remP vs (HPApply f a) = HPApply (remP vs f) (remP vs a)-        hPTuple ps | all (== HPVar "_") ps = HPVar "_"-        hPTuple ps = HPTuple ps--getBinderVars :: HClause -> [HSymbol]-getBinderVars (HClause _ pats expr) = concatMap getBinderVarsHP pats ++ getBinderVarsHE expr--getBinderVarsHE :: HExpr -> [HSymbol]-getBinderVarsHE expr = gbExp expr-  where gbExp (HELam ps e) = concatMap getBinderVarsHP ps ++ gbExp e-        gbExp (HEApply f a) = gbExp f ++ gbExp a-        gbExp (HETuple es) = concatMap gbExp es-        gbExp (HECase se alts) = gbExp se ++ concatMap (\ (p, e) -> getBinderVarsHP p ++ gbExp e) alts-        gbExp _ = []--getBinderVarsHP :: HPat -> [HSymbol]-getBinderVarsHP pat = gbPat pat-  where gbPat (HPVar s) = [s]-        gbPat (HPCon _) = []-        gbPat (HPTuple ps) = concatMap gbPat ps-        gbPat (HPAt s p) = s : gbPat p-        gbPat (HPApply f a) = gbPat f ++ gbPat a--getAllVars :: HExpr -> [HSymbol]-getAllVars expr = gaExp expr-  where gaExp (HELam _ps e) = gaExp e-        gaExp (HEApply f a) = gaExp f `union` gaExp a-        gaExp (HETuple es) = foldr union [] (map gaExp es)-        gaExp (HECase se alts) = foldr union (gaExp se) (map (\ (_p, e) -> gaExp e) alts)-        gaExp (HEVar s) = [s]-        gaExp _ = []--etaReduce :: HExpr -> HExpr-etaReduce expr = fst $ eta expr-  where eta (HELam [HPVar v] (HEApply f (HEVar v'))) | v == v' && v `notElem` vs = (f', vs)-            where (f', vs) = eta f-        eta (HELam ps e) = (HELam ps e', vs) where (e', vs) = eta e-        eta (HEApply f a) = (HEApply f' a', fvs++avs) where (f', fvs) = eta f; (a', avs) = eta a-        eta e@(HECon _) = (e, [])-        eta e@(HEVar s) = (e, [s])-        eta (HETuple es) = (HETuple es', concat vss) where (es', vss) = unzip $ map eta es-        eta (HECase e alts) = (HECase e' alts', vs ++ concat vss) where (e', vs) = eta e-                                                                        (alts', vss) = unzip $ [ let (a', ss) = eta a in ((p, a'), ss)-                                                                                                 | (p, a) <- alts ]
− scripts/Djinn/Help.hs
@@ -1,177 +0,0 @@-module Help where-verboseHelp :: String-verboseHelp = "\-\\n\-\\n\-\Djinn commands explained\n\-\========================\n\-\\n\-\<sym> ? <type>\n\-\  Try to find a function of the specified type.  Djinn knows about the\n\-\function type, tuples, Either, Maybe, (), and can be given new type\n\-\definitions.  (Djinn also knows about the empty type, Void, but this\n\-\is less useful.)  Further functions, type synonyms, and data types can\n\-\be added by using the commands below.  If a function can be found it\n\-\is printed in a style suitable for inclusion in a Haskell program.  If\n\-\no function can be found this will be reported as well.  Examples:\n\-\  Djinn> f ? a->a\n\-\  f :: a -> a\n\-\  f x1 = x1\n\-\  Djinn> sel ? ((a,b),(c,d)) -> (b,c)\n\-\  sel :: ((a, b), (c, d)) -> (b, c)\n\-\  sel ((_, v5), (v6, _)) = (v5, v6)\n\-\  Djinn> cast ? a->b\n\-\  -- cast cannot be realized.\n\-\  Djinn will always find a (total) function if one exists.  (The worst\n\-\case complexity is bad, but unlikely for typical examples.)  If no\n\-\function exists Djinn will always terminate and say so.\n\-\  When multiple implementations of the type exists Djinn will only\n\-\give one of them.  Example:\n\-\  Djinn> f ? a->a->a\n\-\  f :: a -> a -> a\n\-\  f _ x2 = x2\n\-\\n\-\Warning: The given type expression is not checked in any way (i.e., no\n\-\kind checking).\n\-\\n\-\\n\-\<sym> :: <type>\n\-\  Add a new function available for Djinn to construct the result.\n\-\Example:\n\-\  Djinn> foo :: Int -> Char\n\-\  Djinn> bar :: Char -> Bool\n\-\  Djinn> f ? Int -> Bool\n\-\  f :: Int -> Bool\n\-\  f x3 = bar (foo x3)\n\-\This feature is not as powerful as it first might seem.  Djinn does\n\-\*not* instantiate polymorphic function.  It will only use the function\n\-\with exactly the given type.  Example:\n\-\  Djinn> cast :: a -> b\n\-\  Djinn> f ? c->d\n\-\  -- f cannot be realized.\n\-\\n\-\type <sym> <vars> = <type>\n\-\  Add a Haskell style type synonym.  Type synonyms are expanded before\n\-\Djinn starts looking for a realization.\n\-\  Example:\n\-\  Djinn> type Id a = a->a\n\-\  Djinn> f ? Id a\n\-\  f :: Id a\n\-\  f x1 = x1\n\-\\n\-\data <sym> <vars> = <type>\n\-\  Add a Haskell style data type.\n\-\  Example:\n\-\  Djinn> data Foo a = C a a a\n\-\  Djinn> f ? a -> Foo a\n\-\  f :: a -> Foo a\n\-\  f x1 = C x1 x1 x1\n\-\\n\-\\n\-\:clear\n\-\  Set the environment to the start environment.\n\-\\n\-\\n\-\:delete <sym>\n\-\  Remove a symbol that has been added with the add command.\n\-\\n\-\\n\-\:environment\n\-\  List all added symbols and their types.\n\-\\n\-\\n\-\:help\n\-\  Show a short help message.\n\-\\n\-\\n\-\:load <file>\n\-\  Read and execute a file with commands.  The file may include Haskell\n\-\style -- comments.\n\-\\n\-\\n\-\:quit\n\-\  Quit Djinn.\n\-\\n\-\\n\-\:set\n\-\  Set runtime options.\n\-\     +multi    show multiple solutions\n\-\               This will not show all solutions since there might be\n\-\               infinitly many.\n\-\     -multi    show one solution\n\-\     +sorted   sort solutions according to a heuristic criterion\n\-\     -sorted   do not sort solutions\n\-\  The heuristic used to sort the solutions is that as many of the\n\-\bound variables as possible should be used.\n\-\\n\-\:verbose-help\n\-\  Print this message.\n\-\\n\-\\n\-\Further examples\n\-\================\n\-\  calvin% djinn\n\-\  Welcome to Djinn version 2005-12-11.\n\-\  Type :h to get help.\n\-\\n\-\  -- return, bind, and callCC in the continuation monad\n\-\  Djinn> data CD r a = CD ((a -> r) -> r)\n\-\  Djinn> returnCD ? a -> CD r a\n\-\  returnCD :: a -> CD r a\n\-\  returnCD x1 = CD (\\ c15 -> c15 x1)\n\-\\n\-\  Djinn> bindCD ? CD r a -> (a -> CD r b) -> CD r b\n\-\  bindCD :: CD r a -> (a -> CD r b) -> CD r b\n\-\  bindCD x1 x4 =\n\-\           case x1 of\n\-\           CD v3 -> CD (\\ c49 ->\n\-\                        v3 (\\ c50 ->\n\-\                            case x4 c50 of\n\-\                            CD c52 -> c52 c49))\n\-\\n\-\  Djinn> callCCD ? ((a -> CD r b) -> CD r a) -> CD r a\n\-\  callCCD :: ((a -> CD r b) -> CD r a) -> CD r a\n\-\  callCCD x1 =\n\-\            CD (\\ c68 ->\n\-\                case x1 (\\ c69 -> CD (\\ _ -> c68 c69)) of\n\-\                CD c72 -> c72 c68)\n\-\\n\-\\n\-\  -- return and bind in the state monad\n\-\  Djinn> type S s a = (s -> (a, s))\n\-\  Djinn> returnS ? a -> S s a\n\-\  returnS :: a -> S s a\n\-\  returnS x1 x2 = (x1, x2)\n\-\  Djinn> bindS ? S s a -> (a -> S s b) -> S s b\n\-\  bindS :: S s a -> (a -> S s b) -> S s b\n\-\  bindS x1 x2 x3 =\n\-\          case x1 x3 of\n\-\          (v4, v5) -> x2 v4 v5\n\-\\n\-\\n\-\Theory\n\-\======\n\-\  Djinn interprets a Haskell type as a logic formula using the\n\-\Curry-Howard isomorphism and then uses a decision procedure for\n\-\Intuitionistic Propositional Calculus.  This decision procedure is\n\-\based on Gentzen's LJ sequent calculus, but in a modified form, LJT,\n\-\that ensures termination.  This variation on LJ has a long history,\n\-\but the particular formulation used in Djinn is due to Roy Dyckhoff.\n\-\The decision procedure has been extended to generate a proof object\n\-\(i.e., a lambda term).  It is this lambda term (in normal form) that\n\-\constitutes the Haskell code.\n\-\  See http://www.dcs.st-and.ac.uk/~rd/publications/jsl57.pdf for more\n\-\on the exact method used by Djinn.\n\-\\n\-\  Since Djinn handles propositional calculus it also knows about the\n\-\absurd proposition, corresponding to the empty set.  This set is\n\-\called Void in Haskell, and Djinn assumes an elimination rule for the\n\-\Void type:\n\-\  void :: Void -> a\n\-\Using Void is of little use for programming, but can be interesting\n\-\for theorem proving.  Example, the double negation of the law of\n\-\excluded middle:\n\-\  Djinn> f ? Not (Not (Either x (Not x)))\n\-\  f :: Not (Not (Either x (Not x)))\n\-\  f x1 = void (x1 (Right (\\ c23 -> void (x1 (Left c23)))))\n\-\"
− scripts/Djinn/LICENSE
@@ -1,32 +0,0 @@-Copyright (c) 2005 Lennart Augustsson, Thomas Johnsson-    Chalmers University of Technology-All rights reserved.--This code is derived from software written by Lennart Augustsson-(lennart@augustsson.net).--Redistribution and use in source and binary forms, with or without-modification, are permitted provided that the following conditions-are met:-1. Redistributions of source code must retain the above copyright-   notice, this list of conditions and the following disclaimer.-2. Redistributions in binary form must reproduce the above copyright-   notice, this list of conditions and the following disclaimer in the-   documentation and/or other materials provided with the distribution.-3. None of the names of the copyright holders may be used to endorse-   or promote products derived from this software without specific-   prior written permission.--THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR-PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE-OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN-IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.--*** End of disclaimer. ***
− scripts/Djinn/LJT.hs
@@ -1,468 +0,0 @@------ Copyright (c) 2005 Lennart Augustsson--- See LICENSE for licensing details.------ Intuitionistic theorem prover--- Written by Roy Dyckhoff, Summer 1991    --- Modified to use the LWB syntax  Summer 1997--- and simplified in various ways...------ Translated to Haskell by Lennart Augustsson December 2005------ Incorporates the Vorob'ev-Hudelmaier etc calculus (I call it LJT)--- See RD's paper in JSL 1992:--- "Contraction-free calculi for intuitionistic logic"------ Torkel Franzen (at SICS) gave me good ideas about how to write this --- properly, taking account of first-argument indexing,--- and I learnt a trick or two from Neil Tennant's "Autologic" book.--module LJT(module LJTFormula, provable,-        prove, Proof) where-import Data.List(partition)-import Control.Monad--import LJTFormula--import Debug.Trace-mtrace :: String -> a -> a-mtrace m x = if debug then trace m x else x-wrap :: (Show a, Show b) => String -> a -> b -> b-wrap fun args ret = mtrace (fun ++ ": " ++ show args) $-                    let o = show ret in seq o $ -                    mtrace (fun ++ " returns: " ++ o) ret-wrapM :: (Show a, Show b, Monad m) => String -> a -> m b -> m b-wrapM fun args mret = do-    () <- mtrace (fun ++ ": " ++ show args) $ return ()-    ret <- mret-    () <- mtrace (fun ++ " returns: " ++ show ret) $ return ()-    return ret-debug :: Bool-debug = False--type MoreSolutions = Bool--provable :: Formula -> Bool-provable a = not $ null $ prove False [] a --prove :: MoreSolutions -> [(Symbol, Formula)] -> Formula -> [Proof]-prove more env a = runP $ redtop more env a--redtop :: MoreSolutions -> [(Symbol, Formula)] -> Formula -> P Proof-redtop more ifs a = do-    let form = foldr (:->) a (map snd ifs)-    p <- redant more [] [] [] [] form-    nf (foldl Apply p (map (Var . fst) ifs))-------------------------------------- -type Proof = Term--subst :: Term -> Symbol -> Term -> P Term-subst b x term = sub term-  where sub t@(Var s') = if x == s' then copy [] b else return t-        sub (Lam s t) = liftM (Lam s) (sub t)-        sub (Apply t1 t2) = liftM2 Apply (sub t1) (sub t2)-        sub t = return t--copy :: [(Symbol, Symbol)] -> Term -> P Term-copy r (Var s) = return $ Var $ maybe s id $ lookup s r-copy r (Lam s t) = do-    s' <- newSym "c"-    liftM (Lam s') $ copy ((s, s'):r) t-copy r (Apply t1 t2) = liftM2 Apply (copy r t1) (copy r t2)-copy _r t = return t------------------------------------ XXX The symbols used in the functions below must not clash--- XXX with any symbols from newSym.--applyAtom :: Term -> Term -> Term-applyAtom f a = Apply f a--curryt :: Int -> Term -> Term-curryt n p = foldr Lam (Apply p (applys (Ctuple n) (map Var xs))) xs-  where xs = [ Symbol ("x_" ++ show i) | i <- [0 .. n-1] ]--inj :: ConsDesc -> Int -> Term -> Term-inj cd i p = Lam x $ Apply p (Apply (Cinj cd i) (Var x))-  where x = Symbol "x"--applyImp :: Term -> Term -> Term-applyImp p q = Apply p (Apply q (Lam y $ Apply p (Lam x (Var y))))-  where x = Symbol "x"-        y = Symbol "y"---- ((c->d)->false) -> ((c->false)->false, d->false)--- p : (c->d)->false)--- replace p1 and p2 with the components of the pair-cImpDImpFalse :: Symbol -> Symbol -> Term -> Term -> P Term-cImpDImpFalse p1 p2 cdf gp = do-    let p1b = Lam cf $ Apply cdf $ Lam x $ Apply (Ccases []) $ Apply (Var cf) (Var x)-        p2b = Lam d $ Apply cdf $ Lam c $ Var d-        cf = Symbol "cf"-        x = Symbol "x"-        d = Symbol "d"-        c = Symbol "c"-    subst p1b p1 gp >>= subst p2b p2------------------------------------ More simplifications:---  split where no variables used can be removed---  either with equal RHS can me merged.---- Compute the normal form-nf :: Term -> P Term-nf ee = spine ee []-  where spine (Apply f a) as = do a' <- nf a; spine f (a' : as)-        spine (Lam s e) [] = liftM (Lam s) (nf e)-        spine (Lam s e) (a : as) = do e' <- subst a s e; spine e' as-        spine (Csplit n) (b : tup : args) | istup && n <= length xs = spine (applys b xs) args-          where (istup, xs) = getTup tup-                getTup (Ctuple _) = (True, [])-                getTup (Apply f a) = let (tf, as) = getTup f in (tf, a:as)-                getTup _ = (False, [])-        spine (Ccases []) (e@(Apply (Ccases []) _) : as) = spine e as-        spine (Ccases cds) (Apply (Cinj _ i) x : as) | length as >= n = spine (Apply (as!!i) x) (drop n as)-                where n = length cds-        spine f as = return $ applys f as--------------------------------------- Our Proof monad, P, a monad with state and multiple results---- Note, this is the non-standard way to combine state with multiple--- results.  But this is much better for backtracking.-newtype P a = P { unP :: PS -> [(PS, a)] }--instance Monad P where-    return x = P $ \ s -> [(s, x)]-    P m >>= f = P $ \ s ->-        [ y | (s',x) <- m s, y <- unP (f x) s' ]--instance Functor P where-    fmap f (P m) = P $ \ s ->-        [ (s', f x) | (s', x) <- m s ]--instance MonadPlus P where-    mzero = P $ \ _s -> []-    P fxs `mplus` P fys = P $ \ s -> fxs s ++ fys s---- The state, just an integer for generating new variables-data PS = PS !Integer-startPS :: PS-startPS = PS 1--nextInt :: P Integer-nextInt = P $ \ (PS i) -> [(PS (i+1), i)]--none :: P a-none = mzero--many :: [a] -> P a-many xs = P $ \ s -> zip (repeat s) xs--atMostOne :: P a -> P a-atMostOne (P f) = P $ \ s -> take 1 (f s)--runP :: P a -> [a]-runP (P m) = map snd (m startPS)--------------------------------------- Atomic formulae--data AtomF = AtomF Term Symbol-    deriving (Eq)-instance Show AtomF where-    show (AtomF p s) = show p ++ ":" ++ show s--type AtomFs = [AtomF]--findAtoms :: Symbol -> AtomFs -> [Term]-findAtoms s atoms = [ p | AtomF p s' <- atoms, s == s' ]----removeAtom :: Symbol -> AtomFs -> AtomFs---removeAtom s atoms = [ a | a@(AtomF _ s') <- atoms, s /= s' ]--addAtom :: AtomF -> AtomFs -> AtomFs-addAtom a as = if a `elem` as then as else a : as-------------------------------------- Implications of one atom--data AtomImp = AtomImp Symbol Antecedents-     deriving (Show)-type AtomImps = [AtomImp]--extract :: AtomImps -> Symbol -> ([Antecedent], AtomImps)-extract aatomImps@(atomImp@(AtomImp a' bs) : atomImps) a =-    case compare a a' of-    GT -> let (rbs, restImps) = extract atomImps a in (rbs, atomImp : restImps)-    EQ -> (bs, atomImps)-    LT -> ([], aatomImps)-extract _ _ = ([], [])--insert :: AtomImps -> AtomImp -> AtomImps-insert [] ai = [ ai ]-insert aatomImps@(atomImp@(AtomImp a' bs') : atomImps) ai@(AtomImp a bs) =-    case compare a a' of-    GT -> atomImp : insert atomImps ai-    EQ -> AtomImp a (bs ++ bs') : atomImps-    LT -> ai : aatomImps-------------------------------------- Nested implications, (a -> b) -> c--data NestImp = NestImp Term Formula Formula Formula -- NestImp a b c represents (a :-> b) :-> c-    deriving (Eq)-instance Show NestImp where-    show (NestImp _ a b c) = show $ (a :-> b) :-> c--type NestImps = [NestImp]--addNestImp :: NestImp -> NestImps -> NestImps-addNestImp n ns = if n `elem` ns then ns else n : ns-------------------------------------- Ordering of nested implications-heuristics :: Bool-heuristics = True--order :: NestImps -> Formula -> AtomImps -> NestImps-order nestImps g atomImps =-    if heuristics then-        nestImps-    else-        let -            good_for (NestImp _ _ _ (Disj [])) = True-            good_for (NestImp _ _ _ g') = g == g'-            nice_for (NestImp _ _ _ (PVar s)) =-                case extract atomImps s of-                (bs', _) -> let bs = [ b | A _ b <- bs'] in g `elem` bs || false `elem` bs-            nice_for _ = False-            (good, ok) = partition good_for nestImps-            (nice, bad) = partition nice_for ok-        in  good ++ nice ++ bad-------------------------------------- Generate a new unique variable-newSym :: String -> P Symbol-newSym pre = do-   i <- nextInt-   return $ Symbol $ pre ++ show i-------------------------------------- Generate all ways to select one element of a list-select :: [a] -> P (a, [a])-select zs = many [ del n zs | n <- [0 .. length zs - 1] ]-  where del 0 (x:xs) = (x, xs)-        del n (x:xs) = let (y,ys) = del (n-1) xs in (y, x:ys)-        del _ _ = error "select"-------------------------------------- --data Antecedent = A Term Formula deriving (Show)-type Antecedents = [Antecedent]--type Goal = Formula------- This is the main loop of the proof search.------ The redant functions reduce antecedents and the redsucc--- function reduces the goal (succedent).------ The antecedents are kept in four groups: Antecedents, AtomImps, NestImps, AtomFs---   Antecedents contains as yet unclassified antecedents; the redant functions---     go through them one by one and reduces and classifies them.---   AtomImps contains implications of the form (a -> b), where `a' is an atom.---     To speed up the processing it is stored as a map from the `a' to all the---     formulae it implies.---   NestImps contains implications of the form ((b -> c) -> d)---   AtomFs contains atomic formulae.------ There is also a proof object associated with each antecedent.----redant :: MoreSolutions -> Antecedents -> AtomImps -> NestImps -> AtomFs -> Goal -> P Proof-redant more antes atomImps nestImps atoms goal =-    wrapM "redant" (antes, atomImps, nestImps, atoms, goal) $-    case antes of-    [] -> redsucc goal-    a:l -> redant1 a l goal-  where redant0 l g = redant more l atomImps nestImps atoms g-        redant1 :: Antecedent -> Antecedents -> Goal -> P Proof-        redant1 a@(A p f) l g = -            wrapM "redant1" ((a, l), atomImps, nestImps, atoms, g) $-            if f == g then-                -- The goal is the antecedent, we're done.-                -- XXX But we might want more?-                if more then-                    return p `mplus` redant1' a l g-                else-                    return p-            else-                redant1' a l g--        -- Reduce the first antecedent-        redant1' :: Antecedent -> Antecedents -> Goal -> P Proof-        redant1' (A p (PVar s)) l g =-           let af = AtomF p s-               (bs, restAtomImps) = extract atomImps s-           in  redant more ([A (Apply f p) b | A f b <- bs] ++ l) restAtomImps nestImps (addAtom af atoms) g-        redant1' (A p (Conj bs)) l g = do-           vs <- mapM (const (newSym "v")) bs-           gp <- redant0 (zipWith (\ v a -> A (Var v) a) vs bs ++ l) g-           return $ applys (Csplit (length bs)) [foldr Lam gp vs, p]-        redant1' (A p (Disj ds)) l g = do-           vs <- mapM (const (newSym "d")) ds-           ps <- mapM (\ (v, (_, d)) -> redant1 (A (Var v) d) l g) (zip vs ds)-           if null ds && g == Disj [] then-               -- We are about to construct `void p : Void', so we shortcut-               -- it with just `p'.-               return p-            else-               return $ applys (Ccases (map fst ds)) (p : zipWith Lam vs ps)-        redant1' (A p (a :-> b)) l g = redantimp p a b l g--        redantimp :: Term -> Formula -> Formula -> Antecedents -> Goal -> P Proof-        redantimp t c d a g =-            wrapM "redantimp" (c,d,a,g) $-            redantimp' t c d a g--        -- Reduce an implication antecedent-        redantimp' :: Term -> Formula -> Formula -> Antecedents -> Goal -> P Proof-        -- p : PVar s -> b-        redantimp' p (PVar s) b l g = redantimpatom p s b l g-        -- p : (c & d) -> b-        redantimp' p (Conj cs) b l g = do-            x <- newSym "x"-            let imp = foldr (:->) b cs-            gp <- redant1 (A (Var x) imp) l g-            subst (curryt (length cs) p) x gp-        -- p : (c | d) -> b-        redantimp' p (Disj ds) b l g = do-            vs <- mapM (const (newSym "d")) ds-            gp <- redant0 (zipWith (\ v (_, d) -> A (Var v) (d :-> b)) vs ds ++ l) g-            foldM (\ r (i, v, (cd, _)) -> subst (inj cd i p) v r) gp (zip3 [0..] vs ds)-        -- p : (c -> d) -> b-        redantimp' p (c :-> d) b l g = redantimpimp p c d b l g--        redantimpimp :: Term -> Formula -> Formula -> Formula -> Antecedents -> Goal -> P Proof-        redantimpimp f b c d a g =-            wrapM "redantimpimp" (b,c,d,a,g) $-            redantimpimp' f b c d a g--        -- Reduce a double implication antecedent-        redantimpimp' :: Term -> Formula -> Formula -> Formula -> Antecedents -> Goal -> P Proof-        -- next clause exploits ~(C->D) <=> (~~C & ~D)-        -- which isn't helpful when D = false-        redantimpimp' p c d (Disj []) l g | d /= false = do-            x <- newSym "x"-            y <- newSym "y"-            gp <- redantimpimp (Var x) c false false (A (Var y) (d :-> false) : l) g-            cImpDImpFalse x y p gp-        -- p : (c -> d) -> b-        redantimpimp' p c d b l g = redant more l atomImps (addNestImp (NestImp p c d b) nestImps) atoms g--        -- Reduce an atomic implication-        redantimpatom :: Term -> Symbol -> Formula -> Antecedents -> Goal -> P Proof-        redantimpatom p s b l g =-            wrapM "redantimpatom" (s,b,l,g) $-            redantimpatom' p s b l g--        redantimpatom' :: Term -> Symbol -> Formula -> Antecedents -> Goal -> P Proof-        redantimpatom' p s b l g = -          do-            a <- cutSearch more $ many (findAtoms s atoms)-            x <- newSym "x"-            gp <- redant1 (A (Var x) b) l g-            mtrace "redantimpatom: LLL" $-             subst (applyAtom p a) x gp-          `mplus`-            (mtrace "redantimpatom: RRR" $-             redant more l (insert atomImps (AtomImp s [A p b])) nestImps atoms g)-{--            let ps = wrap "redantimpatom findAtoms" atoms $ findAtoms s atoms-            in  if not (null ps) then do-                    a <- cutSearch more $ many ps-                    x <- newSym "x"-                    gp <- redant1 (A (Var x) b) l g-                    mtrace "redantimpatom: LLL" $-                     subst (applyAtom p a) x gp-                else-                    mtrace "redantimpatom: RRR" $-                     redant more l (insert atomImps (AtomImp s [A p b])) nestImps atoms g--}-        -- Reduce the goal, with all antecedents already being classified-        redsucc :: Goal -> P Proof-        redsucc g =-            wrapM "redsucc" (g, atomImps, nestImps, atoms) $-            redsucc' g--        redsucc' :: Goal -> P Proof-        redsucc' a@(PVar s) =-            (cutSearch more $ many (findAtoms s atoms))-          `mplus`-            -- The posin check is an optimization.  It gets a little slower without the test.-            (if posin s atomImps nestImps then-                redsucc_choice a-            else-                none)-        redsucc' (Conj cs) = do-            ps <- mapM redsucc cs-            return $ applys (Ctuple (length cs)) ps-        -- next clause deals with succedent (A v B) by pushing the-        -- non-determinism into the treatment of implication on the left-        redsucc' (Disj ds) = do-            s1 <- newSym "_"-            let v = PVar s1-            redant0 [ A (Cinj cd i) $ d :-> v | (i, (cd, d)) <- zip [0..] ds ] v-        redsucc' (a :-> b) = do-            s <- newSym "x"-            p <- redant1 (A (Var s) a) [] b-            return $ Lam s p--        -- Now we have the hard part; maybe lots of formulae -        -- of form (C->D)->B  in nestImps to choose from!-        -- Which one to take first? We user the order heuristic.-        redsucc_choice :: Goal -> P Proof-        redsucc_choice g =-            wrapM "redsucc_choice" g $-            redsucc_choice' g--        redsucc_choice' :: Goal -> P Proof-        redsucc_choice' g = do-            let ordImps = order nestImps g atomImps-            (NestImp p c d b, restImps) <- -                mtrace ("redsucc_choice: order=" ++ show ordImps) $-                select ordImps-            x <- newSym "x"-            z <- newSym "z"-            qz <- redant more [A (Var z) $ d :-> b] atomImps restImps atoms (c :-> d)-            gp <- redant more [A (Var x) b] atomImps restImps atoms g-            subst (applyImp p (Lam z qz)) x gp--posin :: Symbol -> AtomImps -> NestImps -> Bool-posin g atomImps nestImps = posin1 g atomImps || posin2 g [ (a :-> b) :-> c | NestImp _ a b c <- nestImps ]--posin1 :: Symbol -> AtomImps -> Bool-posin1 g atomImps = any (\ (AtomImp _ bs) -> posin2 g [ b | A _ b <- bs]) atomImps--posin2 :: Symbol -> [Formula] -> Bool-posin2 g bs = any (posin3 g) bs--posin3 :: Symbol -> Formula -> Bool-posin3 g (Disj as) = all (posin3 g) (map snd as)-posin3 g (Conj as) = any (posin3 g) as-posin3 g (_ :-> b) = posin3 g b-posin3 s (PVar s') = s == s'--cutSearch :: MoreSolutions -> P a -> P a-cutSearch False p = atMostOne p-cutSearch True p = p-----------------------------
− scripts/Djinn/LJTFormula.hs
@@ -1,103 +0,0 @@------ Copyright (c) 2005 Lennart Augustsson--- See LICENSE for licensing details.----module LJTFormula(Symbol(..), Formula(..), (<->), (&), (|:), fnot, false, true,-        ConsDesc(..),-        Term(..), applys, freeVars-        ) where-import Data.List(union, (\\))--infixr 2 :->-infix  2 <->-infixl 3 |:-infixl 4 &--newtype Symbol = Symbol String-     deriving (Eq, Ord)--instance Show Symbol where-    show (Symbol s) = s--data ConsDesc = ConsDesc String Int     -- name and arity-     deriving (Eq, Ord, Show)--data Formula-        = Conj [Formula]-        | Disj [(ConsDesc, Formula)]-        | Formula :-> Formula-        | PVar Symbol-     deriving (Eq, Ord)--(<->) :: Formula -> Formula -> Formula-x <-> y = (x:->y) & (y:->x)--(&) :: Formula -> Formula -> Formula-x & y = Conj [x, y]--(|:) :: Formula -> Formula -> Formula-x |: y = Disj [((ConsDesc "Left" 1), x), ((ConsDesc "Right" 1), y)]--fnot :: Formula -> Formula-fnot x = x :-> false--false :: Formula-false = Disj []--true :: Formula-true = Conj []---- Show formulae the LJT way-instance Show Formula where-    showsPrec _ (Conj []) = showString "true"-    showsPrec _ (Conj [c]) = showParen True $ showString "&" . showsPrec 0 c-    showsPrec p (Conj cs) =-        showParen (p>40) $ loop cs-          where loop [f] = showsPrec 41 f-                loop (f : fs) = showsPrec 41 f . showString " & " . loop fs-                loop [] = error "showsPrec Conj"-    showsPrec _ (Disj []) = showString "false"-    showsPrec _ (Disj [(_,c)]) = showParen True $ showString "|" . showsPrec 0 c-    showsPrec p (Disj ds) =-        showParen (p>30) $ loop ds-          where loop [(_,f)] = showsPrec 31 f-                loop ((_,f) : fs) = showsPrec 31 f . showString " v " . loop fs-                loop [] = error "showsPrec Disj"-    showsPrec _ (f1 :-> Disj []) =-        showString "~" . showsPrec 100 f1-    showsPrec p (f1 :-> f2) =-        showParen (p>20) $ showsPrec 21 f1 . showString " -> " . showsPrec 20 f2-    showsPrec p (PVar s) = showsPrec p s----------------------------------data Term-        = Var Symbol-        | Lam Symbol Term-        | Apply Term Term-        | Ctuple Int-        | Csplit Int-        | Cinj ConsDesc Int-        | Ccases [ConsDesc]-        | Xsel Int Int Term             --- XXX just temporary by MJ-    deriving (Eq, Ord)--instance Show Term where-    showsPrec p (Var s) = showsPrec p s-    showsPrec p (Lam s e) = showParen (p > 0) $ showString "\\" . showsPrec 0 s . showString "." . showsPrec 0 e-    showsPrec p (Apply f a) = showParen (p > 1) $ showsPrec 1 f . showString " " . showsPrec 2 a-    showsPrec _ (Cinj _ i) = showString $ "Inj" ++ show i-    showsPrec _ (Ctuple i) = showString $ "Tuple" ++ show i-    showsPrec _ (Csplit n) = showString $ "split" ++ show n-    showsPrec _ (Ccases cds) = showString $ "cases" ++ show (length cds)-    showsPrec p (Xsel i n e) = showParen (p > 0) $ showString ("sel_" ++ show i ++ "_" ++ show n) . showString " " . showsPrec 2 e--applys :: Term -> [Term] -> Term-applys f as = foldl Apply f as--freeVars :: Term -> [Symbol]-freeVars (Var s) = [s]-freeVars (Lam s e) = freeVars e \\ [s]-freeVars (Apply f a) = freeVars f `union` freeVars a-freeVars (Xsel _ _ e) = freeVars e-freeVars _ = []
− scripts/Djinn/LJTParse.hs
@@ -1,98 +0,0 @@------ Copyright (c) 2005 Lennart Augustsson--- See LICENSE for licensing details.----module LJTParse(parseFormula, parseLJT) where-import Data.Char(isAlphaNum)-import Text.ParserCombinators.ReadP(ReadP, (+++), char, sepBy1, readP_to_S, skipSpaces, munch1, many)-import LJTFormula--parseFormula :: String -> Formula-parseFormula = parser pTop--parseLJT :: String -> Formula-parseLJT = parser pLJT--parser :: (Show a) => ReadP a -> String -> a-parser p s =-    let ess = readP_to_S p (removeComments s)-    in  case filter (null . snd) ess of-        [(e, "")] -> e-        _ -> error ("bad parse: " ++ show ess)--removeComments :: String -> String-removeComments "" = ""-removeComments ('%':cs) = skip cs-  where skip "" = ""-        skip s@('\n':_) = removeComments s-        skip (_:s) = skip s-removeComments (c:cs) = c : removeComments cs--pTop :: ReadP Formula-pTop = do-   f <- pFormula-   skipSpaces-   return f--pLJT :: ReadP Formula-pLJT = do-   schar 'f'-   f <- pFormula-   schar '.'-   skipSpaces-   return f--pFormula :: ReadP Formula-pFormula = do-   f1 <- pDisjuction-   ods <- many (do o <- pArrow; d <- pDisjuction; return (o, d))-   let (op, f2) = foldr (\ (no, d) (oo, r) -> (no, d `oo` r)) (const, undefined) ods-   return $ f1 `op` f2--pArrow :: ReadP (Formula -> Formula -> Formula)-pArrow =-   (do schar '-'; char '>'; return (:->))-   +++-   (do schar '<'; char '-'; char '>'; return (<->))--pDisjuction :: ReadP Formula-pDisjuction = do-   fs <- sepBy1 pConjunction (schar 'v')-   return $ foldl1 (|:) fs--pConjunction :: ReadP Formula-pConjunction = do-   fs <- sepBy1 pAtomic (schar '&')-   return $ foldl1 (&) fs--pAtomic :: ReadP Formula-pAtomic = pNegation +++ pParen pFormula +++ pVar--pNegation :: ReadP Formula-pNegation = do-    schar '~'-    f <- pAtomic-    return $ fnot f--pVar :: ReadP Formula-pVar = do-    skipSpaces-    cs <- munch1 isAlphaNum-    case cs of-        "false" -> return false-        "true" -> return true-        _ -> return $ PVar $ Symbol cs--pParen :: ReadP a -> ReadP a-pParen p = do-    schar '('-    e <- p-    schar ')'-    return e--schar :: Char -> ReadP ()-schar c = do-    skipSpaces-    char c-    return ()-
− scripts/Djinn/MJ.hs
@@ -1,326 +0,0 @@-module MJ(module LJTFormula, provable, prove, buildGraph) where---import Monad-import Control.Monad.State-import Data.List((\\), partition, nubBy, sort)-import qualified Data.Set as S-import qualified Data.Map as M-import Data.Map(Map, (!), empty, insert, member, assocs, filterWithKey)-import Data.Map(toList, size)-import Data.Queue as Q--import Util(mapFst)-import MonadBFS-import Poly-import LJTFormula--import Debug.Trace-mtrace :: String -> a -> a-mtrace a x = if debug then trace ("*** " ++ a) x else x-debug :: Bool-debug = False-------------------------------------- Our Proof monad, P, a monad with state and multiple results--type P a = StateT Integer BFS a--nextInt :: P Integer-nextInt = do-   i <- get-   put (i+1)-   return i--none :: P a-none = lift mzero--many :: [a] -> P a-many xs = lift $ msum $ map return xs--wrap :: P a -> P a-wrap (StateT f) = StateT $ \ s -> mwrap (f s)---runP :: P a -> [a]-runP pa = runBFS $ evalStateT pa 0--{----runForest :: Forest a -> [a]-runForest' fr = run [fr]-  where run [] = []-        run (Forest xs : q) =-            mtrace ("Q " ++ show q) $-            [x | Tip x <- xs] ++ -            run (q ++ [ f | Fork f <- xs])--}------------------------------------- Generate a new unique variable-newSym :: String -> P Symbol-newSym pre = do-   i <- nextInt-   return $ Symbol $ pre ++ show i----------------------------------provable :: Formula -> Bool-provable = not . null . prove False []-prove :: Bool -> [(Symbol, Formula)] -> Formula -> [Term]-prove more as f = runP $ proveP more as f--data M-    = Semi V Ms-    | VLam V M-    | In ConsDesc Int M-    | Tuple [M]---    | WLam W M---    | PairQ T M-    deriving (Show)--infixr 5 :::-data Ms-    = Nil-    | M ::: Ms-    | When [ConsDesc] [(V,M)]-    | Sel Int Int Ms---    | Apq T Ms---    | Spl W V M-    deriving (Show)--data V = V Symbol-    deriving (Show)----data W = W Symbol---    deriving (Show)----data T = T---    deriving (Show)----------------------------------proveP :: Bool -> [(Symbol, Formula)] -> Formula -> P Term-proveP _ env f = do-    let s = initialSequent (map snd env) f-        g = buildGraph s-        vcs = countSequents g s-        g' = pruneGraph g vcs-    () <- mtrace (unlines ("---------" : show f : show (size g) : map show (toList g))) $ return ()---    () <- trace (unlines (show f : show (size g) : map show vcs)) $ return ()-    () <- mtrace (unlines ("---------" : show f : show (lookup (SVar s) vcs) : show (size g') : map show (toList g'))) $ return ()-    if size g' == 0 then-        none-     else do-        m <- unfold (recGraph s g') (mapFst V env)-        let t = theta m-        insertSplit t--collectSels :: Term -> [Term]-collectSels (Lam _ t) = collectSels t-collectSels (Apply f a) = collectSels f ++ collectSels a-collectSels e@(Xsel _ _ b) = collectSels b ++ [e]-collectSels _ = []--insertSplit :: Term -> P Term-insertSplit t = do-    let sels = nubBy (\ (Xsel _ _ e) (Xsel _ _ e') -> e == e') $ collectSels t-        selTbl = [ (e, n, freeVars e) | Xsel _ n e <- sels ]-        ins :: [(Term, Int, [Symbol])] -> Map Term [Term] -> Term -> P Term-        ins  tbl  stbl (Lam s b) = do-                let tbl' = [ (e, n, fv \\ [s]) | (e, n, fv) <- tbl ]-                    (spls, tbl'') = partition (\ (_,_,fv) -> null fv) tbl'-                    mkSplit (f, sps) (e, n, _) = do-                        vars <- mapM (const (newSym "s")) [1..n]-                        let sps' = insert e (map Var vars) sps-                        e' <- ins tbl'' sps' e-                        let fun oe = Apply (Apply (Csplit n) (foldr Lam oe vars)) e'-                        return (f . fun, sps')-                (trfun, stbl') <- foldM mkSplit (id, stbl) spls-                e' <- ins tbl'' stbl' b-                return $ Lam s (trfun e')-        ins  tbl  stbl (Apply f a) = liftM2 Apply (ins tbl stbl f) (ins tbl stbl a)-        ins _tbl  stbl (Xsel i _ e) = --trace ("Xsel " ++ show (_tbl, stbl, i, e)) $-                return $ (stbl ! e) !! i-        ins _tbl _stbl e = return e---    () <- trace ("insertSplit " ++ show (t, selTbl)) $ return ()-    t' <- ins selTbl empty t-    if t == t' then-        return t-     else---      trace ("insertSplit recurses") $-        insertSplit t'-----------------------------------theta :: M -> Term-theta (Semi (V s) ms) = theta' (Var s) ms-theta (VLam (V s) m) = Lam s (theta m)-theta (In cd i m) = Apply (Cinj cd i) (theta m)-theta (Tuple ms) = foldl Apply (Ctuple (length ms)) (map theta ms)--theta' :: Term -> Ms -> Term-theta' a Nil = a-theta' a (m ::: ms) = theta' (Apply a (theta m)) ms-theta' a (When cds vms) = foldl Apply (Ccases cds) (a : [ Lam s $ theta m | (V s, m) <- vms ])-theta' a (Sel i n ms) = theta' (Xsel i n a) ms---  where sel = Apply (Csplit n) (foldr Lam (Var (xs!!i)) xs) where xs = [ Symbol ("_x" ++ show j) | j <- [0..n-1] ]----------------------------------type Context = [(V, Formula)]--addCtx :: V -> Formula -> Context -> Context-addCtx v f ctx = (v, f) : ctx---data Gamma = Gamma (S.Set Formula)-    deriving (Show, Eq, Ord)--addEnv :: Formula -> Gamma -> Gamma-addEnv f (Gamma fs) = Gamma $ S.insert f fs--envList :: Gamma -> [Formula]-envList (Gamma fs) = S.elems fs--data Sequent = S Gamma (Maybe Formula) Formula-    deriving (Show, Eq, Ord)--initialSequent :: [Formula] -> Formula -> Sequent-initialSequent g f = S (Gamma $ S.fromList g) Nothing f--data Rule = OrL [(ConsDesc, Formula)] | OrR ConsDesc Int | AndL Int Int -          | AndR | ImpL | ImpR Formula | Ax | Cont Formula-    deriving (Show, Eq, Ord)--data VP a = VP Rule [a]-    deriving (Show, Eq, Ord)--type Graph = Map Sequent [VP Sequent]--type GraphRec = Next-data Next = Next { unNext :: [VP Next] }--buildG :: Queue Sequent -> Graph -> Graph-buildG q g =-    case deQueue q of-    Nothing -> g-    Just (sq, q') ->-        let vps = getVPs sq ++ getVpCont sq-            g' = insert sq vps g-            (q'', g'') = foldr addSeq (q', g') [ s | VP _ ss <- vps, s <- ss ]-        in  buildG q'' g''-  where addSeq s o@(oq, og) = if member s og then o else (addToQueue oq s, insert s [] og)--        getVPs (S env (Just (Disj ds)) c) =-            [ VP (OrL ds) [ S (addEnv a env) Nothing c | (_, a) <- ds ] ]-        getVPs (S env (Just (Conj as)) b) =-            [ VP (AndL i (length as)) [S env (Just a) b] | (a, i) <- zip as [0..] ]-        getVPs (S env (Just (a :-> b)) c) =-            [ VP ImpL [S env Nothing a, S env (Just b) c] ]-        getVPs (S _env (Just x) x') | x == x' =-            [ VP Ax [] ]--        getVPs (S env Nothing (Disj ds)) =-            [ VP (OrR (fst (ds!!i)) i) [S env Nothing a] | ((_,a), i) <- zip ds [0..] ]-        getVPs (S env Nothing (Conj as)) =-            [ VP AndR [ S env Nothing a | a <- as ] ]-        getVPs (S env Nothing (a :-> b)) =-            [ VP (ImpR a) [ S (addEnv a env) Nothing b ] ]--        getVPs (S _ _ _) =-            [ ]--        getVpCont (S env Nothing b) =-            [ VP (Cont a) [S env (Just a) b] | a <- envList env ]-        getVpCont (S _ _ _) =-            [ ]-                --buildGraph :: Sequent -> Graph-buildGraph s = buildG (addToQueue emptyQueue s) empty---data SVar = SVar Sequent-    deriving (Eq, Ord, Show)--newtype TV = TV Int-    deriving (Eq, Ord)-instance Show TV where-    show (TV i) = "x" ++ show i--countSequents :: Graph -> Sequent -> [(SVar, Ninf)]---countSequents g s = solveEqnSystem $ buildEqns g (const Nothing) s-countSequents g s =-    let eqns = buildEqns g (const Nothing) s-        subst = [(v, TV i) | ((v, _), i) <- zip eqns [0..]] -        eqns' = zip (map snd subst) (map (substPolyVars subst . snd) eqns)-        sol = solveEqnSystem eqns'-    in  zip (map fst eqns) (map snd (sort sol))--buildEqns :: Graph -> (Sequent -> Maybe Ninf) -> Sequent -> EqnSystem SVar-buildEqns graph oracle seqnt = assocs $ build seqnt empty-  where build :: Sequent -> Map SVar (Poly SVar) -> Map SVar (Poly SVar)-        build s r =-            let sv = SVar s in-            if sv `member` r then-                r-            else case oracle s of-                 Just n -> insert sv (constp n) r-                 Nothing ->-                    let v = sum [ product [ var (SVar n) | n <- ns ] | VP _ ns <- graph!s ]-                        r' = insert sv v r-                        l = [ n | VP _ ns <- graph!s, n <- ns ]-                    in  foldr build r' l--pruneGraph :: Graph -> [(SVar, Ninf)] -> Graph-pruneGraph g vcs =-    let zset = S.fromList [ s | (SVar s, 0) <- vcs ]-        g' = filterWithKey (\ k _ -> not (S.member k zset)) g-        g'' = M.map (\ vps -> filter (\ (VP _ ns) -> not (any (`S.member` zset) ns)) vps) g'-    in  g''--recGraph :: Sequent -> Graph -> GraphRec-recGraph s g =-    let m :: M.Map Sequent GraphRec-        m = M.map (\ vps -> Next $ map (\ (VP r ss) -> VP r (map (m M.!) ss)) vps) g-    in  m M.! s----------------------------------unfold :: GraphRec -> Context -> P M-unfold graph context = unfoldM context graph-  where unfoldM  ctx s = wrap $ msum $ map (unfoldVPM  ctx) (unNext s)-        unfoldMs ctx s = wrap $ msum $ map (unfoldVPMs ctx) (unNext s)--        unfoldVPMs ctx (VP (OrL cfs) ns) = do-            vms <- zipWithM (\ n (_, a) -> do-                     x <- liftM V $ newSym "c"-                     m <- unfoldM (addCtx x a ctx) n-                     return (x, m)-                ) ns cfs-            return $ When (map fst cfs) vms-        unfoldVPMs ctx (VP (AndL i n) [s]) = do-            m <- unfoldMs ctx s-            return $ Sel i n m-        unfoldVPMs ctx (VP ImpL [sa, sc]) = do-            u <- unfoldM ctx sa-            l <- unfoldMs ctx sc-            return $ u ::: l-        unfoldVPMs _ctx (VP Ax []) =-            return Nil-        unfoldVPMs _ctx _vp = error $ "unfoldVPMs " -- ++ show vp--        unfoldVPM ctx (VP (OrR c i) [s]) = do-            u <- unfoldM ctx s-            return $ In c i u-        unfoldVPM ctx (VP AndR ns) = do-            ts <- mapM (unfoldM ctx) ns-            return $ Tuple ts-        unfoldVPM ctx (VP (ImpR a) [s]) = do-            x <- liftM V $ newSym "i"-            u <- unfoldM (addCtx x a ctx) s-            return $ VLam x u-        unfoldVPM ctx (VP (Cont ca) [s]) = do-            (x, _a) <- many $ filter ((== ca) . snd) ctx-            l <- unfoldMs ctx s-            return $ Semi x l-        -        unfoldVPM _ctx _vp = error $ "unfoldVPM " -- ++ show vp
− scripts/Djinn/MLJT.hs
@@ -1,30 +0,0 @@------ Copyright (c) 2005 Lennart Augustsson--- See LICENSE for licensing details.----import System.IO-import LJTParse-import MJ--main :: IO ()-main = do-    hSetBuffering stdout NoBuffering-    hSetBuffering stderr NoBuffering-    args <- getArgs-    file <--            case args of-                [a] -> readFile a-                _ -> hGetContents stdin-    let form = parseLJT file---      pr = provable form---      cpr = provable (fnot (fnot form))-        mpr = take 25 $ prove False [] form-    print form---    putStrLn $ "Classical " ++ show cpr---    putStrLn $ "Intuitionistic " ++ show pr---    putStrLn $ show mpr-    case mpr of-        [] -> return ()-        terms -> do-            putStrLn $ "proof : " ++ show form-            putStrLn $ unlines (map (("proof = " ++) . show) terms)
− scripts/Djinn/Makefile
@@ -1,48 +0,0 @@-BINDIR = /usr/local/bin-#-GHC = /usr/local/bin/ghc-GHCFLAGS = -Wall-#GHCFLAGS = -Wall -prof -auto-all -O2--.PHONY:all-all:	djinn--djinn:	*.hs-	${GHC} ${GHCFLAGS} --make Djinn.hs -o djinn--MLJT:	*.hs-	${GHC} ${GHCFLAGS} --make MLJT.hs -o MLJT--Help.hs:	verbose-help-	echo 'module Help where' > Help.hs-	echo 'verboseHelp :: String' >> Help.hs-	echo 'verboseHelp = "\' >> Help.hs-	sed -e 's/\\/\\\\/g' -e 's/"/\\"/' -e 's/^/\\/' -e 's/$$/\\n\\/' verbose-help >> Help.hs-	echo '\"' >> Help.hs--.PHONY:	check-check:	djinn-	./djinn examples > out-	diff out examples.out--.PHONY: test-test:	MLJT-	cd tests; ${MAKE}--.PHONY:	newversion-newversion:-	mv Djinn.hs Djinn.hs.old-	sed "s/20..-..-../`date +%Y-%m-%d`/" Djinn.hs.old > Djinn.hs--.PHONY:	dist-dist:-	darcs dist--.PHONY:	install-install:	djinn-	cp djinn $(BINDIR)--.PHONY: clean-clean:-	rm -f djinn MLJT a.out *.o *.hi *.old out */*.o-	cd tests; ${MAKE} clean
− scripts/Djinn/MonadBFS.hs
@@ -1,52 +0,0 @@-module MonadBFS(MonadBFS(..), BFS, runBFS) where-import Control.Monad--class MonadPlus m => MonadBFS m where-    mwrap :: m a -> m a--data Tree a = Tip a | Fork (BFS a)-    deriving (Show)-newtype BFS a = BFS { unBFS :: [Tree a] }-    deriving (Show)--instance Functor BFS where-    fmap f (BFS xs) = BFS $ map tmap xs-      where  tmap (Tip a) = Tip (f a)-             tmap (Fork x) = Fork (fmap f x)--instance Monad BFS where-    return a = BFS [Tip a]-    fs >>= f = fjoin $ fmap f fs--fjoin :: BFS (BFS a) -> BFS a-fjoin = BFS . concatMap tjoin . unBFS-  where tjoin (Tip x) = unBFS x-        tjoin (Fork x) = [Fork $ fjoin x]--instance MonadPlus BFS where-    mzero = BFS []-    BFS f1 `mplus` BFS f2 = BFS $  f1 ++ f2--instance MonadBFS BFS where-    mwrap x = BFS [Fork x]--type Q a = ([a],[a])-mtq :: Q a-mtq = ([], [])-enq :: [a] -> Q a -> Q a-enq as ([], []) = (reverse as, [])-enq as (f, r) = (f, as ++ r)-deq :: Q a -> Maybe (a, Q a)-deq ([], []) = Nothing-deq ([a], r) = Just (a, (reverse r, []))-deq (a:f, r) = Just (a, (f, r))-deq _ = error "deq"--runBFS :: BFS a -> [a]-runBFS fr = run (enq [fr] mtq)-  where run aq =-            case deq aq of-            Nothing -> []-            Just (BFS xs, q) ->-                [x | Tip x <- xs] ++ -                run (enq [ f | Fork f <- xs] q)
− scripts/Djinn/NEWS
@@ -1,8 +0,0 @@-New in 2005-12-13-  * Haskell data types are allowed-  * Output is sorted so the most "relevant" function comes first-  * Cyclic type definitions are detected and rejected--New in 2005-12-14-  * Minor bug fixes and improvements-  * Cabal support
− scripts/Djinn/Poly.hs
@@ -1,203 +0,0 @@-module Poly(Ninf, inf, ninfToN,-            Poly, var, constp, coeffsOf, mustBeConst, substPolyVars,-            EqnSystem, solveEqnSystem) where-import List(partition, sort)-import Util.Digraph(stronglyConnComp, SCC(..))-import Util(mapSnd, insert, makeSet)----------------------------------------------- The type naturals + infinity--data Ninf = I !Integer | Inf--inf :: Ninf-inf = Inf--ninfToN :: Ninf -> Maybe Integer-ninfToN Inf = Nothing-ninfToN (I i) = Just i--instance Show Ninf where-    showsPrec p (I i) = showsPrec p i-    showsPrec _ Inf = showString "inf"--instance Eq Ninf where-    I i == I j  =  i == j-    Inf == Inf  =  error "Ninf: Inf == Inf" --True       -- XXX?-    _   == _    = False--instance Ord Ninf where-    I i <= I j  =  i <= j-    I _ <= Inf  =  True-    _   <= _    =  False--instance Num Ninf where-    I i + I j  =  I (i + j)-    _   + _    =  Inf-    I i * I j  =  I (i * j)-    I 0 * Inf  =  I 0-    Inf * I 0  =  I 0-    _   * _    =  Inf-    negate _   = error "Ninf: negate"-    abs _   = error "Ninf: abs"-    signum _   = error "Ninf: signum"-    fromInteger i | i < 0 = error "Ninf: fromInteger"-                  | otherwise = I i------------------------------------------------ Polynomials over Ninf--- Parametrized over the variable type--data Poly a = P ![Summand a]            -- summands, sorted-    deriving (Eq, Ord)--data Summand a = S ![(a, Integer)] !Ninf        -- variables with their exponents and scalar factor, sorted-    deriving (Eq, Ord)--instance (Show a) => Show (Poly a) where-    showsPrec _ (P []) = showString "0"-    showsPrec _ (P ss) = mix (map showS ss) " + "-        where mix [] _ = error "Poly.mix"-              mix [x] _ = x-              mix (x:xs) m = x . showString m . mix xs m-              showS (S [] i) = showsPrec 0 i-              showS (S vs 1) = mix (map showV vs) "*"-              showS (S vs n) = mix (showsPrec 0 n : map showV vs) "*"-              showV (v, 1) = showsPrec 0 v-              showV (v, n) = showsPrec 0 v . showString "^" . showsPrec 0 n--mkS :: [(a, Integer)] -> Ninf -> Summand a-mkS ves Inf = S [(v,1) | (v,_) <- ves] Inf-mkS ves k = S ves k---- Make a polynomial that is just a variable-var :: a -> Poly a-var x = P [S [(x, 1)] 1]--constp :: Ninf -> Poly a-constp 0 = P []-constp i = P [S [] i]--isConstPoly :: Poly a -> Bool-isConstPoly (P []) = True-isConstPoly (P [S [] _]) = True-isConstPoly _ = False--instance (Show a, Ord a) => Num (Poly a) where-    P ss1 + P ss2 = P $ add ss1 ss2-    P ss1 * P ss2 = sum [ P [muls s1 s2] | s1 <- ss1, s2 <- ss2 ]-    negate _   = error "Poly: negate"-    abs _   = error "Poly: abs"-    signum _   = error "Poly: signum"-    fromInteger i | i < 0 = error "Poly: fromInteger"-                  | i == 0 = P []-                  | otherwise = P [S [] (fromInteger i)]--add :: (Ord a) => [Summand a] -> [Summand a] -> [Summand a]-add [] ss = ss-add ss [] = ss-add (s1@(S vs1 k1) : ss1) (s2@(S vs2 k2) : ss2) =-    case compare vs1 vs2 of-    LT -> s1 : add ss1 (s2:ss2)-    EQ -> mkS vs1 (k1 + k2) : add ss1 ss2-    GT -> s2 : add (s1:ss1) ss2--muls :: (Ord a) => Summand a -> Summand a -> Summand a-muls (S vs1 k1) (S vs2 k2) = mkS (merge vs1 vs2) (k1 * k2)-  where merge [] ys = ys-        merge xs [] = xs-        merge (x@(v1, e1):xs) (y@(v2, e2):ys) =-            case compare v1 v2 of-            LT -> x : merge xs (y:ys)-            EQ -> (v1, e1+e2) : merge xs ys-            GT -> y : merge (x:xs) ys---------- Return all the coefficints for a certain variable of--- a polynomial.  Returns (exponent, coefficient) list, sorted by exponent.--coeffsOf :: (Show a, Ord a) => a -> Poly a -> [(Integer, Poly a)]-coeffsOf x (P ss) = sort $ foldr coeff [] ss-  where coeff s@(S vs k) cs =-            case partition (\ (v, _) -> v == x) vs of-            ([(_, a)], vs') -> addCoeff a (P [S vs' k]) cs-            _ -> addCoeff 0 (P [s]) cs-        addCoeff a c [] = [(a, c)]-        addCoeff a c ((a', c'):cs) | a == a' = (a, c + c') : cs-        addCoeff a c (k:cs) = k : addCoeff a c cs--mustBeConst :: (Show a) => Poly a -> Ninf-mustBeConst (P []) = 0-mustBeConst (P [S [] k]) = k-mustBeConst p = error $ "Poly.mustBeConst: " ++ show p--getPolyVars :: (Ord a) => Poly a -> [a]-getPolyVars (P ss) = makeSet [ x | S vs _ <- ss, (x, _) <- vs ]--substPolyVars :: (Eq a) => [(a, b)] -> Poly a -> Poly b-substPolyVars ons (P ss) = P [ S [ (new v, e) | (v, e) <- ves ] k | S ves k <- ss ]-  where new v = maybe (error "substPolyVars") id $ lookup v ons----------------------------------------------- Find the least fixed point solution of an equation system--- There is always a solution because +, * are monotonic and--- Ninf is a complete lattice.--- Uses Zaionc's algorithm from--- "Fixpoint Technique for Counting Terms in Typed $lambda$-calculus",--- by Marek Zaionc.---- The equations are of the form---   x_1 = poly_1(x_1, ..., x_n)---   ...---   x_n = poly_n(x_1, ..., x_n)--type EqnSystem var = [(var, Poly var)]--solveEqnSystem :: (Ord var, Show var) => EqnSystem var -> [(var, Ninf)]-solveEqnSystem eqns =-    -- The definition could be  mapSnd mustBeConst $ solve eqns-    -- but this can be very slow.-    let groups = map flatten $ stronglyConnComp [ (eqn, v, getPolyVars rhs) | eqn@(v, rhs) <- eqns ]-                  where flatten (CyclicSCC es) = es-                        flatten (AcyclicSCC e) = [e]-        solveGroup :: (Ord var, Show var) => [(var, Ninf)] -> EqnSystem var -> [(var, Ninf)]-        solveGroup sols es =-            let newsols = mapSnd mustBeConst $ solve (mapSnd (evalPolyConst sols) es)-            in  foldr insert sols newsols-    in  foldl solveGroup [] groups--solve :: (Ord var, Show var) => EqnSystem var -> [(var, Poly var)]-solve [] = []-solve ((v,f):xfs) =-    let cs = coeffsOf v f-        a0 = getCoeff 0 cs-        a = sum [ ai | (i, ai) <- cs, i /= 0 ]-        g = a0 + a0 * a * constp inf-        xfs' = [ (y, evalPoly [(v, g)] p) | (y, p) <- xfs ]-        sol = solve xfs'-        x = evalPoly sol g-    in  (v, x) : sol--evalPoly :: (Ord var, Show var) => [(var, Poly var)] -> Poly var -> Poly var-evalPoly _ poly | isConstPoly poly = poly -- just a speedup-evalPoly vps poly = foldr eval1 poly vps-  where eval1 (v, p) q = sum [ c * p^e | (e, c) <- coeffsOf v q ]---- evalPolyConst is just a specialized version of evalConst when--- the values are constants.  It's also optimized a lot.-evalPolyConst :: (Ord var, Show var) => [(var, Ninf)] -> Poly var -> Poly var-evalPolyConst _ poly | isConstPoly poly = poly -- just a speedup--- Assume vps is sorted in the same order as vs.-evalPolyConst vcs (P ss) = P (concatMap evalS ss)-  where evalS (S ves k) = loop vcs ves [] k-        loop [] ves rves k = [mkS (reverse rves ++ ves) k]-        loop _  []  rves k = [mkS (reverse rves) k]-        loop ovps@((v,c) : vps) oves@(ve@(v',e) : ves) rves k =-            case v `compare` v' of-            LT -> loop vps oves rves k-            EQ -> if c == 0 then [] else loop vps ves rves (k * c^e)-            GT -> loop ovps ves (ve:rves) k--getCoeff :: (Ord a, Show a) => Integer -> [(Integer, Poly a)] -> Poly a-getCoeff i ips = maybe 0 id $ lookup i ips
− scripts/Djinn/REPL.hs
@@ -1,34 +0,0 @@------ Copyright (c) 2005 Lennart Augustsson--- See LICENSE for licensing details.----module REPL(REPL(..), repl) where-import qualified Control.Exception-import System.Console.Readline(readline, addHistory)--data REPL s = REPL {-    repl_init :: IO (String, s),                -- prompt and initial state-    repl_eval :: s -> String -> IO (Bool, s),           -- quit flag and new state-    repl_exit :: s -> IO ()-    }--repl :: REPL s -> IO ()-repl p = do-    (prompt, state) <- repl_init p-    let loop s = (do-            mline <- readline prompt-            case mline of-                Nothing -> loop s-                Just line -> do-                    (quit, s') <- repl_eval p s line-                    if quit then-                        repl_exit p s'-                     else do-                        addHistory line-                        loop s'-            ) `Control.Exception.catch` ( \ exc ->-                do-                    putStrLn $ "\nInterrupted (" ++ show exc ++ ")"-                    loop s-            )-    loop state
− scripts/Djinn/Setup.lhs
@@ -1,6 +0,0 @@-#!/usr/bin/runhaskell-> module Main where--> import Distribution.Simple--> main = defaultMain
− scripts/Djinn/TODO
@@ -1,8 +0,0 @@-Generate multiple function clauses instead of case?--Simplify proofs more:-  split where no variables used can be removed--Type check the proof terms against the formula.--Switch to Herbelin's LJT to generate all proofs?
− scripts/Djinn/Util.hs
@@ -1,20 +0,0 @@-module Util(mapFst, mapSnd, insert, makeSet) where-import Data.List(sort)--mapFst :: (a->b) -> [(a,c)] -> [(b, c)]-mapFst f xys = [ (f x, y) | (x, y) <- xys ]--mapSnd :: (a->b) -> [(c, a)] -> [(c, b)]-mapSnd f xys = [ (x, f y) | (x, y) <- xys ]--insert :: (Ord a) => a -> [a] -> [a]-insert a [] = [a]-insert a as@(a':_) | a < a' = a : as-insert a (a':as) = a' : insert a as--makeSet :: (Ord a) => [a] -> [a]-makeSet = remDup . sort-  where remDup [] = []-        remDup [x] = [x]-        remDup (x : xs@(x' : _)) | x == x' = remDup xs-        remDup (x : xs) = x : remDup xs
− scripts/Djinn/Util/Digraph.hs
@@ -1,393 +0,0 @@-{- |- -  Module      :  Util.Digraph-  Copyright   : --  Maintainer      : lib@galois.com-  Stability       : -  Portability     : -  -  Functional graph algorithms; code taken from King-  and Launchbury's POPL paper (via GHC sources.)--}-module Util.Digraph(--	-- At present the only one with a "nice" external interface-	stronglyConnComp, stronglyConnCompR, SCC(..),--	Graph, Vertex, -	graphFromEdges, buildG, transposeG, reverseE, outdegree, indegree,--	Tree(..), Forest,-	showTree, showForest,--	dfs, dff,-	topSort,-	components,-	scc,-	back, cross, forward,-	reachable, path,-	bcc--    ) where----------------------------------------------------------------------------------- A version of the graph algorithms described in:--- --- ``Lazy Depth-First Search and Linear Graph Algorithms in Haskell''---   by David King and John Launchbury--- --- Also included is some additional code for printing tree structures ...----------------------------------------------------------------------------------import Util.Sort ( sortLe ) -- merge sosrt--import Control.Monad.ST-import Data.Array.ST ( STArray, newArray, writeArray, readArray )---- std interfaces-import Data.Maybe-import Data.Array-import Data.List  ( (\\) )--{--%************************************************************************-%*									*-%*	External interface-%*									*-%************************************************************************--}--data SCC vertex = AcyclicSCC vertex-	        | CyclicSCC  [vertex] deriving Show--stronglyConnComp-	:: Ord key-	=> [(node, key, [key])]		-- The graph; its ok for the-					-- out-list to contain keys which arent-					-- a vertex key, they are ignored-	-> [SCC node]--stronglyConnComp edges1-  = map get_node (stronglyConnCompR edges1)-  where-    get_node (AcyclicSCC (n, _, _)) = AcyclicSCC n-    get_node (CyclicSCC triples)     = CyclicSCC [n | (n,_,_) <- triples]---- The "R" interface is used when you expect to apply SCC to--- the (some of) the result of SCC, so you dont want to lose the dependency info-stronglyConnCompR-	:: Ord key-	=> [(node, key, [key])]		-- The graph; its ok for the-					-- out-list to contain keys which arent-					-- a vertex key, they are ignored-	-> [SCC (node, key, [key])]--stronglyConnCompR [] = []  -- added to avoid creating empty array in graphFromEdges -- SOF-stronglyConnCompR edges1-  = map decode forest-  where-    (graph, vertex_fn) = graphFromEdges edges1-    forest	       = scc graph-    decode (Node v []) | mentions_itself v = CyclicSCC [vertex_fn v]-		       | otherwise	   = AcyclicSCC (vertex_fn v)-    decode other = CyclicSCC (dec other [])-		 where-		   dec (Node v ts) vs = vertex_fn v : foldr dec vs ts-    mentions_itself v = v `elem` (graph ! v)--{--%************************************************************************-%*									*-%*	Graphs-%*									*-%************************************************************************--}--type Vertex  = Int-type Table a = Array Vertex a-type Graph   = Table [Vertex]-type Bounds  = (Vertex, Vertex)-type Edge    = (Vertex, Vertex)---vertices :: Graph -> [Vertex]-vertices  = indices--edges    :: Graph -> [Edge]-edges g   = [ (v, w) | v <- vertices g, w <- g!v ]--mapT    :: (Vertex -> a -> b) -> Table a -> Table b-mapT f t = array (bounds t) [ (,) v (f v (t!v)) | v <- indices t ]--buildG :: Bounds -> [Edge] -> Graph-buildG bounds1 edges1-  = accumArray (flip (:)) [] bounds1 [(,) k v | (k,v) <- edges1]--transposeG  :: Graph -> Graph-transposeG g = buildG (bounds g) (reverseE g)--reverseE    :: Graph -> [Edge]-reverseE g   = [ (w, v) | (v, w) <- edges g ]--outdegree :: Graph -> Table Int-outdegree  = mapT numEdges-             where numEdges _ ws = length ws--indegree :: Graph -> Table Int-indegree  = outdegree . transposeG---graphFromEdges-	:: Ord key-	=> [(node, key, [key])]-	-> (Graph, Vertex -> (node, key, [key]))-graphFromEdges edgs-  = (graph, \v -> vertex_map ! v)-  where-    max_v      	    = length edgs - 1-    bounds1         = (0,max_v) :: (Vertex, Vertex)-    sorted_edges    = sortLe le edgs-      where-       (_,k1,_) `le` (_,k2,_) = case k1 `compare` k2 of { GT -> False; _other -> True }-    edges1	    = zipWith (,) [0..] sorted_edges--    graph	    = array bounds1 [(,) v (mapMaybe key_vertex ks) | (,) v (_,    _, ks) <- edges1]-    key_map	    = array bounds1 [(,) v k			       | (,) v (_,    k, _ ) <- edges1]-    vertex_map	    = array bounds1 edges1--    -- key_vertex :: key -> Maybe Vertex-    -- 	returns Nothing for non-interesting vertices-    key_vertex k   = find 0 max_v -		   where-		     find a b | a > b -			      = Nothing-		     find a b = case compare k (key_map ! mid) of-				   LT -> find a (mid-1)-				   EQ -> Just mid-				   GT -> find (mid+1) b-			      where-			 	mid = (a + b) `div` 2--{--%************************************************************************-%*									*-%*	Trees and forests-%*									*-%************************************************************************--}--data Tree a   = Node a (Forest a)-type Forest a = [Tree a]--mapTree              :: (a -> b) -> (Tree a -> Tree b)-mapTree f (Node x ts) = Node (f x) (map (mapTree f) ts)---instance Show a => Show (Tree a) where-  show t = showTree t--showTree :: Show a => Tree a -> String-showTree  = drawTree . mapTree show--showForest :: Show a => Forest a -> String-showForest  = unlines . map showTree--drawTree        :: Tree String -> String-drawTree         = unlines . draw- where-  draw (Node x ts) = grp this (space (length this)) (stLoop ts)-   where-       this          = s1 ++ x ++ " "-       space n       = take n (repeat ' ')--       stLoop []     = [""]-       stLoop [t]    = grp s2 "  " (draw t)-       stLoop (t:xs) = grp s3 s4 (draw t) ++ [s4] ++ rsLoop xs--       rsLoop []     = []-       rsLoop [t]    = grp s5 "  " (draw t)-       rsLoop (t:xs) = grp s6 s4 (draw t) ++ [s4] ++ rsLoop xs--       grp a   rst   = zipWith (++) (a:repeat rst)--       [s1,s2,s3,s4,s5,s6] = ["- ", "--", "-+", " |", " `", " +"]---{--%************************************************************************-%*									*-%*	Depth first search-%*									*-%************************************************************************--}----type Set s    = MutableArray s Vertex Bool-type Set s    = STArray s Vertex Bool--mkEmpty      :: Bounds -> ST s (Set s)-mkEmpty bnds  = newArray bnds False--contains     :: Set s -> Vertex -> ST s Bool-contains m v  = readArray m v--include      :: Set s -> Vertex -> ST s ()-include m v   = writeArray m v True---dff          :: Graph -> Forest Vertex-dff g         = dfs g (vertices g)--dfs          :: Graph -> [Vertex] -> Forest Vertex-dfs g vs      = prune (bounds g) (map (generate g) vs)--generate     :: Graph -> Vertex -> Tree Vertex-generate g v  = Node v (map (generate g) (g!v))--prune        :: Bounds -> Forest Vertex -> Forest Vertex-prune bnds ts = runST (mkEmpty bnds  >>= \m ->-                       chop m ts)--chop         :: Set s -> Forest Vertex -> ST s (Forest Vertex)-chop _ []     = return []-chop m (Node v ts : us)-              = contains m v >>= \visited ->-                if visited then-                  chop m us-                else-                  include m v >>= \_  ->-                  chop m ts   >>= \as ->-                  chop m us   >>= \bs ->-                  return (Node v as : bs)---{--%************************************************************************-%*									*-%*	Algorithms-%*									*-%************************************************************************--}----------------------------------------------------------------- Algorithm 1: depth first search numbering---------------------------------------------------------------preorder            :: Tree a -> [a]-preorder (Node a ts) = a : preorderF ts--preorderF           :: Forest a -> [a]-preorderF ts         = concat (map preorder ts)--{- UNUSED:-preOrd :: Graph -> [Vertex]-preOrd  = preorderF . dff--}--tabulate        :: Bounds -> [Vertex] -> Table Int-tabulate bnds vs = array bnds (zipWith (,) vs [1..])--preArr          :: Bounds -> Forest Vertex -> Table Int-preArr bnds      = tabulate bnds . preorderF------------------------------------------------------------------ Algorithm 2: topological sorting---------------------------------------------------------------postorder :: Tree a -> [a]-postorder (Node a ts) = postorderF ts ++ [a]--postorderF   :: Forest a -> [a]-postorderF ts = concat (map postorder ts)--postOrd      :: Graph -> [Vertex]-postOrd       = postorderF . dff--topSort      :: Graph -> [Vertex]-topSort       = reverse . postOrd------------------------------------------------------------------ Algorithm 3: connected components---------------------------------------------------------------components   :: Graph -> Forest Vertex-components    = dff . undirected--undirected   :: Graph -> Graph-undirected g  = buildG (bounds g) (edges g ++ reverseE g)------------------------------------------------------------------ Algorithm 4: strongly connected components---------------------------------------------------------------scc  :: Graph -> Forest Vertex-scc g = dfs g (reverse (postOrd (transposeG g)))------------------------------------------------------------------ Algorithm 5: Classifying edges---------------------------------------------------------------{- UNUSED:-tree              :: Bounds -> Forest Vertex -> Graph-tree bnds ts       = buildG bnds (concat (map flat ts))-		   where-		     flat (Node v rs) = [ (v, w) | Node w us <- ts ] ++-                    		        concat (map flat ts)---}--back              :: Graph -> Table Int -> Graph-back g post        = mapT select g- where select v ws = [ w | w <- ws, post!v < post!w ]--cross             :: Graph -> Table Int -> Table Int -> Graph-cross g pre post   = mapT select g- where select v ws = [ w | w <- ws, post!v > post!w, pre!v > pre!w ]--forward           :: Graph -> Graph -> Table Int -> Graph-forward g tree pre = mapT select g- where select v ws = [ w | w <- ws, pre!v < pre!w ] \\ tree!v------------------------------------------------------------------ Algorithm 6: Finding reachable vertices---------------------------------------------------------------reachable    :: Graph -> Vertex -> [Vertex]-reachable g v = preorderF (dfs g [v])--path         :: Graph -> Vertex -> Vertex -> Bool-path g v w    = w `elem` (reachable g v)----------------------------------------------------------------- Algorithm 7: Biconnected components----------------------------------------------------------------bcc :: Graph -> Forest [Vertex]-bcc g = (concat . map bicomps . map (label g dnum)) forest- where forest = dff g-       dnum   = preArr (bounds g) forest--label :: Graph -> Table Int -> Tree Vertex -> Tree (Vertex,Int,Int)-label g dnum (Node v ts) = Node (v,dnum!v,lv) us- where us = map (label g dnum) ts-       lv = minimum ([dnum!v] ++ [dnum!w | w <- g!v]-                     ++ [lu | Node (_, _, lu) _ <- us])--bicomps :: Tree (Vertex,Int,Int) -> Forest [Vertex]-bicomps (Node (v,_,_) ts)-      = [ Node (v:vs) us | (_, Node vs us) <- map collect ts]--collect :: Tree (Vertex,Int,Int) -> (Int, Tree [Vertex])-collect (Node (v,dv,lv) ts) = (lv, Node (v:vs) cs)- where collected = map collect ts-       vs = concat [ ws | (lw, Node ws _) <- collected, lw<dv]-       cs = concat [ if lw<dv then us else [Node (v:ws) us]-                        | (lw, Node ws us) <- collected ]-
− scripts/Djinn/Util/Sort.hs
@@ -1,110 +0,0 @@-{- Copyright (c) 2001,2002 Galois Connections, Inc.- -}-{- |- -  Module      :  Util.Sort-  Copyright   :  (c) Galois Connections 2001, 2002--  Maintainer      : lib@galois.com-  Stability       : -  Portability     : -  -  Extra sorting functions - copied from GHC compiler sources (util\/Util.lhs)--}-module Util.Sort where--sortLt :: (a -> a -> Bool) 		-- Less-than predicate-       -> [a] 				-- Input list-       -> [a]				-- Result list--sortLt lt l = qsort lt l []---- qsort is stable and does not concatenate.-qsort :: (a -> a -> Bool) -- Less-than predicate-      -> [a]		  -- xs, Input list-      -> [a]              -- r,  Concatenate this list to the sorted input list-      -> [a]		  -- Result = sort xs ++ r--qsort _  []     r = r-qsort _  [x]    r = x:r-qsort lt (x:xs) r = qpart lt x xs [] [] r---- qpart partitions and sorts the sublists--- rlt contains things less than x,--- rge contains the ones greater than or equal to x.--- Both have equal elements reversed with respect to the original list.--qpart :: (a -> a -> Bool) -> a -> [a] -> [a] -> [a] -> [a] -> [a]-qpart lt x [] rlt rge r =-    -- rlt and rge are in reverse order and must be sorted with an-    -- anti-stable sorting-    rqsort lt rlt (x : rqsort lt rge r)--qpart lt x (y:ys) rlt rge r =-    if lt y x then-	-- y < x-	qpart lt x ys (y:rlt) rge r-    else-	-- y >= x-	qpart lt x ys rlt (y:rge) r---- rqsort is as qsort but anti-stable, i.e. reverses equal elements-rqsort :: (a -> a -> Bool)    -- Less-than predicate-       -> [a]		      -- xs, Input list-       -> [a]		      -- r,  Concatenate this list to the sorted input-       -> [a]		      -- Result = sort xs ++ r-rqsort _ []      r = r-rqsort _ [x]     r = x:r-rqsort lt (x:xs) r = rqpart lt x xs [] [] r--rqpart :: (a -> a -> Bool) -> a -> [a] -> [a] -> [a] -> [a] -> [a]-rqpart lt x [] rle rgt r =-    qsort lt rle (x : qsort lt rgt r)--rqpart lt x (y:ys) rle rgt r =-    if lt x y then-	-- y > x-	rqpart lt x ys rle (y:rgt) r-    else-	-- y <= x-	rqpart lt x ys (y:rle) rgt r--sortLe :: (a->a->Bool) -> [a] -> [a]-sortLe le = generalNaturalMergeSort le--mergeSort, naturalMergeSort :: Ord a => [a] -> [a]-mergeSort = generalMergeSort (<=)-naturalMergeSort = generalNaturalMergeSort (<=)--generalMergeSort :: (a->a->Bool) -> [a] -> [a]-generalMergeSort _ [] = []-generalMergeSort p xs = (balancedFold (generalMerge p) . map (: [])) xs--generalMerge :: (a -> a -> Bool) -> [a] -> [a] -> [a]-generalMerge _ xs [] = xs-generalMerge _ [] ys = ys-generalMerge p (x:xs) (y:ys) | x `p` y   = x : generalMerge p xs (y:ys)-			     | otherwise = y : generalMerge p (x:xs) ys--balancedFold :: (a -> a -> a) -> [a] -> a-balancedFold _ [] = error "Util.Sort.balancedFold: can't reduce an empty list"-balancedFold _ [x] = x-balancedFold f l  = balancedFold f (balancedFold' f l)--balancedFold' :: (a -> a -> a) -> [a] -> [a]-balancedFold' f (x:y:xs) = f x y : balancedFold' f xs-balancedFold' _ xs = xs--generalNaturalMergeSort :: (a -> a -> Bool) -> [a] -> [a]-generalNaturalMergeSort _   [] = []-generalNaturalMergeSort prd rs = (balancedFold (generalMerge prd) . group prd) rs-  where-   --group :: (a -> a -> Bool) -> [a] -> [[a]]-   group _ []     = []-   group p (l:ls) = group' ls l l (l:)-    where-     group' []     _     _     s  = [s []]-     group' (x:xs) x_min x_max s -	| not (x `p` x_max) = group' xs x_min x (s . (x :)) -	| x `p` x_min       = group' xs x x_max ((x :) . s) -	| otherwise         = s [] : group' xs x x (x :) 
− scripts/Djinn/djinn.cabal
@@ -1,15 +0,0 @@-Name:		Djinn-Version:	2005.12.14-License:	BSD3-License-file:	LICENSE-Author:		Lennart Augustsson-Category:	source-tools-Homepage:	http://www.augustsson.net/Darcs/Djinn/-Synopsis:	A haskell proof generator-Build-Depends:	base, haskell98, mtl, readline--Executable:	djinn-Main-Is:	Djinn.hs-Other-modules:	Help, LJTParse, HCheck,  LJT, MLJT-		HTypes, LJTFormula, REPL,-		Util.Digraph, Util.Sort
− scripts/Djinn/examples
@@ -1,87 +0,0 @@------ Copyright (c) 2005 Lennart Augustsson--- See LICENSE for licensing details.----:set +s--- Some Prelude functions-id ? a -> a;-const ? a -> b -> a;-fst ? (a, b) -> a;-snd ? (a, b) -> b;-swap ? (a, b) -> (b, a);-compose ? (b->c) -> (a->b) -> (a->c)-curry ? ((a,b) -> c) -> (a -> b -> c)-uncurry ? (a -> b -> c) -> ((a,b) -> c)-flip ? (a -> b -> c) -> b -> a -> c-undefined ? a-either ? (a -> b) -> (c -> b) -> Either a c -> b-maybe ? b -> (a -> b) -> Maybe a -> b---- continuation monad operations-type C a = (a -> Ans) -> Ans-returnC ? a -> C a-bindC ? C a -> (a -> C b) -> C b-callCC ? ((a -> C b) -> C a) -> C a---- state monad operations-type S s a = (s -> (a, s))-returnS ? a -> S s a-bindS ? S s a -> (a -> S s b) -> S s b---- The data type versions-data SD s a = SD (s -> (a, s))-returnSD ? a -> SD s a-bindSD ? SD s a -> (a -> SD s b) -> SD s b--data CD r a = CD ((a -> r) -> r)-returnCD ? a -> CD r a-bindCD ? CD r a -> (a -> CD r b) -> CD r b-callCCD ? ((a -> CD r b) -> CD r a) -> CD r a--returnM ? a -> Maybe a-bindM ? Maybe a -> (a -> Maybe b) -> Maybe b-handleM ? Maybe a -> Maybe a -> Maybe a---- State and exceptions-type SX s a = s -> (s, Maybe a)-returnSX ? a -> SX s a-bindSX ? SX s a -> (a -> SX s b) -> SX s b--- Note that handleSX gets totally munged :)-handleSX ? SX s a -> SX s a -> SX s a---- Some boolean function-bool1 ? Bool-> Bool-bool2 ? Bool-> Bool -> Bool--rot ? (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,ab,ac) -> (z,aa,ab,ac,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y)--f ? Either () (a, b) -> Either () (b, a)--:set +m-f ? a->a->a-f ? Either () (a, b) -> Either () (b, a)-f ? a->(a->a)->a-f ? (a->a)->a->a--:set -m-:set -s--- CPS of deMorgans laws-f1 ? ((((a, b) -> f) -> Either (a -> f) (b -> f)) -> f) -> f;-f2 ? ((Either (a -> f) (b -> f) -> (a, b) -> f) -> f) -> f;--:set +s---- Lists with recursion through Fix (uninterpreted)-data ListN a as = Nil | Cons a as-type List a = Fix (ListN a)-out :: List a -> ListN a (List a)-in :: ListN a (List a) -> List a--- Strangely, it finds the null function-null ? List a -> Bool-:d out-:d in---- Some fun with negation-exm ? Not (Not (Either a (Not a)))-foo ? Not (c -> d) -> (Not (Not c), Not d)-peirce ? Not (Not (((a->b)->a)->a))
− scripts/Djinn/examples.out
@@ -1,154 +0,0 @@-id :: a -> a-id a = a-const :: a -> b -> a-const a _ = a-fst :: (a, b) -> a-fst (a, _) = a-snd :: (a, b) -> b-snd (_, a) = a-swap :: (a, b) -> (b, a)-swap (a, b) = (b, a)-compose :: (b -> c) -> (a -> b) -> a -> c-compose a b c = a (b c)-curry :: ((a, b) -> c) -> a -> b -> c-curry a b c = a (b, c)-uncurry :: (a -> b -> c) -> (a, b) -> c-uncurry a (b, c) = a b c-flip :: (a -> b -> c) -> b -> a -> c-flip a b c = a c b--- undefined cannot be realized.-either :: (a -> b) -> (c -> b) -> Either a c -> b-either a b c =-         case c of-         Left d -> a d-         Right e -> b e-maybe :: b -> (a -> b) -> Maybe a -> b-maybe a b c =-        case c of-        Nothing -> a-        Just d -> b d-returnC :: a -> C a-returnC a b = b a-bindC :: C a -> (a -> C b) -> C b-bindC a b c = a (\ d -> b d c)-callCC :: ((a -> C b) -> C a) -> C a-callCC a b = a (\ c _ -> b c) b-returnS :: a -> S s a-returnS a b = (a, b)-bindS :: S s a -> (a -> S s b) -> S s b-bindS a b c =-        case a c of-        (d, e) -> b d e-returnSD :: a -> SD s a-returnSD a = SD (\ b -> (a, b))-bindSD :: SD s a -> (a -> SD s b) -> SD s b-bindSD a b =-         case a of-         SD c -> SD (\ d ->-                     case c d of-                     (e, f) -> case b e of-                               SD g -> g f)-returnCD :: a -> CD r a-returnCD a = CD (\ b -> b a)-bindCD :: CD r a -> (a -> CD r b) -> CD r b-bindCD a b =-         case a of-         CD c -> CD (\ d ->-                     c (\ e ->-                        case b e of-                        CD f -> f d))-callCCD :: ((a -> CD r b) -> CD r a) -> CD r a-callCCD a =-          CD (\ b ->-              case a (\ c -> CD (\ _ -> b c)) of-              CD d -> d b)-returnM :: a -> Maybe a-returnM = Just-bindM :: Maybe a -> (a -> Maybe b) -> Maybe b-bindM a b =-        case a of-        Nothing -> Nothing-        Just c -> b c-handleM :: Maybe a -> Maybe a -> Maybe a-handleM a b =-          case a of-          Nothing -> b-          Just c -> Just c-returnSX :: a -> SX s a-returnSX a b = (b, Just a)-bindSX :: SX s a -> (a -> SX s b) -> SX s b-bindSX a b c =-         case a c of-         (d, e) -> case e of-                   Nothing -> (d, Nothing)-                   Just f -> b f d-handleSX :: SX s a -> SX s a -> SX s a-handleSX a b c =-           case b c of-           (d, e) -> case e of-                     Nothing -> a c-                     Just f -> case a c of-                               (g, h) -> case h of-                                         Nothing -> (g, Just f)-                                         Just i -> (d, Just i)-bool1 :: Bool -> Bool-bool1 a = a-bool2 :: Bool -> Bool -> Bool-bool2 a b =-        case a of-        False -> b-        True -> False-rot :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac) -> (z, aa, ab, ac, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y)-rot (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u,-     v, w, x, y, z, x1, x2, x3) =-      (z, x1, x2, x3, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q,-       r, s, t, u, v, w, x, y)-f :: Either () (a, b) -> Either () (b, a)-f a =-    case a of-    Left _ -> Left ()-    Right (b, c) -> Right (c, b)-f :: a -> a -> a-f _ a = a--- or-f a _ = a-f :: Either () (a, b) -> Either () (b, a)-f a =-    case a of-    Left _ -> Left ()-    Right (b, c) -> Right (c, b)--- or-f _ = Left ()-f :: a -> (a -> a) -> a-f a b = b a--- or-f a _ = a-f :: (a -> a) -> a -> a-f a = a--- or-f a b = a b--- or-f _ a = a-f1 :: ((((a, b) -> f) -> Either (a -> f) (b -> f)) -> f) -> f-f1 a =-     a (\ b ->-        Right (\ _ ->-               a (\ _ -> Right (\ c -> a (\ _ -> Left (\ d -> b (d, c)))))))-f2 :: ((Either (a -> f) (b -> f) -> (a, b) -> f) -> f) -> f-f2 a =-     a (\ b ->-        case b of-        Left c -> \ (d, _) -> c d-        Right e -> \ (_, f) -> e f)-null :: List a -> Bool-null a =-       case out a of-       Nil -> False-       Cons _ _ -> True-exm :: Not (Not (Either a (Not a)))-exm a = void (a (Right (\ b -> a (Left b))))-foo :: Not (c -> d) -> (Not (Not c), Not d)-foo a = (\ b -> void (a (\ c -> void (b c))), \ d -> a (\ _ -> d))-peirce :: Not (Not (((a -> b) -> a) -> a))-peirce a =-         void (a (\ b -> void (a (\ _ -> b (\ c -> void (a (\ _ -> c)))))))
− scripts/Djinn/ljt.p
@@ -1,417 +0,0 @@-% Intuitionistic theorem prover-% Written by Roy Dyckhoff, Summer 1991    -% Modified to use the LWB syntax  Summer 1997-% and simplified in various ways...--% runs under SICSTUS Prolog-% for other Prologs, maybe a different way of timing is required-% and maybe "append" needs to be defined explicitly.--% Incorporates the Vorob'ev-Hudelmaier etc calculus (I call it LJT)-% See RD's paper in JSL 1992:-% "Contraction-free calculi for intuitionistic logic"--% Torkel Franzen (at SICS) gave me good ideas about how to write this -% properly, taking account of first-argument indexing--% and I learnt a trick or two from Neil Tennant's "Autologic" book.--%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-% A is formula to prove-% TIme is in millisec--time( A,  Time ) :--    statistics(runtime, _),-    prove(A,Result),-    statistics(runtime, [ _, Time]),-    write(Result), -    nl. --prove( A,true ) :- -    provable(A), !.-prove( _,false ). --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%---%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-% SYNTAX-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%--% Use of LWB concrete syntax from June 97-% provided that one uses bracketmode "full"--:- op(425,  fy,  ~ ).-:- op(450, yfx,  & ).    % left associative-:- op(450, yfx,  v ).    % left associative-:- op(500, xfx,  <-> ).  % non associative-:- op(500, xfy,  ->).    % right associative  -                %%% WARNING, this overwrites Prolog's ->---% e.g.  formulae look like  ((a & b ) -> c) -> false, ~(~( a v (~a)))-% where a,b,c etc are atoms--% all atoms MUST be of form pv(X) for some X--% inspv(A, NewA) ensures that NewA has all the atoms with pv/1 as an -% explicit constructor, making the clauses more deterministic-% it also eliminates definitions of <-> and ~.--inspv( A v B, A1 v B1) :- !, -  inspv(A, A1), inspv(B, B1).-inspv( A & B, A1 & B1) :- !, -  inspv(A, A1), inspv(B, B1).-inspv( A -> B, A1 -> B1) :- !, -  inspv(A, A1), inspv(B, B1).-inspv( A<->B, (A1->B1)&(B1->A1) ) :- !,   % removes definition of <->-  inspv(A, A1), inspv(B, B1).-inspv( ~A , A1->false ) :- !,       % removes definitions of negation-  inspv(A, A1).-inspv( true, true ) :- !.           % true not an atom -inspv( false, false ) :- !.         % false not an atom --inspv( A, pv(A) ).                  % when all else fails --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-% UTILITIES-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-% AtomImps is an ordered list PL of pairs (A,LA) where LA is a list-% and A is an atom-% lists PL are ordered by @< relation on first conponent-% LA is list of formulae B -% No attempt to avoid repetition in LA.--% meaning( []) = true-% meaning( ( Pair | Rest|) = meaning( Pair) & meaning(Rest)-% meaning( (A,Bs) ) = A -> conjunction(Bs)--% extract( AtomImps, A,  Bs, RestImps)-% called with AtomImps and A known (an Atom); returns Bs and RestImps-% thus  meaning(AtomImps) ==  meaning(A->Bs) & meaning(RestImps)--extract( [ ], _, [], []).-extract( [  Pair | AtomImps], A,  Bs, [ Pair | RestImps ] ) :- -  Pair = (A1, _), -  A @> A1,                                    % still worth looking-  extract(AtomImps, A, Bs, RestImps). -extract( [ Pair | RestImps], A,  Bs, RestImps) :--  Pair = (A, Bs).                             % Found it-extract( AtomImps, A,  Bs, AtomImps) :--  AtomImps = [ (A1, _) | _ ],  -  A @< A1,                                    % gone too far-  Bs = [].                           % Not there, return empty list--% insert( AtomImps, A -> B, AtomImps1)-% where A is an atom--insert( [], A -> B,  [ (A, [B]) ] ).-insert( [  Pair  |AtomImps], A -> B, [ Pair | AtomImps2 ] ) :--   Pair = (A1, _), -   A @> A1,   % Needs to go further in-   insert(AtomImps, A -> B, AtomImps2).-insert( [ (A, Bs)|AtomImps], A -> B, [(A,[B|Bs])|AtomImps] ).  % Here!-insert( [ Pair   |AtomImps], A -> B, [(A,[B]),Pair|AtomImps] ) :--   Pair = (A1, _), -   A @< A1.   % Needs to go before Pair--% ===============================--heuristics(on).  % change this to switch heuristics off...---order(  NestImps, _, _,  NestImps ) :- -  heuristics(off). --order(  NestImps, G, AtomImps,  NewNestImps ) :- -  heuristics(on), -  order0(  NestImps, G, AtomImps, [], NewNestImps).--order0( [], G, AtomImps, Bads, Bads1 ) :--  order1(Bads, G, AtomImps, [], Bads1).--order0( [ A | In], G, AtomImps, Bads,  [ A | Out] ) :--  good_for(A, G), -  !, -  order0( In, G, AtomImps, Bads , Out ).--order0( [ A | In], G, AtomImps, Bads,  Out ) :--  % not so good_for(A, G),-  order0( In, G, AtomImps, [ A | Bads], Out ).--good_for(_ -> false, _).-good_for(_ -> G, G).---order1( [], _, _, NewBads, NewBads ).--order1( [ A | In], G, AtomImps, NewBads, [ A | Out] ) :--  nice_for(A, G, AtomImps), -  !,-  order1(In, G, AtomImps, NewBads, Out).--order1( [ A | In], G, AtomImps, NewBads,  Out ) :--  % not so nice_for(A, G, AtomImps),-  order1( In, G, AtomImps, [ A | NewBads], Out ).--nice_for( _ -> pv(B) , G, AtomImps) :--  on( (pv(B), Bs), AtomImps), -  !, % no need to see if pv(B) is in NestImps in any other way-  (on( G, Bs); on(false, Bs)),-  !.--% ===============================--% select(List, Element, Remainder)-% ALL the backtracking is done here....--select( [X | L], X,  L).-select( [Y | L], X,  [Y | M]) :- -  select(L,X, M).---on( A, [ A | _ ] ).-on( A, [ _ | Rest] ) :- on(A, Rest).--on1( A, L ) :--   on(A, L),-  !.--on3( A, L, Res ) :--  on1(A, L),-  !, -  Res = true.-on3(_, _, false).- -/*-append( [], L, L ).-append( [ H | T], L, [ H | TL] ) :--	append(T, L, TL).--*/--%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-% MAIN PROGRAM-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%--% ==============================-provable( A ) :-    -  inspv(A, A1), -  redant1(A1 -> false, [], [], [], [], false),   % check classical provability-  redsucc(A1, [], [], []), !.--% ==============================- --% AtomImps is a list as described above-% NestImps is a list of formulae of the form (C->D)->B-% where if B = false, then D=false-% Atoms is a list of atoms--redant( [ ], AtomImps, NestImps, Atoms,  G) :--  redsucc(G, AtomImps, NestImps, Atoms).-redant( [ A | L], AtomImps, NestImps, Atoms, G) :-  -  redant1(A, L, AtomImps, NestImps, Atoms, G).--% --------------------------------redant1(  pv(A), _, _, _, _, pv(A)  ).--redant1( pv(A),  L, AtomImps, NestImps, Atoms, G) :- -   \+ G = pv(A) ,-  extract(AtomImps, pv(A), Bs, RestAtomImps), -  append(Bs, L, BsL), -  redant( BsL, RestAtomImps, NestImps, [pv(A)|Atoms], G ).--redant1( true, L, AtomImps, NestImps, Atoms, G ) :- -  redant( L, AtomImps, NestImps, Atoms, G).--redant1( false, _, _, _, _, _ ).--redant1( A & B, L, AtomImps, NestImps, Atoms, G ) :- -  redant1(A, [B | L], AtomImps, NestImps, Atoms, G).--redant1( A v B, L, AtomImps, NestImps, Atoms, G ) :- -  redant1( A, L, AtomImps, NestImps, Atoms,  G),-  redant1( B, L, AtomImps, NestImps, Atoms,  G).--redant1( A -> B, L, AtomImps, NestImps, Atoms, G ) :--  redantimp(A, B, L, AtomImps, NestImps, Atoms, G). ---% -------------------------------% redantimp--redantimp( pv(A), B, L, AtomImps, NestImps, Atoms, G ) :--  redantimpatom( pv(A), B, L, AtomImps, NestImps, Atoms, G).--redantimp( true, B, L, AtomImps, NestImps, Atoms, G ) :- -  redant1(B, L, AtomImps, NestImps, Atoms, G).--redantimp( false, _, L, AtomImps, NestImps, Atoms, G ) :- -  redant( L, AtomImps, NestImps, Atoms, G).--redantimp( C & D, B, L, AtomImps, NestImps, Atoms,  G ) :-  -  redantimp(C, (D -> B), L, AtomImps, NestImps, Atoms, G).--redantimp( C v D, B, L, AtomImps, NestImps, Atoms,  G ) :--  redantimp(C, B, [ (D -> B) | L ], AtomImps, NestImps, Atoms, G).--redantimp( C -> D, B, L, AtomImps, NestImps, Atoms,  G ) :--  redantimpimp( C, D, B, L, AtomImps, NestImps, Atoms, G).--% -------------------------------% redantimpimp --redantimpimp( C, false, false, L, AtomImps, NestImps, Atoms, G ) :- -  redant(L, AtomImps, [ (C -> false) -> false | NestImps ], Atoms, G).--    % next clause exploits ~(C->D) eq  (~~C & ~D)-    % which isn't helpful when D = false--redantimpimp( C, D, false, L, AtomImps, NestImps, Atoms, G) :--  \+(D = false),  -  redantimpimp( C, false, false,  [ D -> false | L] , AtomImps, NestImps, Atoms, G).--redantimpimp( C, D, B, L, AtomImps, NestImps, Atoms, G) :- -  \+ (B = false), -  redant(L, AtomImps, [ (C -> D) -> B | NestImps ], Atoms, G).--%------------------------------------------------%redantimpatom--redantimpatom( A, B, L, AtomImps, NestImps, Atoms, G ) :--  on3(A, Atoms, Res), -  redantimpatomres(Res,  A, B, L, AtomImps, NestImps, Atoms, G ).--redantimpatomres( true, _, B, L, AtomImps, NestImps, Atoms, G ) :- -  % A is on Atoms: reduce using rule ->L1-  redant1(B, L, AtomImps, NestImps, Atoms, G).--redantimpatomres( false,  A, B, L, AtomImps, NestImps, Atoms, G ) :--  % A is atom but not on Atoms, add A->B to AtomImps-  insert(AtomImps, A -> B, AtomImps1), -  redant(L, AtomImps1, NestImps, Atoms, G).---%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-% redsucc(Goal, AtomImps, NestImps, Atoms)--% All conjunctions or disjunctions on the left -% have been reduced before 'redsucc' is called--%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%--redsucc( true, _, _, _  ).--redsucc( false, AtomImps, NestImps, Atoms ) :- -     % we could now use a classical decision procedure, but -     % present data structures are organised differently...-  inconsis( AtomImps, NestImps, Atoms).--redsucc( pv(A), AtomImps, NestImps, Atoms ) :- -  on3(pv(A), Atoms,  Res),-  redsuccpv(Res,  pv(A), AtomImps, NestImps, Atoms).--redsuccpv( true, _, _, _, _ ).-redsuccpv(false,  pv(A), AtomImps, NestImps, Atoms ) :--  posin(pv(A), AtomImps, NestImps),                     % MAJOR PRUNING HERE-  redsucc_choice( pv(A), AtomImps, NestImps, Atoms).--redsucc( A & B, AtomImps, NestImps, Atoms ) :- -  redsucc(A, AtomImps, NestImps, Atoms),-  redsucc(B, AtomImps, NestImps, Atoms).--  % next clause deals with succedent (A v B) by pushing the-  % non-determinism into the treatment of implication on the left-  % note trick for creating a new variable--redsucc( A v B, AtomImps, NestImps, Atoms ) :- -  P = pv( (AtomImps, NestImps, Atoms) ),-  redant( [ A -> P, B -> P ], AtomImps, NestImps, Atoms, P). --redsucc( A -> B, AtomImps, NestImps, Atoms ) :--  redant1(A, [], AtomImps, NestImps, Atoms, B).--%------------------------------------------% Now we have the hard part; maybe lots of formulae -% of form (C->D)->B  in Imps to choose from!-% Which one to take first? We need some heuristics:-% first we take those where the minor premiss is trivial;-% next we take those where B is an atom and B->G is in AtomImps-% next we try to choose B a disjunction (even if G isn't)-% finally we choose the others--redsucc_choice( G, AtomImps, NestImps, Atoms ) :- -  order(NestImps, G, AtomImps,  OrdImps),-  select(OrdImps, ( (C->D) -> B), Rest),-  redant3(C, D, B, AtomImps, Rest, Atoms, G),-  !.  % MAIN CUT here--redant3( C, D, B, AtomImps, NestImps, Atoms, G ) :--  redant1(D->B, [], AtomImps, NestImps, Atoms, C->D), %  Left Premiss-  !,  % CUT here; rule is semi-invertible-   redant1(B, [], AtomImps, NestImps, Atoms, G).            % Right Premiss--%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-% Pruning utilities--posin( G, AtomImps, NestImps ) :--  % G occurs strictly positively on LHS-  posin1( AtomImps, G ), -  ! ;-  posin2( NestImps, G ). --posin1( [ ( _, Bs ) | AtomImps ], G ) :--  posin2( Bs, G ), -  ! ; -  posin1( AtomImps, G ).-  -posin2( [ B | Bs ], G ) :--  posin3( B,G ), -  ! ;-  posin2( Bs, G).--posin3( A v B,G ) :--  posin3(A,G), -  posin3(B,G).--posin3( A & B,G ) :--  posin3(A,G), -  ! ;-  posin3(B,G).--posin3( _ -> B, G ) :--  posin3(B,G).- -posin3( false, _ ).-posin3( G, G ).--%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-% Classical ATP utility--% from now on, goal is always = false...--inconsis( AtomImps, [ (C->D)->B |  Rest], Atoms ) :-  -  inconsis1(B, AtomImps, Rest, Atoms, C, D).--inconsis1( false, AtomImps, NestImps, Atoms, C, _  ) :- -    % _ = false by construction, so can be ignored.-    % uses ((( C -> false) -> false) -> false) eq (C -> false)-  redant1( C, [], AtomImps, NestImps, Atoms, false).  --inconsis1( B, AtomImps, NestImps, Atoms, C, D ) :- -  \+ B = false,  % so can exploit ~((C->D)->B) eq  ~~(C->D) & ~B-  redantimpimp( C, D, false, [], AtomImps, NestImps, Atoms, false ), -  redant1( B, [], AtomImps, NestImps, Atoms, false ).---%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%--%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-% END-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-- -   
− scripts/Djinn/tests/Makefile
@@ -1,22 +0,0 @@-.PHONY: all-all:	fast--Test:	Test.hs ../*.hs-	ghc -O2 -i.. --make Test.hs -o Test--.PHONY: time-time:	Test-	uname -a >> test.time-	time ./Test testfiles.fast > /dev/null 2>> test.time--.PHONY: fast-fast:	Test testfiles.fast-	./Test testfiles.fast--.PHONY: slow-slow:	Test testfiles.all-	./Test testfiles.all--.PHONY: clean-clean:-	rm -f Test *.o *.hi
− scripts/Djinn/tests/Test.hs
@@ -1,36 +0,0 @@-import System-import LJT-import LJTParse--main :: IO ()-main = do-    args <- getArgs-    let testfiles =-	    case args of-		[a] -> a-		_ -> "testfiles.all"-    putStrLn $ "Tests start: " ++ testfiles-    stests <- readFile testfiles-    let tests :: [(Bool, String)]-        tests = read stests-    ns <- mapM runTest tests-    let fails = sum ns-    if fails == 0 then-        putStrLn "Tests done!"-     else do-	putStrLn $ "Tests done, " ++ show fails ++ " failed"-	exitWith (ExitFailure 1)--runTest :: (Bool, String) -> IO Int-runTest (expected, fileName) = do-    putStrLn $ "file " ++ fileName ++ "..."-    file <- readFile fileName-    let f = parseLJT file-	e = provable f-    if e == expected then do-	putStrLn "   passed"-	return 0-     else do-	putStrLn "   failed"-	putStrLn $ show (e, f)-	return 1
− scripts/Djinn/tests/ljt/con_n.002.ljt
@@ -1,50 +0,0 @@-%-------------------------------------------------------------------------------% File     : con_n2 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Formulae requiring many contractions-% Version  : Especial.-%            Problem formulation : Inuit. Invalid.   Size 2-% English  : ((&&_{i=1..N} p(i) | ~~p(1)=>f | ||_{i=2..N} (p(i)=>f))=>f)=>f--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [Fr88]  T. Franzen, Algorithmic Aspects of intuitionistic-%                    propositional logic, SICS Research Report R87010B,-%                    1988.-%          : [Fr89]  T. Franzen, Algorithmic Aspects of intuitionistic-%                    propositional logic II, SICS Research Report-%                    R-89/89006, 1989.-% Source   : [Dyc97]-% Names    : --% Status   : Non-Theorem-% Rating   : 0.60 v 1.0-% Syntax   : Number of formulae    :    2 (   1 unit)-%            Number of atoms       :    8 (   0 equality)-%            Maximal formula depth :    7 (   4 average)-%            Number of connectives :    8 (   2 ~  ;   2  |;   1  &)-%                                         (   0 <=>;   3 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    3 (   3 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : "proof in LJ needs n contractions" [Dyc97]-%          : tptp2X -f ljt con_n.002.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( ( ( p1 & p2 ) v ( ( ( ~ ( ~ p1 ) ) -> f ) v ( p2 -> f ) ) ) -> f ))--  ->--% conjecture_name, conjecture.-(f)--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/con_n.006.ljt
@@ -1,50 +0,0 @@-%-------------------------------------------------------------------------------% File     : con_n6 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Formulae requiring many contractions-% Version  : Especial.-%            Problem formulation : Inuit. Invalid.   Size 6-% English  : ((&&_{i=1..N} p(i) | ~~p(1)=>f | ||_{i=2..N} (p(i)=>f))=>f)=>f--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [Fr88]  T. Franzen, Algorithmic Aspects of intuitionistic-%                    propositional logic, SICS Research Report R87010B,-%                    1988.-%          : [Fr89]  T. Franzen, Algorithmic Aspects of intuitionistic-%                    propositional logic II, SICS Research Report-%                    R-89/89006, 1989.-% Source   : [Dyc97]-% Names    : --% Status   : Non-Theorem-% Rating   : 0.60 v 1.0-% Syntax   : Number of formulae    :    2 (   1 unit)-%            Number of atoms       :   20 (   0 equality)-%            Maximal formula depth :    9 (   5 average)-%            Number of connectives :   20 (   2 ~  ;   6  |;   5  &)-%                                         (   0 <=>;   7 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    7 (   7 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : "proof in LJ needs n contractions" [Dyc97]-%          : tptp2X -f ljt con_n.006.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( ( ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & p6 ) ) ) ) ) v ( ( ( ~ ( ~ p1 ) ) -> f ) v ( ( p2 -> f ) v ( ( p3 -> f ) v ( ( p4 -> f ) v ( ( p5 -> f ) v ( p6 -> f ) ) ) ) ) ) ) -> f ))--  ->--% conjecture_name, conjecture.-(f)--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/con_n.010.ljt
@@ -1,50 +0,0 @@-%-------------------------------------------------------------------------------% File     : con_n10 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Formulae requiring many contractions-% Version  : Especial.-%            Problem formulation : Inuit. Invalid.   Size 10-% English  : ((&&_{i=1..N} p(i) | ~~p(1)=>f | ||_{i=2..N} (p(i)=>f))=>f)=>f--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [Fr88]  T. Franzen, Algorithmic Aspects of intuitionistic-%                    propositional logic, SICS Research Report R87010B,-%                    1988.-%          : [Fr89]  T. Franzen, Algorithmic Aspects of intuitionistic-%                    propositional logic II, SICS Research Report-%                    R-89/89006, 1989.-% Source   : [Dyc97]-% Names    : --% Status   : Non-Theorem-% Rating   : 0.60 v 1.0-% Syntax   : Number of formulae    :    2 (   1 unit)-%            Number of atoms       :   32 (   0 equality)-%            Maximal formula depth :   13 (   7 average)-%            Number of connectives :   32 (   2 ~  ;  10  |;   9  &)-%                                         (   0 <=>;  11 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :   11 (  11 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : "proof in LJ needs n contractions" [Dyc97]-%          : tptp2X -f ljt con_n.010.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( ( ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & p10 ) ) ) ) ) ) ) ) ) v ( ( ( ~ ( ~ p1 ) ) -> f ) v ( ( p2 -> f ) v ( ( p3 -> f ) v ( ( p4 -> f ) v ( ( p5 -> f ) v ( ( p6 -> f ) v ( ( p7 -> f ) v ( ( p8 -> f ) v ( ( p9 -> f ) v ( p10 -> f ) ) ) ) ) ) ) ) ) ) ) -> f ))--  ->--% conjecture_name, conjecture.-(f)--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/con_p.002.ljt
@@ -1,50 +0,0 @@-%-------------------------------------------------------------------------------% File     : con_p2 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Formulae requiring many contractions-% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 2-% English  : (((&&_{i=1..N} p(i)) | (||_{i=1..N} (p(i)=>f)))=>f)=>f--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [Fr88]  T. Franzen, Algorithmic Aspects of intuitionistic-%                    propositional logic, SICS Research Report R87010B,-%                    1988.-%          : [Fr89]  T. Franzen, Algorithmic Aspects of intuitionistic-%                    propositional logic II, SICS Research Report-%                    R-89/89006, 1989.-% Source   : [Dyc97]-% Names    : --% Status   : Theorem-% Rating   : 0.20 v 1.0-% Syntax   : Number of formulae    :    2 (   1 unit)-%            Number of atoms       :    8 (   0 equality)-%            Maximal formula depth :    5 (   3 average)-%            Number of connectives :    6 (   0 ~  ;   2  |;   1  &)-%                                         (   0 <=>;   3 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    3 (   3 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : "proof in LJ needs n contractions" [Dyc97]-%          : tptp2X -f ljt con_p.002.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( ( ( p1 & p2 ) v ( ( p1 -> f ) v ( p2 -> f ) ) ) -> f ))--  ->--% conjecture_name, conjecture.-(f)--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/con_p.006.ljt
@@ -1,50 +0,0 @@-%-------------------------------------------------------------------------------% File     : con_p6 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Formulae requiring many contractions-% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 6-% English  : (((&&_{i=1..N} p(i)) | (||_{i=1..N} (p(i)=>f)))=>f)=>f--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [Fr88]  T. Franzen, Algorithmic Aspects of intuitionistic-%                    propositional logic, SICS Research Report R87010B,-%                    1988.-%          : [Fr89]  T. Franzen, Algorithmic Aspects of intuitionistic-%                    propositional logic II, SICS Research Report-%                    R-89/89006, 1989.-% Source   : [Dyc97]-% Names    : --% Status   : Theorem-% Rating   : 0.60 v 1.0-% Syntax   : Number of formulae    :    2 (   1 unit)-%            Number of atoms       :   20 (   0 equality)-%            Maximal formula depth :    9 (   5 average)-%            Number of connectives :   18 (   0 ~  ;   6  |;   5  &)-%                                         (   0 <=>;   7 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    7 (   7 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : "proof in LJ needs n contractions" [Dyc97]-%          : tptp2X -f ljt con_p.006.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( ( ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & p6 ) ) ) ) ) v ( ( p1 -> f ) v ( ( p2 -> f ) v ( ( p3 -> f ) v ( ( p4 -> f ) v ( ( p5 -> f ) v ( p6 -> f ) ) ) ) ) ) ) -> f ))--  ->--% conjecture_name, conjecture.-(f)--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/con_p.010.ljt
@@ -1,50 +0,0 @@-%-------------------------------------------------------------------------------% File     : con_p10 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Formulae requiring many contractions-% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 10-% English  : (((&&_{i=1..N} p(i)) | (||_{i=1..N} (p(i)=>f)))=>f)=>f--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [Fr88]  T. Franzen, Algorithmic Aspects of intuitionistic-%                    propositional logic, SICS Research Report R87010B,-%                    1988.-%          : [Fr89]  T. Franzen, Algorithmic Aspects of intuitionistic-%                    propositional logic II, SICS Research Report-%                    R-89/89006, 1989.-% Source   : [Dyc97]-% Names    : --% Status   : Theorem-% Rating   : 0.60 v 1.0-% Syntax   : Number of formulae    :    2 (   1 unit)-%            Number of atoms       :   32 (   0 equality)-%            Maximal formula depth :   13 (   7 average)-%            Number of connectives :   30 (   0 ~  ;  10  |;   9  &)-%                                         (   0 <=>;  11 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :   11 (  11 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : "proof in LJ needs n contractions" [Dyc97]-%          : tptp2X -f ljt con_p.010.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( ( ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & p10 ) ) ) ) ) ) ) ) ) v ( ( p1 -> f ) v ( ( p2 -> f ) v ( ( p3 -> f ) v ( ( p4 -> f ) v ( ( p5 -> f ) v ( ( p6 -> f ) v ( ( p7 -> f ) v ( ( p8 -> f ) v ( ( p9 -> f ) v ( p10 -> f ) ) ) ) ) ) ) ) ) ) ) -> f ))--  ->--% conjecture_name, conjecture.-(f)--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/debruijn_n.002.ljt
@@ -1,65 +0,0 @@-%-------------------------------------------------------------------------------% File     : debruijn_n2 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : de Bruijn's example-% Version  : Especial.-%            Problem formulation : Inuit. Invalid.   Size 2-% English  : LHS(2*N) -> (p0 | RHS(2*N) | ~p0)-%            RHS(m) = &&_{i=1..m} p(i),-%            LHS(m) = &&_{i=1..m} ((p(i)<=>p(i+1)) => c(N))-%            where addition is computed modulo m, and with-%            c(N) = &&_{i=1..N} p(i)--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          :         "de Bruijn, N.: personal communication in about 1990."-% Source   : [Dyc97]-% Names    : --% Status   : Non-Theorem-% Rating   : 0.60 v 1.0-% Syntax   : Number of formulae    :    5 (   0 unit)-%            Number of atoms       :   30 (   0 equality)-%            Maximal formula depth :    6 (   5 average)-%            Number of connectives :   26 (   1 ~  ;   2  |;  15  &)-%                                         (   4 <=>;   4 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    5 (   5 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : "quite a tough exercise for students to prove by natural-%             deduction" [Dyc97]-%          : tptp2X -f ljt debruijn_n.002.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( ( p1 <-> p2 ) -> ( p1 & ( p2 & ( p3 & p4 ) ) ) ))-- & --% axiom2, axiom.-(( ( p2 <-> p3 ) -> ( p1 & ( p2 & ( p3 & p4 ) ) ) ))-- & --% axiom3, axiom.-(( ( p3 <-> p4 ) -> ( p1 & ( p2 & ( p3 & p4 ) ) ) ))-- & --% axiom4, axiom.-(( ( p4 <-> p1 ) -> ( p1 & ( p2 & ( p3 & p4 ) ) ) ))--  ->--% conjecture_name, conjecture.-(( p0 v ( ( p1 & ( p2 & ( p3 & p4 ) ) ) v ( ~ p0 ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/debruijn_n.006.ljt
@@ -1,105 +0,0 @@-%-------------------------------------------------------------------------------% File     : debruijn_n6 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : de Bruijn's example-% Version  : Especial.-%            Problem formulation : Inuit. Invalid.   Size 6-% English  : LHS(2*N) -> (p0 | RHS(2*N) | ~p0)-%            RHS(m) = &&_{i=1..m} p(i),-%            LHS(m) = &&_{i=1..m} ((p(i)<=>p(i+1)) => c(N))-%            where addition is computed modulo m, and with-%            c(N) = &&_{i=1..N} p(i)--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          :         "de Bruijn, N.: personal communication in about 1990."-% Source   : [Dyc97]-% Names    : --% Status   : Non-Theorem-% Rating   : 0.80 v 1.0-% Syntax   : Number of formulae    :   13 (   0 unit)-%            Number of atoms       :  182 (   0 equality)-%            Maximal formula depth :   14 (  13 average)-%            Number of connectives :  170 (   1 ~  ;   2  |; 143  &)-%                                         (  12 <=>;  12 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :   13 (  13 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : "quite a tough exercise for students to prove by natural-%             deduction" [Dyc97]-%          : tptp2X -f ljt debruijn_n.006.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( ( p1 <-> p2 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & p12 ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom2, axiom.-(( ( p2 <-> p3 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & p12 ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom3, axiom.-(( ( p3 <-> p4 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & p12 ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom4, axiom.-(( ( p4 <-> p5 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & p12 ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom5, axiom.-(( ( p5 <-> p6 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & p12 ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom6, axiom.-(( ( p6 <-> p7 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & p12 ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom7, axiom.-(( ( p7 <-> p8 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & p12 ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom8, axiom.-(( ( p8 <-> p9 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & p12 ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom9, axiom.-(( ( p9 <-> p10 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & p12 ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom10, axiom.-(( ( p10 <-> p11 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & p12 ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom11, axiom.-(( ( p11 <-> p12 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & p12 ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom12, axiom.-(( ( p12 <-> p1 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & p12 ) ) ) ) ) ) ) ) ) ) ) ))--  ->--% conjecture_name, conjecture.-(( p0 v ( ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & p12 ) ) ) ) ) ) ) ) ) ) ) v ( ~ p0 ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/debruijn_n.010.ljt
@@ -1,145 +0,0 @@-%-------------------------------------------------------------------------------% File     : debruijn_n10 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : de Bruijn's example-% Version  : Especial.-%            Problem formulation : Inuit. Invalid.   Size 10-% English  : LHS(2*N) -> (p0 | RHS(2*N) | ~p0)-%            RHS(m) = &&_{i=1..m} p(i),-%            LHS(m) = &&_{i=1..m} ((p(i)<=>p(i+1)) => c(N))-%            where addition is computed modulo m, and with-%            c(N) = &&_{i=1..N} p(i)--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          :         "de Bruijn, N.: personal communication in about 1990."-% Source   : [Dyc97]-% Names    : --% Status   : Non-Theorem-% Rating   : 1.00 v 1.0-% Syntax   : Number of formulae    :   21 (   0 unit)-%            Number of atoms       :  462 (   0 equality)-%            Maximal formula depth :   22 (  21 average)-%            Number of connectives :  442 (   1 ~  ;   2  |; 399  &)-%                                         (  20 <=>;  20 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :   21 (  21 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : "quite a tough exercise for students to prove by natural-%             deduction" [Dyc97]-%          : tptp2X -f ljt debruijn_n.010.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( ( p1 <-> p2 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom2, axiom.-(( ( p2 <-> p3 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom3, axiom.-(( ( p3 <-> p4 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom4, axiom.-(( ( p4 <-> p5 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom5, axiom.-(( ( p5 <-> p6 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom6, axiom.-(( ( p6 <-> p7 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom7, axiom.-(( ( p7 <-> p8 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom8, axiom.-(( ( p8 <-> p9 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom9, axiom.-(( ( p9 <-> p10 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom10, axiom.-(( ( p10 <-> p11 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom11, axiom.-(( ( p11 <-> p12 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom12, axiom.-(( ( p12 <-> p13 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom13, axiom.-(( ( p13 <-> p14 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom14, axiom.-(( ( p14 <-> p15 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom15, axiom.-(( ( p15 <-> p16 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom16, axiom.-(( ( p16 <-> p17 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom17, axiom.-(( ( p17 <-> p18 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom18, axiom.-(( ( p18 <-> p19 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom19, axiom.-(( ( p19 <-> p20 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom20, axiom.-(( ( p20 <-> p1 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))--  ->--% conjecture_name, conjecture.-(( p0 v ( ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & p20 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) v ( ~ p0 ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/debruijn_p.002.ljt
@@ -1,67 +0,0 @@-%-------------------------------------------------------------------------------% File     : debruijn_p2 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : de Bruijn's example-% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 2-% English  : LHS(2*N+1) => RHS(2*N+1) with---% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          :         "de Bruijn, N.: personal communication in about 1990."-% Source   : [Dyc97]-% Names    : --% Status   : Theorem-% Rating   : 0.60 v 1.0-% Syntax   : Number of formulae    :    6 (   0 unit)-%            Number of atoms       :   40 (   0 equality)-%            Maximal formula depth :    6 (   5 average)-%            Number of connectives :   34 (   0 ~  ;   0  |;  24  &)-%                                         (   5 <=>;   5 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    5 (   5 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : "quite a tough exercise for students to prove by natural-%             deduction" [Dyc97]-%          : tptp2X -f ljt debruijn_p.002.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( ( p1 <-> p2 ) -> ( p1 & ( p2 & ( p3 & ( p4 & p5 ) ) ) ) ))-- & --% axiom2, axiom.-(( ( p2 <-> p3 ) -> ( p1 & ( p2 & ( p3 & ( p4 & p5 ) ) ) ) ))-- & --% axiom3, axiom.-(( ( p3 <-> p4 ) -> ( p1 & ( p2 & ( p3 & ( p4 & p5 ) ) ) ) ))-- & --% axiom4, axiom.-(( ( p4 <-> p5 ) -> ( p1 & ( p2 & ( p3 & ( p4 & p5 ) ) ) ) ))-- & --% axiom5, axiom.-(( ( p5 <-> p1 ) -> ( p1 & ( p2 & ( p3 & ( p4 & p5 ) ) ) ) ))--  ->--% conjecture_name, conjecture.-(( p1 & ( p2 & ( p3 & ( p4 & p5 ) ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/debruijn_p.006.ljt
@@ -1,107 +0,0 @@-%-------------------------------------------------------------------------------% File     : debruijn_p6 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : de Bruijn's example-% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 6-% English  : LHS(2*N+1) => RHS(2*N+1) with---% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          :         "de Bruijn, N.: personal communication in about 1990."-% Source   : [Dyc97]-% Names    : --% Status   : Theorem-% Rating   : 0.60 v 1.0-% Syntax   : Number of formulae    :   14 (   0 unit)-%            Number of atoms       :  208 (   0 equality)-%            Maximal formula depth :   14 (  13 average)-%            Number of connectives :  194 (   0 ~  ;   0  |; 168  &)-%                                         (  13 <=>;  13 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :   13 (  13 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : "quite a tough exercise for students to prove by natural-%             deduction" [Dyc97]-%          : tptp2X -f ljt debruijn_p.006.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( ( p1 <-> p2 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & p13 ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom2, axiom.-(( ( p2 <-> p3 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & p13 ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom3, axiom.-(( ( p3 <-> p4 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & p13 ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom4, axiom.-(( ( p4 <-> p5 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & p13 ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom5, axiom.-(( ( p5 <-> p6 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & p13 ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom6, axiom.-(( ( p6 <-> p7 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & p13 ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom7, axiom.-(( ( p7 <-> p8 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & p13 ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom8, axiom.-(( ( p8 <-> p9 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & p13 ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom9, axiom.-(( ( p9 <-> p10 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & p13 ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom10, axiom.-(( ( p10 <-> p11 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & p13 ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom11, axiom.-(( ( p11 <-> p12 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & p13 ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom12, axiom.-(( ( p12 <-> p13 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & p13 ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom13, axiom.-(( ( p13 <-> p1 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & p13 ) ) ) ) ) ) ) ) ) ) ) ) ))--  ->--% conjecture_name, conjecture.-(( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & p13 ) ) ) ) ) ) ) ) ) ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/debruijn_p.010.ljt
@@ -1,147 +0,0 @@-%-------------------------------------------------------------------------------% File     : debruijn_p10 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : de Bruijn's example-% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 10-% English  : LHS(2*N+1) => RHS(2*N+1) with---% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          :         "de Bruijn, N.: personal communication in about 1990."-% Source   : [Dyc97]-% Names    : --% Status   : Theorem-% Rating   : 0.60 v 1.0-% Syntax   : Number of formulae    :   22 (   0 unit)-%            Number of atoms       :  504 (   0 equality)-%            Maximal formula depth :   22 (  21 average)-%            Number of connectives :  482 (   0 ~  ;   0  |; 440  &)-%                                         (  21 <=>;  21 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :   21 (  21 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : "quite a tough exercise for students to prove by natural-%             deduction" [Dyc97]-%          : tptp2X -f ljt debruijn_p.010.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( ( p1 <-> p2 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom2, axiom.-(( ( p2 <-> p3 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom3, axiom.-(( ( p3 <-> p4 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom4, axiom.-(( ( p4 <-> p5 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom5, axiom.-(( ( p5 <-> p6 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom6, axiom.-(( ( p6 <-> p7 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom7, axiom.-(( ( p7 <-> p8 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom8, axiom.-(( ( p8 <-> p9 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom9, axiom.-(( ( p9 <-> p10 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom10, axiom.-(( ( p10 <-> p11 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom11, axiom.-(( ( p11 <-> p12 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom12, axiom.-(( ( p12 <-> p13 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom13, axiom.-(( ( p13 <-> p14 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom14, axiom.-(( ( p14 <-> p15 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom15, axiom.-(( ( p15 <-> p16 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom16, axiom.-(( ( p16 <-> p17 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom17, axiom.-(( ( p17 <-> p18 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom18, axiom.-(( ( p18 <-> p19 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom19, axiom.-(( ( p19 <-> p20 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom20, axiom.-(( ( p20 <-> p21 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom21, axiom.-(( ( p21 <-> p1 ) -> ( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))--  ->--% conjecture_name, conjecture.-(( p1 & ( p2 & ( p3 & ( p4 & ( p5 & ( p6 & ( p7 & ( p8 & ( p9 & ( p10 & ( p11 & ( p12 & ( p13 & ( p14 & ( p15 & ( p16 & ( p17 & ( p18 & ( p19 & ( p20 & p21 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/equiv_n.002.ljt
@@ -1,41 +0,0 @@-%-------------------------------------------------------------------------------% File     : equiv_n2 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Equivalences-% Version  : Especial.-%            Problem formulation : Inuit. Invalid.   Size 2-% English  : (..(( ~~p(1) <=> p(2)) <=> p(3)) <=> .. <=> p(N))  <=>-%            (p(N) <=> ( p(N-1) <=> (.. (p(2) <=> p(1)) ) ))--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-% Source   : [Dyc97]-% Names    : --% Status   : Non-Theorem-% Rating   : 0.60 v 1.0-% Syntax   : Number of formulae    :    1 (   0 unit)-%            Number of atoms       :    4 (   0 equality)-%            Maximal formula depth :    5 (   5 average)-%            Number of connectives :    5 (   2 ~  ;   0  |;   0  &)-%                                         (   3 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    2 (   2 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : this formula is different to the equivalences formulated-%            in Pelletier 71 [Pel86], TPTP SYN007+1-%          : tptp2X -f ljt equiv_n.002.p -%--------------------------------------------------------------------------------f((--% conjecture_name, conjecture.-(( ( ( ~ ( ~ a1 ) ) <-> a2 ) <-> ( a2 <-> a1 ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/equiv_n.006.ljt
@@ -1,41 +0,0 @@-%-------------------------------------------------------------------------------% File     : equiv_n6 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Equivalences-% Version  : Especial.-%            Problem formulation : Inuit. Invalid.   Size 6-% English  : (..(( ~~p(1) <=> p(2)) <=> p(3)) <=> .. <=> p(N))  <=>-%            (p(N) <=> ( p(N-1) <=> (.. (p(2) <=> p(1)) ) ))--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-% Source   : [Dyc97]-% Names    : --% Status   : Non-Theorem-% Rating   : 0.60 v 1.0-% Syntax   : Number of formulae    :    1 (   0 unit)-%            Number of atoms       :   12 (   0 equality)-%            Maximal formula depth :    9 (   9 average)-%            Number of connectives :   13 (   2 ~  ;   0  |;   0  &)-%                                         (  11 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    6 (   6 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : this formula is different to the equivalences formulated-%            in Pelletier 71 [Pel86], TPTP SYN007+1-%          : tptp2X -f ljt equiv_n.006.p -%--------------------------------------------------------------------------------f((--% conjecture_name, conjecture.-(( ( ( ( ( ( ( ~ ( ~ a1 ) ) <-> a2 ) <-> a3 ) <-> a4 ) <-> a5 ) <-> a6 ) <-> ( a6 <-> ( a5 <-> ( a4 <-> ( a3 <-> ( a2 <-> a1 ) ) ) ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/equiv_n.010.ljt
@@ -1,41 +0,0 @@-%-------------------------------------------------------------------------------% File     : equiv_n10 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Equivalences-% Version  : Especial.-%            Problem formulation : Inuit. Invalid.   Size 10-% English  : (..(( ~~p(1) <=> p(2)) <=> p(3)) <=> .. <=> p(N))  <=>-%            (p(N) <=> ( p(N-1) <=> (.. (p(2) <=> p(1)) ) ))--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-% Source   : [Dyc97]-% Names    : --% Status   : Non-Theorem-% Rating   : 0.60 v 1.0-% Syntax   : Number of formulae    :    1 (   0 unit)-%            Number of atoms       :   20 (   0 equality)-%            Maximal formula depth :   13 (  13 average)-%            Number of connectives :   21 (   2 ~  ;   0  |;   0  &)-%                                         (  19 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :   10 (  10 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : this formula is different to the equivalences formulated-%            in Pelletier 71 [Pel86], TPTP SYN007+1-%          : tptp2X -f ljt equiv_n.010.p -%--------------------------------------------------------------------------------f((--% conjecture_name, conjecture.-(( ( ( ( ( ( ( ( ( ( ( ~ ( ~ a1 ) ) <-> a2 ) <-> a3 ) <-> a4 ) <-> a5 ) <-> a6 ) <-> a7 ) <-> a8 ) <-> a9 ) <-> a10 ) <-> ( a10 <-> ( a9 <-> ( a8 <-> ( a7 <-> ( a6 <-> ( a5 <-> ( a4 <-> ( a3 <-> ( a2 <-> a1 ) ) ) ) ) ) ) ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/equiv_p.002.ljt
@@ -1,41 +0,0 @@-%-------------------------------------------------------------------------------% File     : equiv_p2 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Equivalences-% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 2-% English  : (..(( p(1) <=> p(2)) <=> p(3)) <=> .. <=> p(N))  <=>-%            (p(N) <=> ( p(N-1) <=> (.. (p(2) <=> p(1)) ) ))--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-% Source   : [Dyc97]-% Names    : --% Status   : Theorem-% Rating   : 0.20 v 1.0-% Syntax   : Number of formulae    :    1 (   0 unit)-%            Number of atoms       :    4 (   0 equality)-%            Maximal formula depth :    3 (   3 average)-%            Number of connectives :    3 (   0 ~  ;   0  |;   0  &)-%                                         (   3 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    2 (   2 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : this formula is different to the equivalences formulated-%            in Pelletier 71 [Pel86], TPTP SYN007+1-%          : tptp2X -f ljt equiv_p.002.p -%--------------------------------------------------------------------------------f((--% conjecture_name, conjecture.-(( ( a1 <-> a2 ) <-> ( a2 <-> a1 ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/equiv_p.006.ljt
@@ -1,41 +0,0 @@-%-------------------------------------------------------------------------------% File     : equiv_p6 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Equivalences-% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 6-% English  : (..(( p(1) <=> p(2)) <=> p(3)) <=> .. <=> p(N))  <=>-%            (p(N) <=> ( p(N-1) <=> (.. (p(2) <=> p(1)) ) ))--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-% Source   : [Dyc97]-% Names    : --% Status   : Theorem-% Rating   : 0.60 v 1.0-% Syntax   : Number of formulae    :    1 (   0 unit)-%            Number of atoms       :   12 (   0 equality)-%            Maximal formula depth :    7 (   7 average)-%            Number of connectives :   11 (   0 ~  ;   0  |;   0  &)-%                                         (  11 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    6 (   6 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : this formula is different to the equivalences formulated-%            in Pelletier 71 [Pel86], TPTP SYN007+1-%          : tptp2X -f ljt equiv_p.006.p -%--------------------------------------------------------------------------------f((--% conjecture_name, conjecture.-(( ( ( ( ( ( a1 <-> a2 ) <-> a3 ) <-> a4 ) <-> a5 ) <-> a6 ) <-> ( a6 <-> ( a5 <-> ( a4 <-> ( a3 <-> ( a2 <-> a1 ) ) ) ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/equiv_p.010.ljt
@@ -1,41 +0,0 @@-%-------------------------------------------------------------------------------% File     : equiv_p10 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Equivalences-% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 10-% English  : (..(( p(1) <=> p(2)) <=> p(3)) <=> .. <=> p(N))  <=>-%            (p(N) <=> ( p(N-1) <=> (.. (p(2) <=> p(1)) ) ))--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-% Source   : [Dyc97]-% Names    : --% Status   : Theorem-% Rating   : 0.60 v 1.0-% Syntax   : Number of formulae    :    1 (   0 unit)-%            Number of atoms       :   20 (   0 equality)-%            Maximal formula depth :   11 (  11 average)-%            Number of connectives :   19 (   0 ~  ;   0  |;   0  &)-%                                         (  19 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :   10 (  10 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : this formula is different to the equivalences formulated-%            in Pelletier 71 [Pel86], TPTP SYN007+1-%          : tptp2X -f ljt equiv_p.010.p -%--------------------------------------------------------------------------------f((--% conjecture_name, conjecture.-(( ( ( ( ( ( ( ( ( ( a1 <-> a2 ) <-> a3 ) <-> a4 ) <-> a5 ) <-> a6 ) <-> a7 ) <-> a8 ) <-> a9 ) <-> a10 ) <-> ( a10 <-> ( a9 <-> ( a8 <-> ( a7 <-> ( a6 <-> ( a5 <-> ( a4 <-> ( a3 <-> ( a2 <-> a1 ) ) ) ) ) ) ) ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/kk_n.002.ljt
@@ -1,65 +0,0 @@-%-------------------------------------------------------------------------------% File     : kk_n2 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Formulae of Korn & Kreitz-% Version  : Especial.-%            Problem formulation : Inuit. Invalid.   Size 2-% English  : (A & B(N) & C(N)) => f with-%            A = (a(0) => f), B(N) = (~~b(N) => b(0) => a(N)),-%            C(N) = (&&_{i=1..n} ((~~b(i-1) => a(i)) => a(i-1))),--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [KK97]  D. Korn & C. Kreitz, A constructively adequate-%                    refutation system for intuitionistic logic,-%                    position paper at Tableaux'97, available at-%                    http://www.cs.uni-potsdam.de/ti/kreitz/PDF/-% Source   : [Dyc97]-% Names    : --% Status   : Non-Theorem-% Rating   : 0.40 v 1.0-% Syntax   : Number of formulae    :    5 (   1 unit)-%            Number of atoms       :   12 (   0 equality)-%            Maximal formula depth :    5 (   3 average)-%            Number of connectives :   13 (   6 ~  ;   0  |;   0  &)-%                                         (   0 <=>;   7 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    7 (   7 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : -%          : tptp2X -f ljt kk_n.002.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( a0 -> f ))-- & --% axiom2, axiom.-(( ( ( ~ ( ~ b2 ) ) -> b0 ) -> a2 ))-- & --% axiom3, axiom.-(( ( ( ~ ( ~ b0 ) ) -> a1 ) -> a0 ))-- & --% axiom4, axiom.-(( ( ( ~ ( ~ b1 ) ) -> a2 ) -> a1 ))--  ->--% conjecture_name, conjecture.-(f)--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/kk_n.006.ljt
@@ -1,85 +0,0 @@-%-------------------------------------------------------------------------------% File     : kk_n6 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Formulae of Korn & Kreitz-% Version  : Especial.-%            Problem formulation : Inuit. Invalid.   Size 6-% English  : (A & B(N) & C(N)) => f with-%            A = (a(0) => f), B(N) = (~~b(N) => b(0) => a(N)),-%            C(N) = (&&_{i=1..n} ((~~b(i-1) => a(i)) => a(i-1))),--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [KK97]  D. Korn & C. Kreitz, A constructively adequate-%                    refutation system for intuitionistic logic,-%                    position paper at Tableaux'97, available at-%                    http://www.cs.uni-potsdam.de/ti/kreitz/PDF/-% Source   : [Dyc97]-% Names    : --% Status   : Non-Theorem-% Rating   : 0.60 v 1.0-% Syntax   : Number of formulae    :    9 (   1 unit)-%            Number of atoms       :   24 (   0 equality)-%            Maximal formula depth :    5 (   4 average)-%            Number of connectives :   29 (  14 ~  ;   0  |;   0  &)-%                                         (   0 <=>;  15 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :   15 (  15 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : -%          : tptp2X -f ljt kk_n.006.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( a0 -> f ))-- & --% axiom2, axiom.-(( ( ( ~ ( ~ b6 ) ) -> b0 ) -> a6 ))-- & --% axiom3, axiom.-(( ( ( ~ ( ~ b0 ) ) -> a1 ) -> a0 ))-- & --% axiom4, axiom.-(( ( ( ~ ( ~ b1 ) ) -> a2 ) -> a1 ))-- & --% axiom5, axiom.-(( ( ( ~ ( ~ b2 ) ) -> a3 ) -> a2 ))-- & --% axiom6, axiom.-(( ( ( ~ ( ~ b3 ) ) -> a4 ) -> a3 ))-- & --% axiom7, axiom.-(( ( ( ~ ( ~ b4 ) ) -> a5 ) -> a4 ))-- & --% axiom8, axiom.-(( ( ( ~ ( ~ b5 ) ) -> a6 ) -> a5 ))--  ->--% conjecture_name, conjecture.-(f)--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/kk_n.010.ljt
@@ -1,105 +0,0 @@-%-------------------------------------------------------------------------------% File     : kk_n10 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Formulae of Korn & Kreitz-% Version  : Especial.-%            Problem formulation : Inuit. Invalid.   Size 10-% English  : (A & B(N) & C(N)) => f with-%            A = (a(0) => f), B(N) = (~~b(N) => b(0) => a(N)),-%            C(N) = (&&_{i=1..n} ((~~b(i-1) => a(i)) => a(i-1))),--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [KK97]  D. Korn & C. Kreitz, A constructively adequate-%                    refutation system for intuitionistic logic,-%                    position paper at Tableaux'97, available at-%                    http://www.cs.uni-potsdam.de/ti/kreitz/PDF/-% Source   : [Dyc97]-% Names    : --% Status   : Non-Theorem-% Rating   : 0.80 v 1.0-% Syntax   : Number of formulae    :   13 (   1 unit)-%            Number of atoms       :   36 (   0 equality)-%            Maximal formula depth :    5 (   4 average)-%            Number of connectives :   45 (  22 ~  ;   0  |;   0  &)-%                                         (   0 <=>;  23 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :   23 (  23 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : -%          : tptp2X -f ljt kk_n.010.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( a0 -> f ))-- & --% axiom2, axiom.-(( ( ( ~ ( ~ b10 ) ) -> b0 ) -> a10 ))-- & --% axiom3, axiom.-(( ( ( ~ ( ~ b0 ) ) -> a1 ) -> a0 ))-- & --% axiom4, axiom.-(( ( ( ~ ( ~ b1 ) ) -> a2 ) -> a1 ))-- & --% axiom5, axiom.-(( ( ( ~ ( ~ b2 ) ) -> a3 ) -> a2 ))-- & --% axiom6, axiom.-(( ( ( ~ ( ~ b3 ) ) -> a4 ) -> a3 ))-- & --% axiom7, axiom.-(( ( ( ~ ( ~ b4 ) ) -> a5 ) -> a4 ))-- & --% axiom8, axiom.-(( ( ( ~ ( ~ b5 ) ) -> a6 ) -> a5 ))-- & --% axiom9, axiom.-(( ( ( ~ ( ~ b6 ) ) -> a7 ) -> a6 ))-- & --% axiom10, axiom.-(( ( ( ~ ( ~ b7 ) ) -> a8 ) -> a7 ))-- & --% axiom11, axiom.-(( ( ( ~ ( ~ b8 ) ) -> a9 ) -> a8 ))-- & --% axiom12, axiom.-(( ( ( ~ ( ~ b9 ) ) -> a10 ) -> a9 ))--  ->--% conjecture_name, conjecture.-(f)--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/kk_p.002.ljt
@@ -1,46 +0,0 @@-%-------------------------------------------------------------------------------% File     : kk_p2 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Formulae of Korn & Kreitz-% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 2-% English  : ((A & B(N) & C1(N)) => f) & ((C2(N) & B(N) & A) => f) with-%            A = (a(0) => f), B(N) = (b(N) => b(0) => a(N)),-%            C1(N) = (&&_{i=1..n} ((b(i-1) => a(i)) => a(i-1))),-%            C2(N) = (&&_{i=n..1} ((b(i-1) => a(i)) => a(i-1)))--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [KK97]  D. Korn & C. Kreitz, A constructively adequate-%                    refutation system for intuitionistic logic,-%                    position paper at Tableaux'97, available at-%                    http://www.cs.uni-potsdam.de/ti/kreitz/PDF/-% Source   : [Dyc97]-% Names    : --% Status   : Theorem-% Rating   : 0.20 v 1.0-% Syntax   : Number of formulae    :    1 (   0 unit)-%            Number of atoms       :   24 (   0 equality)-%            Maximal formula depth :    8 (   8 average)-%            Number of connectives :   23 (   0 ~  ;   0  |;   7  &)-%                                         (   0 <=>;  16 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    7 (   7 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : -%          : tptp2X -f ljt kk_p.002.p -%--------------------------------------------------------------------------------f((--% conjecture_name, conjecture.-(( ( ( ( a0 -> f ) & ( ( ( b2 -> b0 ) -> a2 ) & ( ( ( b0 -> a1 ) -> a0 ) & ( ( b1 -> a2 ) -> a1 ) ) ) ) -> f ) & ( ( ( ( b1 -> a2 ) -> a1 ) & ( ( ( b0 -> a1 ) -> a0 ) & ( ( ( b2 -> b0 ) -> a2 ) & ( a0 -> f ) ) ) ) -> f ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/kk_p.006.ljt
@@ -1,46 +0,0 @@-%-------------------------------------------------------------------------------% File     : kk_p6 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Formulae of Korn & Kreitz-% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 6-% English  : ((A & B(N) & C1(N)) => f) & ((C2(N) & B(N) & A) => f) with-%            A = (a(0) => f), B(N) = (b(N) => b(0) => a(N)),-%            C1(N) = (&&_{i=1..n} ((b(i-1) => a(i)) => a(i-1))),-%            C2(N) = (&&_{i=n..1} ((b(i-1) => a(i)) => a(i-1)))--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [KK97]  D. Korn & C. Kreitz, A constructively adequate-%                    refutation system for intuitionistic logic,-%                    position paper at Tableaux'97, available at-%                    http://www.cs.uni-potsdam.de/ti/kreitz/PDF/-% Source   : [Dyc97]-% Names    : --% Status   : Theorem-% Rating   : 0.60 v 1.0-% Syntax   : Number of formulae    :    1 (   0 unit)-%            Number of atoms       :   48 (   0 equality)-%            Maximal formula depth :   12 (  12 average)-%            Number of connectives :   47 (   0 ~  ;   0  |;  15  &)-%                                         (   0 <=>;  32 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :   15 (  15 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : -%          : tptp2X -f ljt kk_p.006.p -%--------------------------------------------------------------------------------f((--% conjecture_name, conjecture.-(( ( ( ( a0 -> f ) & ( ( ( b6 -> b0 ) -> a6 ) & ( ( ( b0 -> a1 ) -> a0 ) & ( ( ( b1 -> a2 ) -> a1 ) & ( ( ( b2 -> a3 ) -> a2 ) & ( ( ( b3 -> a4 ) -> a3 ) & ( ( ( b4 -> a5 ) -> a4 ) & ( ( b5 -> a6 ) -> a5 ) ) ) ) ) ) ) ) -> f ) & ( ( ( ( b5 -> a6 ) -> a5 ) & ( ( ( b4 -> a5 ) -> a4 ) & ( ( ( b3 -> a4 ) -> a3 ) & ( ( ( b2 -> a3 ) -> a2 ) & ( ( ( b1 -> a2 ) -> a1 ) & ( ( ( b0 -> a1 ) -> a0 ) & ( ( ( b6 -> b0 ) -> a6 ) & ( a0 -> f ) ) ) ) ) ) ) ) -> f ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/kk_p.010.ljt
@@ -1,46 +0,0 @@-%-------------------------------------------------------------------------------% File     : kk_p10 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Formulae of Korn & Kreitz-% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 10-% English  : ((A & B(N) & C1(N)) => f) & ((C2(N) & B(N) & A) => f) with-%            A = (a(0) => f), B(N) = (b(N) => b(0) => a(N)),-%            C1(N) = (&&_{i=1..n} ((b(i-1) => a(i)) => a(i-1))),-%            C2(N) = (&&_{i=n..1} ((b(i-1) => a(i)) => a(i-1)))--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [KK97]  D. Korn & C. Kreitz, A constructively adequate-%                    refutation system for intuitionistic logic,-%                    position paper at Tableaux'97, available at-%                    http://www.cs.uni-potsdam.de/ti/kreitz/PDF/-% Source   : [Dyc97]-% Names    : --% Status   : Theorem-% Rating   : 0.80 v 1.0-% Syntax   : Number of formulae    :    1 (   0 unit)-%            Number of atoms       :   72 (   0 equality)-%            Maximal formula depth :   16 (  16 average)-%            Number of connectives :   71 (   0 ~  ;   0  |;  23  &)-%                                         (   0 <=>;  48 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :   23 (  23 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : -%          : tptp2X -f ljt kk_p.010.p -%--------------------------------------------------------------------------------f((--% conjecture_name, conjecture.-(( ( ( ( a0 -> f ) & ( ( ( b10 -> b0 ) -> a10 ) & ( ( ( b0 -> a1 ) -> a0 ) & ( ( ( b1 -> a2 ) -> a1 ) & ( ( ( b2 -> a3 ) -> a2 ) & ( ( ( b3 -> a4 ) -> a3 ) & ( ( ( b4 -> a5 ) -> a4 ) & ( ( ( b5 -> a6 ) -> a5 ) & ( ( ( b6 -> a7 ) -> a6 ) & ( ( ( b7 -> a8 ) -> a7 ) & ( ( ( b8 -> a9 ) -> a8 ) & ( ( b9 -> a10 ) -> a9 ) ) ) ) ) ) ) ) ) ) ) ) -> f ) & ( ( ( ( b9 -> a10 ) -> a9 ) & ( ( ( b8 -> a9 ) -> a8 ) & ( ( ( b7 -> a8 ) -> a7 ) & ( ( ( b6 -> a7 ) -> a6 ) & ( ( ( b5 -> a6 ) -> a5 ) & ( ( ( b4 -> a5 ) -> a4 ) & ( ( ( b3 -> a4 ) -> a3 ) & ( ( ( b2 -> a3 ) -> a2 ) & ( ( ( b1 -> a2 ) -> a1 ) & ( ( ( b0 -> a1 ) -> a0 ) & ( ( ( b10 -> b0 ) -> a10 ) & ( a0 -> f ) ) ) ) ) ) ) ) ) ) ) ) -> f ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/ph_n.002.ljt
@@ -1,65 +0,0 @@-%-------------------------------------------------------------------------------% File     : ph_n2 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Cook pigeon-hole problem-% Version  : Especial.-%            Problem formulation : Prop. Non-Clausal. Inuit. Invalid.   Size 2-% English  : Suppose there are N holes and N+1 pigeons to put in the-%            holes. Every pigeon is in a hole and no hole contains more-%            than one pigeon. Prove that this is impossible. The size is-%            the number of pigeons.-%            LHS(N) => RHS(N) with -%            LHS(N) = &&_{p=1..N+1} (||_{h=1,..N-1} o(p,h) | ~~o(p,N) )-%            RHS(N) = ||_{h=1..N, p1=1..{N+1}, p2={p1+1}..{N+1}} s(p1,p2,h)-%            with s(p1,p2,h) = o(p1,h) & o(p2,h)--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [CR79]  Cook & Reckhow (1979), The Relative Efficiency of-%                    Propositional Proof Systems, Journal of Symbolic-%                    Logic 44, pp.36-50.--% Source   : [Dyc97]-% Names    : --% Status   : Non-Theorem-% Rating   : 0.40 v 1.0-% Syntax   : Number of formulae    :    4 (   0 unit)-%            Number of atoms       :   18 (   0 equality)-%            Maximal formula depth :    7 (   4 average)-%            Number of connectives :   20 (   6 ~  ;   8  |;   6  &)-%                                         (   0 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    6 (   6 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : -%          : tptp2X -f ljt ph_n.002.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( o11 v ( ~ ( ~ o12 ) ) ))-- & --% axiom2, axiom.-(( o21 v ( ~ ( ~ o22 ) ) ))-- & --% axiom3, axiom.-(( o31 v ( ~ ( ~ o32 ) ) ))--  ->--% conjecture_name, conjecture.-(( ( o11 & o21 ) v ( ( o11 & o31 ) v ( ( o21 & o31 ) v ( ( o12 & o22 ) v ( ( o12 & o32 ) v ( o22 & o32 ) ) ) ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/ph_n.006.ljt
@@ -1,85 +0,0 @@-%-------------------------------------------------------------------------------% File     : ph_n6 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Cook pigeon-hole problem-% Version  : Especial.-%            Problem formulation : Prop. Non-Clausal. Inuit. Invalid.   Size 6-% English  : Suppose there are N holes and N+1 pigeons to put in the-%            holes. Every pigeon is in a hole and no hole contains more-%            than one pigeon. Prove that this is impossible. The size is-%            the number of pigeons.-%            LHS(N) => RHS(N) with -%            LHS(N) = &&_{p=1..N+1} (||_{h=1,..N-1} o(p,h) | ~~o(p,N) )-%            RHS(N) = ||_{h=1..N, p1=1..{N+1}, p2={p1+1}..{N+1}} s(p1,p2,h)-%            with s(p1,p2,h) = o(p1,h) & o(p2,h)--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [CR79]  Cook & Reckhow (1979), The Relative Efficiency of-%                    Propositional Proof Systems, Journal of Symbolic-%                    Logic 44, pp.36-50.--% Source   : [Dyc97]-% Names    : --% Status   : Non-Theorem-% Rating   : 0.60 v 1.0-% Syntax   : Number of formulae    :    8 (   0 unit)-%            Number of atoms       :  294 (   0 equality)-%            Maximal formula depth :  127 (  22 average)-%            Number of connectives :  300 (  14 ~  ; 160  |; 126  &)-%                                         (   0 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :   42 (  42 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : -%          : tptp2X -f ljt ph_n.006.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( o11 v ( o12 v ( o13 v ( o14 v ( o15 v ( ~ ( ~ o16 ) ) ) ) ) ) ))-- & --% axiom2, axiom.-(( o21 v ( o22 v ( o23 v ( o24 v ( o25 v ( ~ ( ~ o26 ) ) ) ) ) ) ))-- & --% axiom3, axiom.-(( o31 v ( o32 v ( o33 v ( o34 v ( o35 v ( ~ ( ~ o36 ) ) ) ) ) ) ))-- & --% axiom4, axiom.-(( o41 v ( o42 v ( o43 v ( o44 v ( o45 v ( ~ ( ~ o46 ) ) ) ) ) ) ))-- & --% axiom5, axiom.-(( o51 v ( o52 v ( o53 v ( o54 v ( o55 v ( ~ ( ~ o56 ) ) ) ) ) ) ))-- & --% axiom6, axiom.-(( o61 v ( o62 v ( o63 v ( o64 v ( o65 v ( ~ ( ~ o66 ) ) ) ) ) ) ))-- & --% axiom7, axiom.-(( o71 v ( o72 v ( o73 v ( o74 v ( o75 v ( ~ ( ~ o76 ) ) ) ) ) ) ))--  ->--% conjecture_name, conjecture.-(( ( o11 & o21 ) v ( ( o11 & o31 ) v ( ( o11 & o41 ) v ( ( o11 & o51 ) v ( ( o11 & o61 ) v ( ( o11 & o71 ) v ( ( o21 & o31 ) v ( ( o21 & o41 ) v ( ( o21 & o51 ) v ( ( o21 & o61 ) v ( ( o21 & o71 ) v ( ( o31 & o41 ) v ( ( o31 & o51 ) v ( ( o31 & o61 ) v ( ( o31 & o71 ) v ( ( o41 & o51 ) v ( ( o41 & o61 ) v ( ( o41 & o71 ) v ( ( o51 & o61 ) v ( ( o51 & o71 ) v ( ( o61 & o71 ) v ( ( o12 & o22 ) v ( ( o12 & o32 ) v ( ( o12 & o42 ) v ( ( o12 & o52 ) v ( ( o12 & o62 ) v ( ( o12 & o72 ) v ( ( o22 & o32 ) v ( ( o22 & o42 ) v ( ( o22 & o52 ) v ( ( o22 & o62 ) v ( ( o22 & o72 ) v ( ( o32 & o42 ) v ( ( o32 & o52 ) v ( ( o32 & o62 ) v ( ( o32 & o72 ) v ( ( o42 & o52 ) v ( ( o42 & o62 ) v ( ( o42 & o72 ) v ( ( o52 & o62 ) v ( ( o52 & o72 ) v ( ( o62 & o72 ) v ( ( o13 & o23 ) v ( ( o13 & o33 ) v ( ( o13 & o43 ) v ( ( o13 & o53 ) v ( ( o13 & o63 ) v ( ( o13 & o73 ) v ( ( o23 & o33 ) v ( ( o23 & o43 ) v ( ( o23 & o53 ) v ( ( o23 & o63 ) v ( ( o23 & o73 ) v ( ( o33 & o43 ) v ( ( o33 & o53 ) v ( ( o33 & o63 ) v ( ( o33 & o73 ) v ( ( o43 & o53 ) v ( ( o43 & o63 ) v ( ( o43 & o73 ) v ( ( o53 & o63 ) v ( ( o53 & o73 ) v ( ( o63 & o73 ) v ( ( o14 & o24 ) v ( ( o14 & o34 ) v ( ( o14 & o44 ) v ( ( o14 & o54 ) v ( ( o14 & o64 ) v ( ( o14 & o74 ) v ( ( o24 & o34 ) v ( ( o24 & o44 ) v ( ( o24 & o54 ) v ( ( o24 & o64 ) v ( ( o24 & o74 ) v ( ( o34 & o44 ) v ( ( o34 & o54 ) v ( ( o34 & o64 ) v ( ( o34 & o74 ) v ( ( o44 & o54 ) v ( ( o44 & o64 ) v ( ( o44 & o74 ) v ( ( o54 & o64 ) v ( ( o54 & o74 ) v ( ( o64 & o74 ) v ( ( o15 & o25 ) v ( ( o15 & o35 ) v ( ( o15 & o45 ) v ( ( o15 & o55 ) v ( ( o15 & o65 ) v ( ( o15 & o75 ) v ( ( o25 & o35 ) v ( ( o25 & o45 ) v ( ( o25 & o55 ) v ( ( o25 & o65 ) v ( ( o25 & o75 ) v ( ( o35 & o45 ) v ( ( o35 & o55 ) v ( ( o35 & o65 ) v ( ( o35 & o75 ) v ( ( o45 & o55 ) v ( ( o45 & o65 ) v ( ( o45 & o75 ) v ( ( o55 & o65 ) v ( ( o55 & o75 ) v ( ( o65 & o75 ) v ( ( o16 & o26 ) v ( ( o16 & o36 ) v ( ( o16 & o46 ) v ( ( o16 & o56 ) v ( ( o16 & o66 ) v ( ( o16 & o76 ) v ( ( o26 & o36 ) v ( ( o26 & o46 ) v ( ( o26 & o56 ) v ( ( o26 & o66 ) v ( ( o26 & o76 ) v ( ( o36 & o46 ) v ( ( o36 & o56 ) v ( ( o36 & o66 ) v ( ( o36 & o76 ) v ( ( o46 & o56 ) v ( ( o46 & o66 ) v ( ( o46 & o76 ) v ( ( o56 & o66 ) v ( ( o56 & o76 ) v ( o66 & o76 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/ph_n.010.ljt
@@ -1,105 +0,0 @@-%-------------------------------------------------------------------------------% File     : ph_n10 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Cook pigeon-hole problem-% Version  : Especial.-%            Problem formulation : Prop. Non-Clausal. Inuit. Invalid.   Size 10-% English  : Suppose there are N holes and N+1 pigeons to put in the-%            holes. Every pigeon is in a hole and no hole contains more-%            than one pigeon. Prove that this is impossible. The size is-%            the number of pigeons.-%            LHS(N) => RHS(N) with -%            LHS(N) = &&_{p=1..N+1} (||_{h=1,..N-1} o(p,h) | ~~o(p,N) )-%            RHS(N) = ||_{h=1..N, p1=1..{N+1}, p2={p1+1}..{N+1}} s(p1,p2,h)-%            with s(p1,p2,h) = o(p1,h) & o(p2,h)--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [CR79]  Cook & Reckhow (1979), The Relative Efficiency of-%                    Propositional Proof Systems, Journal of Symbolic-%                    Logic 44, pp.36-50.--% Source   : [Dyc97]-% Names    : --% Status   : Non-Theorem-% Rating   : 0.80 v 1.0-% Syntax   : Number of formulae    :   12 (   0 unit)-%            Number of atoms       : 1210 (   0 equality)-%            Maximal formula depth :  551 (  56 average)-%            Number of connectives : 1220 (  22 ~  ; 648  |; 550  &)-%                                         (   0 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :  110 ( 110 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : -%          : tptp2X -f ljt ph_n.010.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( o11 v ( o12 v ( o13 v ( o14 v ( o15 v ( o16 v ( o17 v ( o18 v ( o19 v ( ~ ( ~ o110 ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom2, axiom.-(( o21 v ( o22 v ( o23 v ( o24 v ( o25 v ( o26 v ( o27 v ( o28 v ( o29 v ( ~ ( ~ o210 ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom3, axiom.-(( o31 v ( o32 v ( o33 v ( o34 v ( o35 v ( o36 v ( o37 v ( o38 v ( o39 v ( ~ ( ~ o310 ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom4, axiom.-(( o41 v ( o42 v ( o43 v ( o44 v ( o45 v ( o46 v ( o47 v ( o48 v ( o49 v ( ~ ( ~ o410 ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom5, axiom.-(( o51 v ( o52 v ( o53 v ( o54 v ( o55 v ( o56 v ( o57 v ( o58 v ( o59 v ( ~ ( ~ o510 ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom6, axiom.-(( o61 v ( o62 v ( o63 v ( o64 v ( o65 v ( o66 v ( o67 v ( o68 v ( o69 v ( ~ ( ~ o610 ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom7, axiom.-(( o71 v ( o72 v ( o73 v ( o74 v ( o75 v ( o76 v ( o77 v ( o78 v ( o79 v ( ~ ( ~ o710 ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom8, axiom.-(( o81 v ( o82 v ( o83 v ( o84 v ( o85 v ( o86 v ( o87 v ( o88 v ( o89 v ( ~ ( ~ o810 ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom9, axiom.-(( o91 v ( o92 v ( o93 v ( o94 v ( o95 v ( o96 v ( o97 v ( o98 v ( o99 v ( ~ ( ~ o910 ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom10, axiom.-(( o101 v ( o102 v ( o103 v ( o104 v ( o105 v ( o106 v ( o107 v ( o108 v ( o109 v ( ~ ( ~ o1010 ) ) ) ) ) ) ) ) ) ) ))-- & --% axiom11, axiom.-(( o111 v ( o112 v ( o113 v ( o114 v ( o115 v ( o116 v ( o117 v ( o118 v ( o119 v ( ~ ( ~ o1110 ) ) ) ) ) ) ) ) ) ) ))--  ->--% conjecture_name, conjecture.-(( ( o11 & o21 ) v ( ( o11 & o31 ) v ( ( o11 & o41 ) v ( ( o11 & o51 ) v ( ( o11 & o61 ) v ( ( o11 & o71 ) v ( ( o11 & o81 ) v ( ( o11 & o91 ) v ( ( o11 & o101 ) v ( ( o11 & o111 ) v ( ( o21 & o31 ) v ( ( o21 & o41 ) v ( ( o21 & o51 ) v ( ( o21 & o61 ) v ( ( o21 & o71 ) v ( ( o21 & o81 ) v ( ( o21 & o91 ) v ( ( o21 & o101 ) v ( ( o21 & o111 ) v ( ( o31 & o41 ) v ( ( o31 & o51 ) v ( ( o31 & o61 ) v ( ( o31 & o71 ) v ( ( o31 & o81 ) v ( ( o31 & o91 ) v ( ( o31 & o101 ) v ( ( o31 & o111 ) v ( ( o41 & o51 ) v ( ( o41 & o61 ) v ( ( o41 & o71 ) v ( ( o41 & o81 ) v ( ( o41 & o91 ) v ( ( o41 & o101 ) v ( ( o41 & o111 ) v ( ( o51 & o61 ) v ( ( o51 & o71 ) v ( ( o51 & o81 ) v ( ( o51 & o91 ) v ( ( o51 & o101 ) v ( ( o51 & o111 ) v ( ( o61 & o71 ) v ( ( o61 & o81 ) v ( ( o61 & o91 ) v ( ( o61 & o101 ) v ( ( o61 & o111 ) v ( ( o71 & o81 ) v ( ( o71 & o91 ) v ( ( o71 & o101 ) v ( ( o71 & o111 ) v ( ( o81 & o91 ) v ( ( o81 & o101 ) v ( ( o81 & o111 ) v ( ( o91 & o101 ) v ( ( o91 & o111 ) v ( ( o101 & o111 ) v ( ( o12 & o22 ) v ( ( o12 & o32 ) v ( ( o12 & o42 ) v ( ( o12 & o52 ) v ( ( o12 & o62 ) v ( ( o12 & o72 ) v ( ( o12 & o82 ) v ( ( o12 & o92 ) v ( ( o12 & o102 ) v ( ( o12 & o112 ) v ( ( o22 & o32 ) v ( ( o22 & o42 ) v ( ( o22 & o52 ) v ( ( o22 & o62 ) v ( ( o22 & o72 ) v ( ( o22 & o82 ) v ( ( o22 & o92 ) v ( ( o22 & o102 ) v ( ( o22 & o112 ) v ( ( o32 & o42 ) v ( ( o32 & o52 ) v ( ( o32 & o62 ) v ( ( o32 & o72 ) v ( ( o32 & o82 ) v ( ( o32 & o92 ) v ( ( o32 & o102 ) v ( ( o32 & o112 ) v ( ( o42 & o52 ) v ( ( o42 & o62 ) v ( ( o42 & o72 ) v ( ( o42 & o82 ) v ( ( o42 & o92 ) v ( ( o42 & o102 ) v ( ( o42 & o112 ) v ( ( o52 & o62 ) v ( ( o52 & o72 ) v ( ( o52 & o82 ) v ( ( o52 & o92 ) v ( ( o52 & o102 ) v ( ( o52 & o112 ) v ( ( o62 & o72 ) v ( ( o62 & o82 ) v ( ( o62 & o92 ) v ( ( o62 & o102 ) v ( ( o62 & o112 ) v ( ( o72 & o82 ) v ( ( o72 & o92 ) v ( ( o72 & o102 ) v ( ( o72 & o112 ) v ( ( o82 & o92 ) v ( ( o82 & o102 ) v ( ( o82 & o112 ) v ( ( o92 & o102 ) v ( ( o92 & o112 ) v ( ( o102 & o112 ) v ( ( o13 & o23 ) v ( ( o13 & o33 ) v ( ( o13 & o43 ) v ( ( o13 & o53 ) v ( ( o13 & o63 ) v ( ( o13 & o73 ) v ( ( o13 & o83 ) v ( ( o13 & o93 ) v ( ( o13 & o103 ) v ( ( o13 & o113 ) v ( ( o23 & o33 ) v ( ( o23 & o43 ) v ( ( o23 & o53 ) v ( ( o23 & o63 ) v ( ( o23 & o73 ) v ( ( o23 & o83 ) v ( ( o23 & o93 ) v ( ( o23 & o103 ) v ( ( o23 & o113 ) v ( ( o33 & o43 ) v ( ( o33 & o53 ) v ( ( o33 & o63 ) v ( ( o33 & o73 ) v ( ( o33 & o83 ) v ( ( o33 & o93 ) v ( ( o33 & o103 ) v ( ( o33 & o113 ) v ( ( o43 & o53 ) v ( ( o43 & o63 ) v ( ( o43 & o73 ) v ( ( o43 & o83 ) v ( ( o43 & o93 ) v ( ( o43 & o103 ) v ( ( o43 & o113 ) v ( ( o53 & o63 ) v ( ( o53 & o73 ) v ( ( o53 & o83 ) v ( ( o53 & o93 ) v ( ( o53 & o103 ) v ( ( o53 & o113 ) v ( ( o63 & o73 ) v ( ( o63 & o83 ) v ( ( o63 & o93 ) v ( ( o63 & o103 ) v ( ( o63 & o113 ) v ( ( o73 & o83 ) v ( ( o73 & o93 ) v ( ( o73 & o103 ) v ( ( o73 & o113 ) v ( ( o83 & o93 ) v ( ( o83 & o103 ) v ( ( o83 & o113 ) v ( ( o93 & o103 ) v ( ( o93 & o113 ) v ( ( o103 & o113 ) v ( ( o14 & o24 ) v ( ( o14 & o34 ) v ( ( o14 & o44 ) v ( ( o14 & o54 ) v ( ( o14 & o64 ) v ( ( o14 & o74 ) v ( ( o14 & o84 ) v ( ( o14 & o94 ) v ( ( o14 & o104 ) v ( ( o14 & o114 ) v ( ( o24 & o34 ) v ( ( o24 & o44 ) v ( ( o24 & o54 ) v ( ( o24 & o64 ) v ( ( o24 & o74 ) v ( ( o24 & o84 ) v ( ( o24 & o94 ) v ( ( o24 & o104 ) v ( ( o24 & o114 ) v ( ( o34 & o44 ) v ( ( o34 & o54 ) v ( ( o34 & o64 ) v ( ( o34 & o74 ) v ( ( o34 & o84 ) v ( ( o34 & o94 ) v ( ( o34 & o104 ) v ( ( o34 & o114 ) v ( ( o44 & o54 ) v ( ( o44 & o64 ) v ( ( o44 & o74 ) v ( ( o44 & o84 ) v ( ( o44 & o94 ) v ( ( o44 & o104 ) v ( ( o44 & o114 ) v ( ( o54 & o64 ) v ( ( o54 & o74 ) v ( ( o54 & o84 ) v ( ( o54 & o94 ) v ( ( o54 & o104 ) v ( ( o54 & o114 ) v ( ( o64 & o74 ) v ( ( o64 & o84 ) v ( ( o64 & o94 ) v ( ( o64 & o104 ) v ( ( o64 & o114 ) v ( ( o74 & o84 ) v ( ( o74 & o94 ) v ( ( o74 & o104 ) v ( ( o74 & o114 ) v ( ( o84 & o94 ) v ( ( o84 & o104 ) v ( ( o84 & o114 ) v ( ( o94 & o104 ) v ( ( o94 & o114 ) v ( ( o104 & o114 ) v ( ( o15 & o25 ) v ( ( o15 & o35 ) v ( ( o15 & o45 ) v ( ( o15 & o55 ) v ( ( o15 & o65 ) v ( ( o15 & o75 ) v ( ( o15 & o85 ) v ( ( o15 & o95 ) v ( ( o15 & o105 ) v ( ( o15 & o115 ) v ( ( o25 & o35 ) v ( ( o25 & o45 ) v ( ( o25 & o55 ) v ( ( o25 & o65 ) v ( ( o25 & o75 ) v ( ( o25 & o85 ) v ( ( o25 & o95 ) v ( ( o25 & o105 ) v ( ( o25 & o115 ) v ( ( o35 & o45 ) v ( ( o35 & o55 ) v ( ( o35 & o65 ) v ( ( o35 & o75 ) v ( ( o35 & o85 ) v ( ( o35 & o95 ) v ( ( o35 & o105 ) v ( ( o35 & o115 ) v ( ( o45 & o55 ) v ( ( o45 & o65 ) v ( ( o45 & o75 ) v ( ( o45 & o85 ) v ( ( o45 & o95 ) v ( ( o45 & o105 ) v ( ( o45 & o115 ) v ( ( o55 & o65 ) v ( ( o55 & o75 ) v ( ( o55 & o85 ) v ( ( o55 & o95 ) v ( ( o55 & o105 ) v ( ( o55 & o115 ) v ( ( o65 & o75 ) v ( ( o65 & o85 ) v ( ( o65 & o95 ) v ( ( o65 & o105 ) v ( ( o65 & o115 ) v ( ( o75 & o85 ) v ( ( o75 & o95 ) v ( ( o75 & o105 ) v ( ( o75 & o115 ) v ( ( o85 & o95 ) v ( ( o85 & o105 ) v ( ( o85 & o115 ) v ( ( o95 & o105 ) v ( ( o95 & o115 ) v ( ( o105 & o115 ) v ( ( o16 & o26 ) v ( ( o16 & o36 ) v ( ( o16 & o46 ) v ( ( o16 & o56 ) v ( ( o16 & o66 ) v ( ( o16 & o76 ) v ( ( o16 & o86 ) v ( ( o16 & o96 ) v ( ( o16 & o106 ) v ( ( o16 & o116 ) v ( ( o26 & o36 ) v ( ( o26 & o46 ) v ( ( o26 & o56 ) v ( ( o26 & o66 ) v ( ( o26 & o76 ) v ( ( o26 & o86 ) v ( ( o26 & o96 ) v ( ( o26 & o106 ) v ( ( o26 & o116 ) v ( ( o36 & o46 ) v ( ( o36 & o56 ) v ( ( o36 & o66 ) v ( ( o36 & o76 ) v ( ( o36 & o86 ) v ( ( o36 & o96 ) v ( ( o36 & o106 ) v ( ( o36 & o116 ) v ( ( o46 & o56 ) v ( ( o46 & o66 ) v ( ( o46 & o76 ) v ( ( o46 & o86 ) v ( ( o46 & o96 ) v ( ( o46 & o106 ) v ( ( o46 & o116 ) v ( ( o56 & o66 ) v ( ( o56 & o76 ) v ( ( o56 & o86 ) v ( ( o56 & o96 ) v ( ( o56 & o106 ) v ( ( o56 & o116 ) v ( ( o66 & o76 ) v ( ( o66 & o86 ) v ( ( o66 & o96 ) v ( ( o66 & o106 ) v ( ( o66 & o116 ) v ( ( o76 & o86 ) v ( ( o76 & o96 ) v ( ( o76 & o106 ) v ( ( o76 & o116 ) v ( ( o86 & o96 ) v ( ( o86 & o106 ) v ( ( o86 & o116 ) v ( ( o96 & o106 ) v ( ( o96 & o116 ) v ( ( o106 & o116 ) v ( ( o17 & o27 ) v ( ( o17 & o37 ) v ( ( o17 & o47 ) v ( ( o17 & o57 ) v ( ( o17 & o67 ) v ( ( o17 & o77 ) v ( ( o17 & o87 ) v ( ( o17 & o97 ) v ( ( o17 & o107 ) v ( ( o17 & o117 ) v ( ( o27 & o37 ) v ( ( o27 & o47 ) v ( ( o27 & o57 ) v ( ( o27 & o67 ) v ( ( o27 & o77 ) v ( ( o27 & o87 ) v ( ( o27 & o97 ) v ( ( o27 & o107 ) v ( ( o27 & o117 ) v ( ( o37 & o47 ) v ( ( o37 & o57 ) v ( ( o37 & o67 ) v ( ( o37 & o77 ) v ( ( o37 & o87 ) v ( ( o37 & o97 ) v ( ( o37 & o107 ) v ( ( o37 & o117 ) v ( ( o47 & o57 ) v ( ( o47 & o67 ) v ( ( o47 & o77 ) v ( ( o47 & o87 ) v ( ( o47 & o97 ) v ( ( o47 & o107 ) v ( ( o47 & o117 ) v ( ( o57 & o67 ) v ( ( o57 & o77 ) v ( ( o57 & o87 ) v ( ( o57 & o97 ) v ( ( o57 & o107 ) v ( ( o57 & o117 ) v ( ( o67 & o77 ) v ( ( o67 & o87 ) v ( ( o67 & o97 ) v ( ( o67 & o107 ) v ( ( o67 & o117 ) v ( ( o77 & o87 ) v ( ( o77 & o97 ) v ( ( o77 & o107 ) v ( ( o77 & o117 ) v ( ( o87 & o97 ) v ( ( o87 & o107 ) v ( ( o87 & o117 ) v ( ( o97 & o107 ) v ( ( o97 & o117 ) v ( ( o107 & o117 ) v ( ( o18 & o28 ) v ( ( o18 & o38 ) v ( ( o18 & o48 ) v ( ( o18 & o58 ) v ( ( o18 & o68 ) v ( ( o18 & o78 ) v ( ( o18 & o88 ) v ( ( o18 & o98 ) v ( ( o18 & o108 ) v ( ( o18 & o118 ) v ( ( o28 & o38 ) v ( ( o28 & o48 ) v ( ( o28 & o58 ) v ( ( o28 & o68 ) v ( ( o28 & o78 ) v ( ( o28 & o88 ) v ( ( o28 & o98 ) v ( ( o28 & o108 ) v ( ( o28 & o118 ) v ( ( o38 & o48 ) v ( ( o38 & o58 ) v ( ( o38 & o68 ) v ( ( o38 & o78 ) v ( ( o38 & o88 ) v ( ( o38 & o98 ) v ( ( o38 & o108 ) v ( ( o38 & o118 ) v ( ( o48 & o58 ) v ( ( o48 & o68 ) v ( ( o48 & o78 ) v ( ( o48 & o88 ) v ( ( o48 & o98 ) v ( ( o48 & o108 ) v ( ( o48 & o118 ) v ( ( o58 & o68 ) v ( ( o58 & o78 ) v ( ( o58 & o88 ) v ( ( o58 & o98 ) v ( ( o58 & o108 ) v ( ( o58 & o118 ) v ( ( o68 & o78 ) v ( ( o68 & o88 ) v ( ( o68 & o98 ) v ( ( o68 & o108 ) v ( ( o68 & o118 ) v ( ( o78 & o88 ) v ( ( o78 & o98 ) v ( ( o78 & o108 ) v ( ( o78 & o118 ) v ( ( o88 & o98 ) v ( ( o88 & o108 ) v ( ( o88 & o118 ) v ( ( o98 & o108 ) v ( ( o98 & o118 ) v ( ( o108 & o118 ) v ( ( o19 & o29 ) v ( ( o19 & o39 ) v ( ( o19 & o49 ) v ( ( o19 & o59 ) v ( ( o19 & o69 ) v ( ( o19 & o79 ) v ( ( o19 & o89 ) v ( ( o19 & o99 ) v ( ( o19 & o109 ) v ( ( o19 & o119 ) v ( ( o29 & o39 ) v ( ( o29 & o49 ) v ( ( o29 & o59 ) v ( ( o29 & o69 ) v ( ( o29 & o79 ) v ( ( o29 & o89 ) v ( ( o29 & o99 ) v ( ( o29 & o109 ) v ( ( o29 & o119 ) v ( ( o39 & o49 ) v ( ( o39 & o59 ) v ( ( o39 & o69 ) v ( ( o39 & o79 ) v ( ( o39 & o89 ) v ( ( o39 & o99 ) v ( ( o39 & o109 ) v ( ( o39 & o119 ) v ( ( o49 & o59 ) v ( ( o49 & o69 ) v ( ( o49 & o79 ) v ( ( o49 & o89 ) v ( ( o49 & o99 ) v ( ( o49 & o109 ) v ( ( o49 & o119 ) v ( ( o59 & o69 ) v ( ( o59 & o79 ) v ( ( o59 & o89 ) v ( ( o59 & o99 ) v ( ( o59 & o109 ) v ( ( o59 & o119 ) v ( ( o69 & o79 ) v ( ( o69 & o89 ) v ( ( o69 & o99 ) v ( ( o69 & o109 ) v ( ( o69 & o119 ) v ( ( o79 & o89 ) v ( ( o79 & o99 ) v ( ( o79 & o109 ) v ( ( o79 & o119 ) v ( ( o89 & o99 ) v ( ( o89 & o109 ) v ( ( o89 & o119 ) v ( ( o99 & o109 ) v ( ( o99 & o119 ) v ( ( o109 & o119 ) v ( ( o110 & o210 ) v ( ( o110 & o310 ) v ( ( o110 & o410 ) v ( ( o110 & o510 ) v ( ( o110 & o610 ) v ( ( o110 & o710 ) v ( ( o110 & o810 ) v ( ( o110 & o910 ) v ( ( o110 & o1010 ) v ( ( o110 & o1110 ) v ( ( o210 & o310 ) v ( ( o210 & o410 ) v ( ( o210 & o510 ) v ( ( o210 & o610 ) v ( ( o210 & o710 ) v ( ( o210 & o810 ) v ( ( o210 & o910 ) v ( ( o210 & o1010 ) v ( ( o210 & o1110 ) v ( ( o310 & o410 ) v ( ( o310 & o510 ) v ( ( o310 & o610 ) v ( ( o310 & o710 ) v ( ( o310 & o810 ) v ( ( o310 & o910 ) v ( ( o310 & o1010 ) v ( ( o310 & o1110 ) v ( ( o410 & o510 ) v ( ( o410 & o610 ) v ( ( o410 & o710 ) v ( ( o410 & o810 ) v ( ( o410 & o910 ) v ( ( o410 & o1010 ) v ( ( o410 & o1110 ) v ( ( o510 & o610 ) v ( ( o510 & o710 ) v ( ( o510 & o810 ) v ( ( o510 & o910 ) v ( ( o510 & o1010 ) v ( ( o510 & o1110 ) v ( ( o610 & o710 ) v ( ( o610 & o810 ) v ( ( o610 & o910 ) v ( ( o610 & o1010 ) v ( ( o610 & o1110 ) v ( ( o710 & o810 ) v ( ( o710 & o910 ) v ( ( o710 & o1010 ) v ( ( o710 & o1110 ) v ( ( o810 & o910 ) v ( ( o810 & o1010 ) v ( ( o810 & o1110 ) v ( ( o910 & o1010 ) v ( ( o910 & o1110 ) v ( o1010 & o1110 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/ph_p.002.ljt
@@ -1,65 +0,0 @@-%-------------------------------------------------------------------------------% File     : ph_p2 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Cook pigeon-hole problem-% Version  : Especial.-%            Problem formulation : Prop. Non-Clausal. Intuit. Valid  Size 2-% English  : Suppose there are N holes and N+1 pigeons to put in the-%            holes. Every pigeon is in a hole and no hole contains more-%            than one pigeon. Prove that this is impossible. The size is-%            the number of pigeons.-%            LHS(N) => RHS(N) with -%            LHS(N) = &&_{p=1..N+1} (||_{h=1,..N} o(p,h) )-%            RHS(N) = ||_{h=1..N, p1=1..{N+1}, p2={p1+1}..{N+1}} s(p1,p2,h)-%            with s(p1,p2,h) = o(p1,h) & o(p2,h)--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [CR79]  Cook & Reckhow (1979), The Relative Efficiency of-%                    Propositional Proof Systems, Journal of Symbolic-%                    Logic 44, pp.36-50.--% Source   : [Dyc97]-% Names    : --% Status   : Theorem-% Rating   : 0.00 v 1.0-% Syntax   : Number of formulae    :    4 (   0 unit)-%            Number of atoms       :   18 (   0 equality)-%            Maximal formula depth :    7 (   3 average)-%            Number of connectives :   14 (   0 ~  ;   8  |;   6  &)-%                                         (   0 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    6 (   6 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : -%          : tptp2X -f ljt ph_p.002.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( o11 v o12 ))-- & --% axiom2, axiom.-(( o21 v o22 ))-- & --% axiom3, axiom.-(( o31 v o32 ))--  ->--% conjecture_name, conjecture.-(( ( o11 & o21 ) v ( ( o11 & o31 ) v ( ( o21 & o31 ) v ( ( o12 & o22 ) v ( ( o12 & o32 ) v ( o22 & o32 ) ) ) ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/ph_p.006.ljt
@@ -1,85 +0,0 @@-%-------------------------------------------------------------------------------% File     : ph_p6 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Cook pigeon-hole problem-% Version  : Especial.-%            Problem formulation : Prop. Non-Clausal. Intuit. Valid  Size 6-% English  : Suppose there are N holes and N+1 pigeons to put in the-%            holes. Every pigeon is in a hole and no hole contains more-%            than one pigeon. Prove that this is impossible. The size is-%            the number of pigeons.-%            LHS(N) => RHS(N) with -%            LHS(N) = &&_{p=1..N+1} (||_{h=1,..N} o(p,h) )-%            RHS(N) = ||_{h=1..N, p1=1..{N+1}, p2={p1+1}..{N+1}} s(p1,p2,h)-%            with s(p1,p2,h) = o(p1,h) & o(p2,h)--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [CR79]  Cook & Reckhow (1979), The Relative Efficiency of-%                    Propositional Proof Systems, Journal of Symbolic-%                    Logic 44, pp.36-50.--% Source   : [Dyc97]-% Names    : --% Status   : Theorem-% Rating   : 0.40 v 1.0-% Syntax   : Number of formulae    :    8 (   0 unit)-%            Number of atoms       :  294 (   0 equality)-%            Maximal formula depth :  127 (  21 average)-%            Number of connectives :  286 (   0 ~  ; 160  |; 126  &)-%                                         (   0 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :   42 (  42 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : -%          : tptp2X -f ljt ph_p.006.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( o11 v ( o12 v ( o13 v ( o14 v ( o15 v o16 ) ) ) ) ))-- & --% axiom2, axiom.-(( o21 v ( o22 v ( o23 v ( o24 v ( o25 v o26 ) ) ) ) ))-- & --% axiom3, axiom.-(( o31 v ( o32 v ( o33 v ( o34 v ( o35 v o36 ) ) ) ) ))-- & --% axiom4, axiom.-(( o41 v ( o42 v ( o43 v ( o44 v ( o45 v o46 ) ) ) ) ))-- & --% axiom5, axiom.-(( o51 v ( o52 v ( o53 v ( o54 v ( o55 v o56 ) ) ) ) ))-- & --% axiom6, axiom.-(( o61 v ( o62 v ( o63 v ( o64 v ( o65 v o66 ) ) ) ) ))-- & --% axiom7, axiom.-(( o71 v ( o72 v ( o73 v ( o74 v ( o75 v o76 ) ) ) ) ))--  ->--% conjecture_name, conjecture.-(( ( o11 & o21 ) v ( ( o11 & o31 ) v ( ( o11 & o41 ) v ( ( o11 & o51 ) v ( ( o11 & o61 ) v ( ( o11 & o71 ) v ( ( o21 & o31 ) v ( ( o21 & o41 ) v ( ( o21 & o51 ) v ( ( o21 & o61 ) v ( ( o21 & o71 ) v ( ( o31 & o41 ) v ( ( o31 & o51 ) v ( ( o31 & o61 ) v ( ( o31 & o71 ) v ( ( o41 & o51 ) v ( ( o41 & o61 ) v ( ( o41 & o71 ) v ( ( o51 & o61 ) v ( ( o51 & o71 ) v ( ( o61 & o71 ) v ( ( o12 & o22 ) v ( ( o12 & o32 ) v ( ( o12 & o42 ) v ( ( o12 & o52 ) v ( ( o12 & o62 ) v ( ( o12 & o72 ) v ( ( o22 & o32 ) v ( ( o22 & o42 ) v ( ( o22 & o52 ) v ( ( o22 & o62 ) v ( ( o22 & o72 ) v ( ( o32 & o42 ) v ( ( o32 & o52 ) v ( ( o32 & o62 ) v ( ( o32 & o72 ) v ( ( o42 & o52 ) v ( ( o42 & o62 ) v ( ( o42 & o72 ) v ( ( o52 & o62 ) v ( ( o52 & o72 ) v ( ( o62 & o72 ) v ( ( o13 & o23 ) v ( ( o13 & o33 ) v ( ( o13 & o43 ) v ( ( o13 & o53 ) v ( ( o13 & o63 ) v ( ( o13 & o73 ) v ( ( o23 & o33 ) v ( ( o23 & o43 ) v ( ( o23 & o53 ) v ( ( o23 & o63 ) v ( ( o23 & o73 ) v ( ( o33 & o43 ) v ( ( o33 & o53 ) v ( ( o33 & o63 ) v ( ( o33 & o73 ) v ( ( o43 & o53 ) v ( ( o43 & o63 ) v ( ( o43 & o73 ) v ( ( o53 & o63 ) v ( ( o53 & o73 ) v ( ( o63 & o73 ) v ( ( o14 & o24 ) v ( ( o14 & o34 ) v ( ( o14 & o44 ) v ( ( o14 & o54 ) v ( ( o14 & o64 ) v ( ( o14 & o74 ) v ( ( o24 & o34 ) v ( ( o24 & o44 ) v ( ( o24 & o54 ) v ( ( o24 & o64 ) v ( ( o24 & o74 ) v ( ( o34 & o44 ) v ( ( o34 & o54 ) v ( ( o34 & o64 ) v ( ( o34 & o74 ) v ( ( o44 & o54 ) v ( ( o44 & o64 ) v ( ( o44 & o74 ) v ( ( o54 & o64 ) v ( ( o54 & o74 ) v ( ( o64 & o74 ) v ( ( o15 & o25 ) v ( ( o15 & o35 ) v ( ( o15 & o45 ) v ( ( o15 & o55 ) v ( ( o15 & o65 ) v ( ( o15 & o75 ) v ( ( o25 & o35 ) v ( ( o25 & o45 ) v ( ( o25 & o55 ) v ( ( o25 & o65 ) v ( ( o25 & o75 ) v ( ( o35 & o45 ) v ( ( o35 & o55 ) v ( ( o35 & o65 ) v ( ( o35 & o75 ) v ( ( o45 & o55 ) v ( ( o45 & o65 ) v ( ( o45 & o75 ) v ( ( o55 & o65 ) v ( ( o55 & o75 ) v ( ( o65 & o75 ) v ( ( o16 & o26 ) v ( ( o16 & o36 ) v ( ( o16 & o46 ) v ( ( o16 & o56 ) v ( ( o16 & o66 ) v ( ( o16 & o76 ) v ( ( o26 & o36 ) v ( ( o26 & o46 ) v ( ( o26 & o56 ) v ( ( o26 & o66 ) v ( ( o26 & o76 ) v ( ( o36 & o46 ) v ( ( o36 & o56 ) v ( ( o36 & o66 ) v ( ( o36 & o76 ) v ( ( o46 & o56 ) v ( ( o46 & o66 ) v ( ( o46 & o76 ) v ( ( o56 & o66 ) v ( ( o56 & o76 ) v ( o66 & o76 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/ph_p.010.ljt
@@ -1,105 +0,0 @@-%-------------------------------------------------------------------------------% File     : ph_p10 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Cook pigeon-hole problem-% Version  : Especial.-%            Problem formulation : Prop. Non-Clausal. Intuit. Valid  Size 10-% English  : Suppose there are N holes and N+1 pigeons to put in the-%            holes. Every pigeon is in a hole and no hole contains more-%            than one pigeon. Prove that this is impossible. The size is-%            the number of pigeons.-%            LHS(N) => RHS(N) with -%            LHS(N) = &&_{p=1..N+1} (||_{h=1,..N} o(p,h) )-%            RHS(N) = ||_{h=1..N, p1=1..{N+1}, p2={p1+1}..{N+1}} s(p1,p2,h)-%            with s(p1,p2,h) = o(p1,h) & o(p2,h)--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [CR79]  Cook & Reckhow (1979), The Relative Efficiency of-%                    Propositional Proof Systems, Journal of Symbolic-%                    Logic 44, pp.36-50.--% Source   : [Dyc97]-% Names    : --% Status   : Theorem-% Rating   : 1.00 v 1.0-% Syntax   : Number of formulae    :   12 (   0 unit)-%            Number of atoms       : 1210 (   0 equality)-%            Maximal formula depth :  551 (  55 average)-%            Number of connectives : 1198 (   0 ~  ; 648  |; 550  &)-%                                         (   0 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :  110 ( 110 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : -%          : tptp2X -f ljt ph_p.010.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( o11 v ( o12 v ( o13 v ( o14 v ( o15 v ( o16 v ( o17 v ( o18 v ( o19 v o110 ) ) ) ) ) ) ) ) ))-- & --% axiom2, axiom.-(( o21 v ( o22 v ( o23 v ( o24 v ( o25 v ( o26 v ( o27 v ( o28 v ( o29 v o210 ) ) ) ) ) ) ) ) ))-- & --% axiom3, axiom.-(( o31 v ( o32 v ( o33 v ( o34 v ( o35 v ( o36 v ( o37 v ( o38 v ( o39 v o310 ) ) ) ) ) ) ) ) ))-- & --% axiom4, axiom.-(( o41 v ( o42 v ( o43 v ( o44 v ( o45 v ( o46 v ( o47 v ( o48 v ( o49 v o410 ) ) ) ) ) ) ) ) ))-- & --% axiom5, axiom.-(( o51 v ( o52 v ( o53 v ( o54 v ( o55 v ( o56 v ( o57 v ( o58 v ( o59 v o510 ) ) ) ) ) ) ) ) ))-- & --% axiom6, axiom.-(( o61 v ( o62 v ( o63 v ( o64 v ( o65 v ( o66 v ( o67 v ( o68 v ( o69 v o610 ) ) ) ) ) ) ) ) ))-- & --% axiom7, axiom.-(( o71 v ( o72 v ( o73 v ( o74 v ( o75 v ( o76 v ( o77 v ( o78 v ( o79 v o710 ) ) ) ) ) ) ) ) ))-- & --% axiom8, axiom.-(( o81 v ( o82 v ( o83 v ( o84 v ( o85 v ( o86 v ( o87 v ( o88 v ( o89 v o810 ) ) ) ) ) ) ) ) ))-- & --% axiom9, axiom.-(( o91 v ( o92 v ( o93 v ( o94 v ( o95 v ( o96 v ( o97 v ( o98 v ( o99 v o910 ) ) ) ) ) ) ) ) ))-- & --% axiom10, axiom.-(( o101 v ( o102 v ( o103 v ( o104 v ( o105 v ( o106 v ( o107 v ( o108 v ( o109 v o1010 ) ) ) ) ) ) ) ) ))-- & --% axiom11, axiom.-(( o111 v ( o112 v ( o113 v ( o114 v ( o115 v ( o116 v ( o117 v ( o118 v ( o119 v o1110 ) ) ) ) ) ) ) ) ))--  ->--% conjecture_name, conjecture.-(( ( o11 & o21 ) v ( ( o11 & o31 ) v ( ( o11 & o41 ) v ( ( o11 & o51 ) v ( ( o11 & o61 ) v ( ( o11 & o71 ) v ( ( o11 & o81 ) v ( ( o11 & o91 ) v ( ( o11 & o101 ) v ( ( o11 & o111 ) v ( ( o21 & o31 ) v ( ( o21 & o41 ) v ( ( o21 & o51 ) v ( ( o21 & o61 ) v ( ( o21 & o71 ) v ( ( o21 & o81 ) v ( ( o21 & o91 ) v ( ( o21 & o101 ) v ( ( o21 & o111 ) v ( ( o31 & o41 ) v ( ( o31 & o51 ) v ( ( o31 & o61 ) v ( ( o31 & o71 ) v ( ( o31 & o81 ) v ( ( o31 & o91 ) v ( ( o31 & o101 ) v ( ( o31 & o111 ) v ( ( o41 & o51 ) v ( ( o41 & o61 ) v ( ( o41 & o71 ) v ( ( o41 & o81 ) v ( ( o41 & o91 ) v ( ( o41 & o101 ) v ( ( o41 & o111 ) v ( ( o51 & o61 ) v ( ( o51 & o71 ) v ( ( o51 & o81 ) v ( ( o51 & o91 ) v ( ( o51 & o101 ) v ( ( o51 & o111 ) v ( ( o61 & o71 ) v ( ( o61 & o81 ) v ( ( o61 & o91 ) v ( ( o61 & o101 ) v ( ( o61 & o111 ) v ( ( o71 & o81 ) v ( ( o71 & o91 ) v ( ( o71 & o101 ) v ( ( o71 & o111 ) v ( ( o81 & o91 ) v ( ( o81 & o101 ) v ( ( o81 & o111 ) v ( ( o91 & o101 ) v ( ( o91 & o111 ) v ( ( o101 & o111 ) v ( ( o12 & o22 ) v ( ( o12 & o32 ) v ( ( o12 & o42 ) v ( ( o12 & o52 ) v ( ( o12 & o62 ) v ( ( o12 & o72 ) v ( ( o12 & o82 ) v ( ( o12 & o92 ) v ( ( o12 & o102 ) v ( ( o12 & o112 ) v ( ( o22 & o32 ) v ( ( o22 & o42 ) v ( ( o22 & o52 ) v ( ( o22 & o62 ) v ( ( o22 & o72 ) v ( ( o22 & o82 ) v ( ( o22 & o92 ) v ( ( o22 & o102 ) v ( ( o22 & o112 ) v ( ( o32 & o42 ) v ( ( o32 & o52 ) v ( ( o32 & o62 ) v ( ( o32 & o72 ) v ( ( o32 & o82 ) v ( ( o32 & o92 ) v ( ( o32 & o102 ) v ( ( o32 & o112 ) v ( ( o42 & o52 ) v ( ( o42 & o62 ) v ( ( o42 & o72 ) v ( ( o42 & o82 ) v ( ( o42 & o92 ) v ( ( o42 & o102 ) v ( ( o42 & o112 ) v ( ( o52 & o62 ) v ( ( o52 & o72 ) v ( ( o52 & o82 ) v ( ( o52 & o92 ) v ( ( o52 & o102 ) v ( ( o52 & o112 ) v ( ( o62 & o72 ) v ( ( o62 & o82 ) v ( ( o62 & o92 ) v ( ( o62 & o102 ) v ( ( o62 & o112 ) v ( ( o72 & o82 ) v ( ( o72 & o92 ) v ( ( o72 & o102 ) v ( ( o72 & o112 ) v ( ( o82 & o92 ) v ( ( o82 & o102 ) v ( ( o82 & o112 ) v ( ( o92 & o102 ) v ( ( o92 & o112 ) v ( ( o102 & o112 ) v ( ( o13 & o23 ) v ( ( o13 & o33 ) v ( ( o13 & o43 ) v ( ( o13 & o53 ) v ( ( o13 & o63 ) v ( ( o13 & o73 ) v ( ( o13 & o83 ) v ( ( o13 & o93 ) v ( ( o13 & o103 ) v ( ( o13 & o113 ) v ( ( o23 & o33 ) v ( ( o23 & o43 ) v ( ( o23 & o53 ) v ( ( o23 & o63 ) v ( ( o23 & o73 ) v ( ( o23 & o83 ) v ( ( o23 & o93 ) v ( ( o23 & o103 ) v ( ( o23 & o113 ) v ( ( o33 & o43 ) v ( ( o33 & o53 ) v ( ( o33 & o63 ) v ( ( o33 & o73 ) v ( ( o33 & o83 ) v ( ( o33 & o93 ) v ( ( o33 & o103 ) v ( ( o33 & o113 ) v ( ( o43 & o53 ) v ( ( o43 & o63 ) v ( ( o43 & o73 ) v ( ( o43 & o83 ) v ( ( o43 & o93 ) v ( ( o43 & o103 ) v ( ( o43 & o113 ) v ( ( o53 & o63 ) v ( ( o53 & o73 ) v ( ( o53 & o83 ) v ( ( o53 & o93 ) v ( ( o53 & o103 ) v ( ( o53 & o113 ) v ( ( o63 & o73 ) v ( ( o63 & o83 ) v ( ( o63 & o93 ) v ( ( o63 & o103 ) v ( ( o63 & o113 ) v ( ( o73 & o83 ) v ( ( o73 & o93 ) v ( ( o73 & o103 ) v ( ( o73 & o113 ) v ( ( o83 & o93 ) v ( ( o83 & o103 ) v ( ( o83 & o113 ) v ( ( o93 & o103 ) v ( ( o93 & o113 ) v ( ( o103 & o113 ) v ( ( o14 & o24 ) v ( ( o14 & o34 ) v ( ( o14 & o44 ) v ( ( o14 & o54 ) v ( ( o14 & o64 ) v ( ( o14 & o74 ) v ( ( o14 & o84 ) v ( ( o14 & o94 ) v ( ( o14 & o104 ) v ( ( o14 & o114 ) v ( ( o24 & o34 ) v ( ( o24 & o44 ) v ( ( o24 & o54 ) v ( ( o24 & o64 ) v ( ( o24 & o74 ) v ( ( o24 & o84 ) v ( ( o24 & o94 ) v ( ( o24 & o104 ) v ( ( o24 & o114 ) v ( ( o34 & o44 ) v ( ( o34 & o54 ) v ( ( o34 & o64 ) v ( ( o34 & o74 ) v ( ( o34 & o84 ) v ( ( o34 & o94 ) v ( ( o34 & o104 ) v ( ( o34 & o114 ) v ( ( o44 & o54 ) v ( ( o44 & o64 ) v ( ( o44 & o74 ) v ( ( o44 & o84 ) v ( ( o44 & o94 ) v ( ( o44 & o104 ) v ( ( o44 & o114 ) v ( ( o54 & o64 ) v ( ( o54 & o74 ) v ( ( o54 & o84 ) v ( ( o54 & o94 ) v ( ( o54 & o104 ) v ( ( o54 & o114 ) v ( ( o64 & o74 ) v ( ( o64 & o84 ) v ( ( o64 & o94 ) v ( ( o64 & o104 ) v ( ( o64 & o114 ) v ( ( o74 & o84 ) v ( ( o74 & o94 ) v ( ( o74 & o104 ) v ( ( o74 & o114 ) v ( ( o84 & o94 ) v ( ( o84 & o104 ) v ( ( o84 & o114 ) v ( ( o94 & o104 ) v ( ( o94 & o114 ) v ( ( o104 & o114 ) v ( ( o15 & o25 ) v ( ( o15 & o35 ) v ( ( o15 & o45 ) v ( ( o15 & o55 ) v ( ( o15 & o65 ) v ( ( o15 & o75 ) v ( ( o15 & o85 ) v ( ( o15 & o95 ) v ( ( o15 & o105 ) v ( ( o15 & o115 ) v ( ( o25 & o35 ) v ( ( o25 & o45 ) v ( ( o25 & o55 ) v ( ( o25 & o65 ) v ( ( o25 & o75 ) v ( ( o25 & o85 ) v ( ( o25 & o95 ) v ( ( o25 & o105 ) v ( ( o25 & o115 ) v ( ( o35 & o45 ) v ( ( o35 & o55 ) v ( ( o35 & o65 ) v ( ( o35 & o75 ) v ( ( o35 & o85 ) v ( ( o35 & o95 ) v ( ( o35 & o105 ) v ( ( o35 & o115 ) v ( ( o45 & o55 ) v ( ( o45 & o65 ) v ( ( o45 & o75 ) v ( ( o45 & o85 ) v ( ( o45 & o95 ) v ( ( o45 & o105 ) v ( ( o45 & o115 ) v ( ( o55 & o65 ) v ( ( o55 & o75 ) v ( ( o55 & o85 ) v ( ( o55 & o95 ) v ( ( o55 & o105 ) v ( ( o55 & o115 ) v ( ( o65 & o75 ) v ( ( o65 & o85 ) v ( ( o65 & o95 ) v ( ( o65 & o105 ) v ( ( o65 & o115 ) v ( ( o75 & o85 ) v ( ( o75 & o95 ) v ( ( o75 & o105 ) v ( ( o75 & o115 ) v ( ( o85 & o95 ) v ( ( o85 & o105 ) v ( ( o85 & o115 ) v ( ( o95 & o105 ) v ( ( o95 & o115 ) v ( ( o105 & o115 ) v ( ( o16 & o26 ) v ( ( o16 & o36 ) v ( ( o16 & o46 ) v ( ( o16 & o56 ) v ( ( o16 & o66 ) v ( ( o16 & o76 ) v ( ( o16 & o86 ) v ( ( o16 & o96 ) v ( ( o16 & o106 ) v ( ( o16 & o116 ) v ( ( o26 & o36 ) v ( ( o26 & o46 ) v ( ( o26 & o56 ) v ( ( o26 & o66 ) v ( ( o26 & o76 ) v ( ( o26 & o86 ) v ( ( o26 & o96 ) v ( ( o26 & o106 ) v ( ( o26 & o116 ) v ( ( o36 & o46 ) v ( ( o36 & o56 ) v ( ( o36 & o66 ) v ( ( o36 & o76 ) v ( ( o36 & o86 ) v ( ( o36 & o96 ) v ( ( o36 & o106 ) v ( ( o36 & o116 ) v ( ( o46 & o56 ) v ( ( o46 & o66 ) v ( ( o46 & o76 ) v ( ( o46 & o86 ) v ( ( o46 & o96 ) v ( ( o46 & o106 ) v ( ( o46 & o116 ) v ( ( o56 & o66 ) v ( ( o56 & o76 ) v ( ( o56 & o86 ) v ( ( o56 & o96 ) v ( ( o56 & o106 ) v ( ( o56 & o116 ) v ( ( o66 & o76 ) v ( ( o66 & o86 ) v ( ( o66 & o96 ) v ( ( o66 & o106 ) v ( ( o66 & o116 ) v ( ( o76 & o86 ) v ( ( o76 & o96 ) v ( ( o76 & o106 ) v ( ( o76 & o116 ) v ( ( o86 & o96 ) v ( ( o86 & o106 ) v ( ( o86 & o116 ) v ( ( o96 & o106 ) v ( ( o96 & o116 ) v ( ( o106 & o116 ) v ( ( o17 & o27 ) v ( ( o17 & o37 ) v ( ( o17 & o47 ) v ( ( o17 & o57 ) v ( ( o17 & o67 ) v ( ( o17 & o77 ) v ( ( o17 & o87 ) v ( ( o17 & o97 ) v ( ( o17 & o107 ) v ( ( o17 & o117 ) v ( ( o27 & o37 ) v ( ( o27 & o47 ) v ( ( o27 & o57 ) v ( ( o27 & o67 ) v ( ( o27 & o77 ) v ( ( o27 & o87 ) v ( ( o27 & o97 ) v ( ( o27 & o107 ) v ( ( o27 & o117 ) v ( ( o37 & o47 ) v ( ( o37 & o57 ) v ( ( o37 & o67 ) v ( ( o37 & o77 ) v ( ( o37 & o87 ) v ( ( o37 & o97 ) v ( ( o37 & o107 ) v ( ( o37 & o117 ) v ( ( o47 & o57 ) v ( ( o47 & o67 ) v ( ( o47 & o77 ) v ( ( o47 & o87 ) v ( ( o47 & o97 ) v ( ( o47 & o107 ) v ( ( o47 & o117 ) v ( ( o57 & o67 ) v ( ( o57 & o77 ) v ( ( o57 & o87 ) v ( ( o57 & o97 ) v ( ( o57 & o107 ) v ( ( o57 & o117 ) v ( ( o67 & o77 ) v ( ( o67 & o87 ) v ( ( o67 & o97 ) v ( ( o67 & o107 ) v ( ( o67 & o117 ) v ( ( o77 & o87 ) v ( ( o77 & o97 ) v ( ( o77 & o107 ) v ( ( o77 & o117 ) v ( ( o87 & o97 ) v ( ( o87 & o107 ) v ( ( o87 & o117 ) v ( ( o97 & o107 ) v ( ( o97 & o117 ) v ( ( o107 & o117 ) v ( ( o18 & o28 ) v ( ( o18 & o38 ) v ( ( o18 & o48 ) v ( ( o18 & o58 ) v ( ( o18 & o68 ) v ( ( o18 & o78 ) v ( ( o18 & o88 ) v ( ( o18 & o98 ) v ( ( o18 & o108 ) v ( ( o18 & o118 ) v ( ( o28 & o38 ) v ( ( o28 & o48 ) v ( ( o28 & o58 ) v ( ( o28 & o68 ) v ( ( o28 & o78 ) v ( ( o28 & o88 ) v ( ( o28 & o98 ) v ( ( o28 & o108 ) v ( ( o28 & o118 ) v ( ( o38 & o48 ) v ( ( o38 & o58 ) v ( ( o38 & o68 ) v ( ( o38 & o78 ) v ( ( o38 & o88 ) v ( ( o38 & o98 ) v ( ( o38 & o108 ) v ( ( o38 & o118 ) v ( ( o48 & o58 ) v ( ( o48 & o68 ) v ( ( o48 & o78 ) v ( ( o48 & o88 ) v ( ( o48 & o98 ) v ( ( o48 & o108 ) v ( ( o48 & o118 ) v ( ( o58 & o68 ) v ( ( o58 & o78 ) v ( ( o58 & o88 ) v ( ( o58 & o98 ) v ( ( o58 & o108 ) v ( ( o58 & o118 ) v ( ( o68 & o78 ) v ( ( o68 & o88 ) v ( ( o68 & o98 ) v ( ( o68 & o108 ) v ( ( o68 & o118 ) v ( ( o78 & o88 ) v ( ( o78 & o98 ) v ( ( o78 & o108 ) v ( ( o78 & o118 ) v ( ( o88 & o98 ) v ( ( o88 & o108 ) v ( ( o88 & o118 ) v ( ( o98 & o108 ) v ( ( o98 & o118 ) v ( ( o108 & o118 ) v ( ( o19 & o29 ) v ( ( o19 & o39 ) v ( ( o19 & o49 ) v ( ( o19 & o59 ) v ( ( o19 & o69 ) v ( ( o19 & o79 ) v ( ( o19 & o89 ) v ( ( o19 & o99 ) v ( ( o19 & o109 ) v ( ( o19 & o119 ) v ( ( o29 & o39 ) v ( ( o29 & o49 ) v ( ( o29 & o59 ) v ( ( o29 & o69 ) v ( ( o29 & o79 ) v ( ( o29 & o89 ) v ( ( o29 & o99 ) v ( ( o29 & o109 ) v ( ( o29 & o119 ) v ( ( o39 & o49 ) v ( ( o39 & o59 ) v ( ( o39 & o69 ) v ( ( o39 & o79 ) v ( ( o39 & o89 ) v ( ( o39 & o99 ) v ( ( o39 & o109 ) v ( ( o39 & o119 ) v ( ( o49 & o59 ) v ( ( o49 & o69 ) v ( ( o49 & o79 ) v ( ( o49 & o89 ) v ( ( o49 & o99 ) v ( ( o49 & o109 ) v ( ( o49 & o119 ) v ( ( o59 & o69 ) v ( ( o59 & o79 ) v ( ( o59 & o89 ) v ( ( o59 & o99 ) v ( ( o59 & o109 ) v ( ( o59 & o119 ) v ( ( o69 & o79 ) v ( ( o69 & o89 ) v ( ( o69 & o99 ) v ( ( o69 & o109 ) v ( ( o69 & o119 ) v ( ( o79 & o89 ) v ( ( o79 & o99 ) v ( ( o79 & o109 ) v ( ( o79 & o119 ) v ( ( o89 & o99 ) v ( ( o89 & o109 ) v ( ( o89 & o119 ) v ( ( o99 & o109 ) v ( ( o99 & o119 ) v ( ( o109 & o119 ) v ( ( o110 & o210 ) v ( ( o110 & o310 ) v ( ( o110 & o410 ) v ( ( o110 & o510 ) v ( ( o110 & o610 ) v ( ( o110 & o710 ) v ( ( o110 & o810 ) v ( ( o110 & o910 ) v ( ( o110 & o1010 ) v ( ( o110 & o1110 ) v ( ( o210 & o310 ) v ( ( o210 & o410 ) v ( ( o210 & o510 ) v ( ( o210 & o610 ) v ( ( o210 & o710 ) v ( ( o210 & o810 ) v ( ( o210 & o910 ) v ( ( o210 & o1010 ) v ( ( o210 & o1110 ) v ( ( o310 & o410 ) v ( ( o310 & o510 ) v ( ( o310 & o610 ) v ( ( o310 & o710 ) v ( ( o310 & o810 ) v ( ( o310 & o910 ) v ( ( o310 & o1010 ) v ( ( o310 & o1110 ) v ( ( o410 & o510 ) v ( ( o410 & o610 ) v ( ( o410 & o710 ) v ( ( o410 & o810 ) v ( ( o410 & o910 ) v ( ( o410 & o1010 ) v ( ( o410 & o1110 ) v ( ( o510 & o610 ) v ( ( o510 & o710 ) v ( ( o510 & o810 ) v ( ( o510 & o910 ) v ( ( o510 & o1010 ) v ( ( o510 & o1110 ) v ( ( o610 & o710 ) v ( ( o610 & o810 ) v ( ( o610 & o910 ) v ( ( o610 & o1010 ) v ( ( o610 & o1110 ) v ( ( o710 & o810 ) v ( ( o710 & o910 ) v ( ( o710 & o1010 ) v ( ( o710 & o1110 ) v ( ( o810 & o910 ) v ( ( o810 & o1010 ) v ( ( o810 & o1110 ) v ( ( o910 & o1010 ) v ( ( o910 & o1110 ) v ( o1010 & o1110 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/sch_ax.ljt
@@ -1,44 +0,0 @@-%-------------------------------------------------------------------------------% File     : ax : JProver test formulae (2000)-% Domain   : Syntactic-% Problem  : -% Version  : Especial.-% English  : --% Refs     : [SN00]  S. Schmitt & A. Nogin: test module "jprover_tests.ml",-%                    test formulas for JProver in MetaPRL, at-%                    http://cvs.metaprl.org:12000/cvsweb/metaprl/theories/-%                         itt/jprover_tests.ml-% Source   : [SN00]-% Names    : --% Status   : Theorem-% Rating   : 0.00 v 1.0-% Syntax   : Number of formulae    :    2 (   2 unit)-%            Number of atoms       :    2 (   0 equality)-%            Maximal formula depth :    1 (   1 average)-%            Number of connectives :    0 (   0 ~  ;   0  |;   0  &)-%                                         (   0 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    1 (   1 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : -%          : tptp2X -f ljt sch_ax.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(a)--  ->--% conjecture_name, conjecture.-(a)--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/sch_implies.ljt
@@ -1,44 +0,0 @@-%-------------------------------------------------------------------------------% File     : implies : JProver test formulae (2000)-% Domain   : Syntactic-% Problem  : -% Version  : Especial.-% English  : --% Refs     : [SN00]  S. Schmitt & A. Nogin: test module "jprover_tests.ml",-%                    test formulas for JProver in MetaPRL, at-%                    http://cvs.metaprl.org:12000/cvsweb/metaprl/theories/-%                         itt/jprover_tests.ml-% Source   : [SN00]-% Names    : --% Status   : Theorem-% Rating   : 0.00 v 1.0-% Syntax   : Number of formulae    :    2 (   0 unit)-%            Number of atoms       :    4 (   0 equality)-%            Maximal formula depth :    2 (   2 average)-%            Number of connectives :    2 (   0 ~  ;   0  |;   0  &)-%                                         (   0 <=>;   2 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    2 (   2 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : -%          : tptp2X -f ljt sch_implies.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( a -> b ))--  ->--% conjecture_name, conjecture.-(( a -> b ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/sch_jens_prop.ljt
@@ -1,53 +0,0 @@-%-------------------------------------------------------------------------------% File     : jens_prop : JProver test formulae (2000)-% Domain   : Syntactic-% Problem  : -% Version  : Especial.-% English  : --% Refs     : [SN00]  S. Schmitt & A. Nogin: test module "jprover_tests.ml",-%                    test formulas for JProver in MetaPRL, at-%                    http://cvs.metaprl.org:12000/cvsweb/metaprl/theories/-%                         itt/jprover_tests.ml-%            [OK96] J. Otten und C. Kreitz. A uniform proof procedure-%                   for classical and non-classical logics. In KI-96: -%                   Advances in Artificial Intelligence, LNAI 1137, -%                   p. 307-319, Springer Verlag, 1996.-% Source   : [SN00]-% Names    : --% Status   : Theorem-% Rating   : 0.00 v 1.0-% Syntax   : Number of formulae    :    3 (   1 unit)-%            Number of atoms       :   11 (   0 equality)-%            Maximal formula depth :    5 (   3 average)-%            Number of connectives :   12 (   4 ~  ;   0  |;   3  &)-%                                         (   0 <=>;   5 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    5 (   5 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : -%          : tptp2X -f ljt sch_jens_prop.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(s)-- & --% axiom2, axiom.-(( ( ~ ( t -> r ) ) -> p ))--  ->--% conjecture_name, conjecture.-(( ( ~ ( ( p -> q ) & ( t -> r ) ) ) -> ( ( ~ ( ~ p ) ) & ( s & s ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/sch_mult.002.ljt
@@ -1,41 +0,0 @@-%-------------------------------------------------------------------------------% File     : mult2 : JProver test formulae (2000)-% Domain   : Syntactic-% Problem  : -% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 2-% English  : --% Refs     : [SN00]  S. Schmitt & A. Nogin: test module "jprover_tests.ml",-%                    test formulas for JProver in MetaPRL, at-%                    http://cvs.metaprl.org:12000/cvsweb/metaprl/theories/-%                         itt/jprover_tests.ml-% Source   : [SN00]-% Names    : --% Status   : Theorem-% Rating   : 0.00 v 1.0-% Syntax   : Number of formulae    :    1 (   0 unit)-%            Number of atoms       :    2 (   0 equality)-%            Maximal formula depth :    5 (   5 average)-%            Number of connectives :    4 (   3 ~  ;   1  |;   0  &)-%                                         (   0 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    1 (   1 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : Generating muliply used subformulae, i.e. the negation-left -%            subformula has to be used <size> times in a proof-%          : tptp2X -f ljt sch_mult.002.p -%--------------------------------------------------------------------------------f((--% conjecture_name, conjecture.-(( ~ ( ~ ( a v ( ~ a ) ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/sch_mult.003.ljt
@@ -1,41 +0,0 @@-%-------------------------------------------------------------------------------% File     : mult3 : JProver test formulae (2000)-% Domain   : Syntactic-% Problem  : -% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 3-% English  : --% Refs     : [SN00]  S. Schmitt & A. Nogin: test module "jprover_tests.ml",-%                    test formulas for JProver in MetaPRL, at-%                    http://cvs.metaprl.org:12000/cvsweb/metaprl/theories/-%                         itt/jprover_tests.ml-% Source   : [SN00]-% Names    : --% Status   : Theorem-% Rating   : 0.00 v 1.0-% Syntax   : Number of formulae    :    1 (   0 unit)-%            Number of atoms       :    4 (   0 equality)-%            Maximal formula depth :    6 (   6 average)-%            Number of connectives :    7 (   4 ~  ;   2  |;   1  &)-%                                         (   0 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    2 (   2 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : Generating muliply used subformulae, i.e. the negation-left -%            subformula has to be used <size> times in a proof-%          : tptp2X -f ljt sch_mult.003.p -%--------------------------------------------------------------------------------f((--% conjecture_name, conjecture.-(( ~ ( ~ ( ( a & b ) v ( ( ~ a ) v ( ~ b ) ) ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/sch_mult.004.ljt
@@ -1,42 +0,0 @@-%-------------------------------------------------------------------------------% File     : mult4 : JProver test formulae (2000)-% Domain   : Syntactic-% Problem  : -% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 4-% English  : --% Refs     : [SN00]  S. Schmitt & A. Nogin: test module "jprover_tests.ml",-%                    test formulas for JProver in MetaPRL, at-%                    http://cvs.metaprl.org:12000/cvsweb/metaprl/theories/-%                         itt/jprover_tests.ml-% Source   : [SN00]-% Names    : --% Status   : Theorem-% Rating   : 0.00 v 1.0-% Syntax   : Number of formulae    :    1 (   0 unit)-%            Number of atoms       :    6 (   0 equality)-%            Maximal formula depth :    7 (   7 average)-%            Number of connectives :   10 (   5 ~  ;   3  |;   2  &)-%                                         (   0 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    3 (   3 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)---% Comments : Generating muliply used subformulae, i.e. the negation-left -%            subformula has to be used <size> times in a proof-%          : tptp2X -f ljt sch_mult.004.p -%--------------------------------------------------------------------------------f((--% conjecture_name, conjecture.-(( ~ ( ~ ( ( a & ( b & c ) ) v ( ( ~ a ) v ( ( ~ b ) v ( ~ c ) ) ) ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/sch_notnot.ljt
@@ -1,44 +0,0 @@-%-------------------------------------------------------------------------------% File     : notnot : JProver test formulae (2000)-% Domain   : Syntactic-% Problem  : -% Version  : Especial.-% English  : --% Refs     : [SN00]  S. Schmitt & A. Nogin: test module "jprover_tests.ml",-%                    test formulas for JProver in MetaPRL, at-%                    http://cvs.metaprl.org:12000/cvsweb/metaprl/theories/-%                         itt/jprover_tests.ml-% Source   : [SN00]-% Names    : --% Status   : Theorem-% Rating   : 0.00 v 1.0-% Syntax   : Number of formulae    :    2 (   2 unit)-%            Number of atoms       :    2 (   0 equality)-%            Maximal formula depth :    3 (   2 average)-%            Number of connectives :    2 (   2 ~  ;   0  |;   0  &)-%                                         (   0 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    1 (   1 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : -%          : tptp2X -f ljt sch_notnot.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(a)--  ->--% conjecture_name, conjecture.-(( ~ ( ~ a ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/sch_notnot2.ljt
@@ -1,44 +0,0 @@-%-------------------------------------------------------------------------------% File     : notnot2 : JProver test formulae (2000)-% Domain   : Syntactic-% Problem  : -% Version  : Especial.-% English  : --% Refs     : [SN00]  S. Schmitt & A. Nogin: test module "jprover_tests.ml",-%                    test formulas for JProver in MetaPRL, at-%                    http://cvs.metaprl.org:12000/cvsweb/metaprl/theories/-%                         itt/jprover_tests.ml-% Source   : [SN00]-% Names    : --% Status   : Theorem-% Rating   : 0.00 v 1.0-% Syntax   : Number of formulae    :    2 (   0 unit)-%            Number of atoms       :    4 (   0 equality)-%            Maximal formula depth :    3 (   3 average)-%            Number of connectives :    6 (   4 ~  ;   2  |;   0  &)-%                                         (   0 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    2 (   2 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : -%          : tptp2X -f ljt sch_notnot2.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( ( ~ a ) v ( ~ b ) ))--  ->--% conjecture_name, conjecture.-(( ( ~ b ) v ( ~ a ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/sch_prop_n.001.ljt
@@ -1,57 +0,0 @@-%-------------------------------------------------------------------------------% File     : prop_n1 : JProver test formulae (2000)-% Domain   : Syntactic-% Problem  : -% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 1-% English  : --% Refs     : [SN00]  S. Schmitt & A. Nogin: test module "jprover_tests.ml",-%                    test formulas for JProver in MetaPRL, at-%                    http://cvs.metaprl.org:12000/cvsweb/metaprl/theories/-%                         itt/jprover_tests.ml-%            [ES99]  U. Egly & S. Schmitt. On intuitionistic proof-%                    transformations, their complexity, and application to -%                    constructive program synthesis". Fundamenta -%                    Informaticae, Special Issue: Symbolic Computation and -%                    Artificial Intelligence, vol. 39, 1/2, p. 59-83, 1999-% Source   : [SN00]-% Names    : --% Status   : Theorem-% Rating   : 0.00 v 1.0-% Syntax   : Number of formulae    :    3 (   1 unit)-%            Number of atoms       :    7 (   0 equality)-%            Maximal formula depth :    3 (   2 average)-%            Number of connectives :    4 (   0 ~  ;   3  |;   1  &)-%                                         (   0 <=>;   0 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    3 (   3 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : cause exponential proof length in EVERY LJ proof wrt. the -%            proof length of a given LJmc proof in propositional -%            intuitionistic logic -%          : tptp2X -f ljt sch_prop_n.001.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(c)-- & --% axiom2, axiom.-(( ( b v a ) v b ))--  ->--% conjecture_name, conjecture.-(( a v ( b & c ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/sch_prop_n.002.ljt
@@ -1,62 +0,0 @@-%-------------------------------------------------------------------------------% File     : prop_n2 : JProver test formulae (2000)-% Domain   : Syntactic-% Problem  : -% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 2-% English  : --% Refs     : [SN00]  S. Schmitt & A. Nogin: test module "jprover_tests.ml",-%                    test formulas for JProver in MetaPRL, at-%                    http://cvs.metaprl.org:12000/cvsweb/metaprl/theories/-%                         itt/jprover_tests.ml-%            [ES99]  U. Egly & S. Schmitt. On intuitionistic proof-%                    transformations, their complexity, and application to -%                    constructive program synthesis. In Fundamenta -%                    Informaticae, Special Issue: Symbolic Computation and -%                    Artificial Intelligence, vol. 39, 1/2, p. 59-83, 1999-% Source   : [SN00]-% Names    : --% Status   : Theorem-% Rating   : 0.00 v 1.0-% Syntax   : Number of formulae    :    4 (   1 unit)-%            Number of atoms       :   13 (   0 equality)-%            Maximal formula depth :    4 (   3 average)-%            Number of connectives :    9 (   0 ~  ;   6  |;   2  &)-%                                         (   0 <=>;   1 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    5 (   5 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : cause exponential proof length in EVERY LJ proof wrt. the -%            proof length of a given LJmc proof in propositional -%            intuitionistic logic -%          : tptp2X -f ljt sch_prop_n.002.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(a2)-- & --% axiom2, axiom.-(( b -> ( ( b1 v a1 ) v b1 ) ))-- & --% axiom3, axiom.-(( ( b v a ) v b ))--  ->--% conjecture_name, conjecture.-(( a v ( ( b & a1 ) v ( b1 & a2 ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/sch_prop_n.003.ljt
@@ -1,67 +0,0 @@-%-------------------------------------------------------------------------------% File     : prop_n3 : JProver test formulae (2000)-% Domain   : Syntactic-% Problem  : -% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 3-% English  : --% Refs     : [SN00]  S. Schmitt & A. Nogin: test module "jprover_tests.ml",-%                    test formulas for JProver in MetaPRL, at-%                    http://cvs.metaprl.org:12000/cvsweb/metaprl/theories/-%                         itt/jprover_tests.ml-%            [ES99]  U. Egly & S. Schmitt. On intuitionistic proof-%                    transformations, their complexity, and application to -%                    constructive program synthesis. In Fundamenta -%                    Informaticae, Special Issue: Symbolic Computation and -%                    Artificial Intelligence, vol. 39, 1/2, p. 59-83, 1999-% Source   : [SN00]-% Names    : --% Status   : Theorem-% Rating   : 0.00 v 1.0-% Syntax   : Number of formulae    :    5 (   1 unit)-%            Number of atoms       :   19 (   0 equality)-%            Maximal formula depth :    5 (   3 average)-%            Number of connectives :   14 (   0 ~  ;   9  |;   3  &)-%                                         (   0 <=>;   2 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    7 (   7 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : cause exponential proof length in EVERY LJ proof wrt. the -%            proof length of a given LJmc proof in propositional -%            intuitionistic logic -%          : tptp2X -f ljt sch_prop_n.003.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(a3)-- & --% axiom2, axiom.-(( b1 -> ( ( b2 v a2 ) v b2 ) ))-- & --% axiom3, axiom.-(( b -> ( ( b1 v a1 ) v b1 ) ))-- & --% axiom4, axiom.-(( ( b v a ) v b ))--  ->--% conjecture_name, conjecture.-(( a v ( ( b & a1 ) v ( ( b1 & a2 ) v ( b2 & a3 ) ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/sch_prop_n.004.ljt
@@ -1,70 +0,0 @@-%-------------------------------------------------------------------------------% File     : prop_n4 : JProver test formulae (2000)-% Domain   : Syntactic-% Problem  : -% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 4-% English  : --% Refs     : [SN00]  S. Schmitt & A. Nogin: test module "jprover_tests.ml",-%                    test formulas for JProver in MetaPRL, at-%                    http://cvs.metaprl.org:12000/cvsweb/metaprl/theories/-%                         itt/jprover_tests.ml-%            [ES99]  U. Egly & S. Schmitt. On intuitionistic proof-%                    transformations, their complexity, and application to -%                    constructive program synthesis. Fundamenta -%                    Informaticae, Special Issue: Symbolic Computation and -%                    Artificial Intelligence, vol. 39, 1/2, p. 59-83, 1999-% Source   : [SN00]-% Names    : --% Status   : Theorem-% Rating   : 0.00 v 1.0-% Syntax   : Number of formulae    :    6 (   1 unit)-%            Number of atoms       :   25 (   0 equality)-%            Maximal formula depth :    6 (   3 average)-%            Number of connectives :   19 (   0 ~  ;  12  |;   4  &)-%                                         (   0 <=>;   3 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    9 (   9 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : -%          : tptp2X -f ljt sch_prop_n.004.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(a4)-- & --% axiom2, axiom.-(( b2 -> ( ( b3 v a3 ) v b3 ) ))-- & --% axiom3, axiom.-(( b1 -> ( ( b2 v a2 ) v b2 ) ))-- & --% axiom4, axiom.-(( b -> ( ( b1 v a1 ) v b1 ) ))-- & --% axiom5, axiom.-(( ( b v a ) v b ))--  ->--% conjecture_name, conjecture.-(( a v ( ( b & a1 ) v ( ( b1 & a2 ) v ( ( b2 & a3 ) v ( b3 & a4 ) ) ) ) ))--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/schwicht_n.002.ljt
@@ -1,61 +0,0 @@-%-------------------------------------------------------------------------------% File     : schwicht_n2 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Formulae with normal natural deduction proofs only of exponential size-% Version  : Especial.-%            Problem formulation : Inuit. Invalid.   Size 2-% English  : (~~p(N) & &&_{i=1..N} (p(i) => p(i) => p(i-1))) => p(0) --% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [Sch97] H. Schwichtenberg, Termination of permutative-%                    conversions in Gentzen's sequent calculus,-%                    unpublished (1997). -% Source   : [Dyc97]-% Names    : --% Status   : Non-Theorem-% Rating   : 0.40 v 1.0-% Syntax   : Number of formulae    :    4 (   2 unit)-%            Number of atoms       :    8 (   0 equality)-%            Maximal formula depth :    3 (   2 average)-%            Number of connectives :    6 (   2 ~  ;   0  |;   0  &)-%                                         (   0 <=>;   4 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    3 (   3 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : "...no normal natural deduction proof of size less than an-%             expontial function of N.-%            ..Our experience of these problems is that they can be decided-%            very fast but can generate space problems, e.g. for some-%            implementations of Prolog." [Dyc97]-%          : tptp2X -f ljt schwicht_n.002.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( ~ ( ~ p2 ) ))-- & --% axiom2, axiom.-(( p1 -> ( p1 -> p0 ) ))-- & --% axiom3, axiom.-(( p2 -> ( p2 -> p1 ) ))--  ->--% conjecture_name, conjecture.-(p0)--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/schwicht_n.006.ljt
@@ -1,81 +0,0 @@-%-------------------------------------------------------------------------------% File     : schwicht_n6 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Formulae with normal natural deduction proofs only of exponential size-% Version  : Especial.-%            Problem formulation : Inuit. Invalid.   Size 6-% English  : (~~p(N) & &&_{i=1..N} (p(i) => p(i) => p(i-1))) => p(0) --% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [Sch97] H. Schwichtenberg, Termination of permutative-%                    conversions in Gentzen's sequent calculus,-%                    unpublished (1997). -% Source   : [Dyc97]-% Names    : --% Status   : Non-Theorem-% Rating   : 0.40 v 1.0-% Syntax   : Number of formulae    :    8 (   2 unit)-%            Number of atoms       :   20 (   0 equality)-%            Maximal formula depth :    3 (   2 average)-%            Number of connectives :   14 (   2 ~  ;   0  |;   0  &)-%                                         (   0 <=>;  12 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    7 (   7 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : "...no normal natural deduction proof of size less than an-%             expontial function of N.-%            ..Our experience of these problems is that they can be decided-%            very fast but can generate space problems, e.g. for some-%            implementations of Prolog." [Dyc97]-%          : tptp2X -f ljt schwicht_n.006.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( ~ ( ~ p6 ) ))-- & --% axiom2, axiom.-(( p1 -> ( p1 -> p0 ) ))-- & --% axiom3, axiom.-(( p2 -> ( p2 -> p1 ) ))-- & --% axiom4, axiom.-(( p3 -> ( p3 -> p2 ) ))-- & --% axiom5, axiom.-(( p4 -> ( p4 -> p3 ) ))-- & --% axiom6, axiom.-(( p5 -> ( p5 -> p4 ) ))-- & --% axiom7, axiom.-(( p6 -> ( p6 -> p5 ) ))--  ->--% conjecture_name, conjecture.-(p0)--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/schwicht_n.010.ljt
@@ -1,101 +0,0 @@-%-------------------------------------------------------------------------------% File     : schwicht_n10 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Formulae with normal natural deduction proofs only of exponential size-% Version  : Especial.-%            Problem formulation : Inuit. Invalid.   Size 10-% English  : (~~p(N) & &&_{i=1..N} (p(i) => p(i) => p(i-1))) => p(0) --% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [Sch97] H. Schwichtenberg, Termination of permutative-%                    conversions in Gentzen's sequent calculus,-%                    unpublished (1997). -% Source   : [Dyc97]-% Names    : --% Status   : Non-Theorem-% Rating   : 0.40 v 1.0-% Syntax   : Number of formulae    :   12 (   2 unit)-%            Number of atoms       :   32 (   0 equality)-%            Maximal formula depth :    3 (   2 average)-%            Number of connectives :   22 (   2 ~  ;   0  |;   0  &)-%                                         (   0 <=>;  20 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :   11 (  11 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : "...no normal natural deduction proof of size less than an-%             expontial function of N.-%            ..Our experience of these problems is that they can be decided-%            very fast but can generate space problems, e.g. for some-%            implementations of Prolog." [Dyc97]-%          : tptp2X -f ljt schwicht_n.010.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(( ~ ( ~ p10 ) ))-- & --% axiom2, axiom.-(( p1 -> ( p1 -> p0 ) ))-- & --% axiom3, axiom.-(( p2 -> ( p2 -> p1 ) ))-- & --% axiom4, axiom.-(( p3 -> ( p3 -> p2 ) ))-- & --% axiom5, axiom.-(( p4 -> ( p4 -> p3 ) ))-- & --% axiom6, axiom.-(( p5 -> ( p5 -> p4 ) ))-- & --% axiom7, axiom.-(( p6 -> ( p6 -> p5 ) ))-- & --% axiom8, axiom.-(( p7 -> ( p7 -> p6 ) ))-- & --% axiom9, axiom.-(( p8 -> ( p8 -> p7 ) ))-- & --% axiom10, axiom.-(( p9 -> ( p9 -> p8 ) ))-- & --% axiom11, axiom.-(( p10 -> ( p10 -> p9 ) ))--  ->--% conjecture_name, conjecture.-(p0)--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/schwicht_p.002.ljt
@@ -1,61 +0,0 @@-%-------------------------------------------------------------------------------% File     : schwicht_p2 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Formulae with normal natural deduction proofs only of exponential size-% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 2-% English  : (p(N) & &&_{i=1..N} (p(i) => p(i) => p(i-1))) => p(0)--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [Sch97] H. Schwichtenberg, Termination of permutative-%                    conversions in Gentzen's sequent calculus,-%                    unpublished (1997). -% Source   : [Dyc97]-% Names    : --% Status   : Theorem-% Rating   : 0.00 v 1.0-% Syntax   : Number of formulae    :    4 (   2 unit)-%            Number of atoms       :    8 (   0 equality)-%            Maximal formula depth :    3 (   2 average)-%            Number of connectives :    4 (   0 ~  ;   0  |;   0  &)-%                                         (   0 <=>;   4 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    3 (   3 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : "...no normal natural deduction proof of size less than an-%             expontial function of N.-%            ..Our experience of these problems is that they can be decided-%            very fast but can generate space problems, e.g. for some-%            implementations of Prolog." [Dyc97]-%          : tptp2X -f ljt schwicht_p.002.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(p2)-- & --% axiom2, axiom.-(( p1 -> ( p1 -> p0 ) ))-- & --% axiom3, axiom.-(( p2 -> ( p2 -> p1 ) ))--  ->--% conjecture_name, conjecture.-(p0)--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/schwicht_p.006.ljt
@@ -1,81 +0,0 @@-%-------------------------------------------------------------------------------% File     : schwicht_p6 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Formulae with normal natural deduction proofs only of exponential size-% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 6-% English  : (p(N) & &&_{i=1..N} (p(i) => p(i) => p(i-1))) => p(0)--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [Sch97] H. Schwichtenberg, Termination of permutative-%                    conversions in Gentzen's sequent calculus,-%                    unpublished (1997). -% Source   : [Dyc97]-% Names    : --% Status   : Theorem-% Rating   : 0.40 v 1.0-% Syntax   : Number of formulae    :    8 (   2 unit)-%            Number of atoms       :   20 (   0 equality)-%            Maximal formula depth :    3 (   2 average)-%            Number of connectives :   12 (   0 ~  ;   0  |;   0  &)-%                                         (   0 <=>;  12 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :    7 (   7 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : "...no normal natural deduction proof of size less than an-%             expontial function of N.-%            ..Our experience of these problems is that they can be decided-%            very fast but can generate space problems, e.g. for some-%            implementations of Prolog." [Dyc97]-%          : tptp2X -f ljt schwicht_p.006.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(p6)-- & --% axiom2, axiom.-(( p1 -> ( p1 -> p0 ) ))-- & --% axiom3, axiom.-(( p2 -> ( p2 -> p1 ) ))-- & --% axiom4, axiom.-(( p3 -> ( p3 -> p2 ) ))-- & --% axiom5, axiom.-(( p4 -> ( p4 -> p3 ) ))-- & --% axiom6, axiom.-(( p5 -> ( p5 -> p4 ) ))-- & --% axiom7, axiom.-(( p6 -> ( p6 -> p5 ) ))--  ->--% conjecture_name, conjecture.-(p0)--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/ljt/schwicht_p.010.ljt
@@ -1,101 +0,0 @@-%-------------------------------------------------------------------------------% File     : schwicht_p10 : Dyckhoff's benchmark formulae (1997)-% Domain   : Syntactic-% Problem  : Formulae with normal natural deduction proofs only of exponential size-% Version  : Especial.-%            Problem formulation : Intuit. Valid  Size 10-% English  : (p(N) & &&_{i=1..N} (p(i) => p(i) => p(i-1))) => p(0)--% Refs     : [Dyc97] Roy Dyckhoff. Some benchmark formulae for-%                    intuitionistic propositional logic. At-%                    http://www.dcs.st-and.ac.uk/~rd/logic/marks.html-%          : [Sch97] H. Schwichtenberg, Termination of permutative-%                    conversions in Gentzen's sequent calculus,-%                    unpublished (1997). -% Source   : [Dyc97]-% Names    : --% Status   : Theorem-% Rating   : 0.40 v 1.0-% Syntax   : Number of formulae    :   12 (   2 unit)-%            Number of atoms       :   32 (   0 equality)-%            Maximal formula depth :    3 (   2 average)-%            Number of connectives :   20 (   0 ~  ;   0  |;   0  &)-%                                         (   0 <=>;  20 =>;   0 <=)-%                                         (   0 <~>;   0 ~|;   0 ~&)-%            Number of predicates  :   11 (  11 propositional; 0-0 arity)-%            Number of functors    :    0 (   0 constant; --- arity)-%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)-%            Maximal term depth    :    0 (   0 average)--% Comments : "...no normal natural deduction proof of size less than an-%             expontial function of N.-%            ..Our experience of these problems is that they can be decided-%            very fast but can generate space problems, e.g. for some-%            implementations of Prolog." [Dyc97]-%          : tptp2X -f ljt schwicht_p.010.p -%--------------------------------------------------------------------------------f((--% axiom1, axiom.-(p10)-- & --% axiom2, axiom.-(( p1 -> ( p1 -> p0 ) ))-- & --% axiom3, axiom.-(( p2 -> ( p2 -> p1 ) ))-- & --% axiom4, axiom.-(( p3 -> ( p3 -> p2 ) ))-- & --% axiom5, axiom.-(( p4 -> ( p4 -> p3 ) ))-- & --% axiom6, axiom.-(( p5 -> ( p5 -> p4 ) ))-- & --% axiom7, axiom.-(( p6 -> ( p6 -> p5 ) ))-- & --% axiom8, axiom.-(( p7 -> ( p7 -> p6 ) ))-- & --% axiom9, axiom.-(( p8 -> ( p8 -> p7 ) ))-- & --% axiom10, axiom.-(( p9 -> ( p9 -> p8 ) ))-- & --% axiom11, axiom.-(( p10 -> ( p10 -> p9 ) ))--  ->--% conjecture_name, conjecture.-(p0)--)).--%------------------------------------------------------------------------------
− scripts/Djinn/tests/testfiles.all
@@ -1,50 +0,0 @@-[-(False, "ljt/con_n.002.ljt"),-(False, "ljt/con_n.006.ljt"),-(False, "ljt/con_n.010.ljt"),-(True, "ljt/con_p.002.ljt"),-(True, "ljt/con_p.006.ljt"),-(True, "ljt/con_p.010.ljt"),-(False, "ljt/debruijn_n.002.ljt"),-(False, "ljt/debruijn_n.006.ljt"),-(False, "ljt/debruijn_n.010.ljt"),-(True, "ljt/debruijn_p.002.ljt"),-(True, "ljt/debruijn_p.006.ljt"),-(True, "ljt/debruijn_p.010.ljt"),-(False, "ljt/equiv_n.002.ljt"),-(False, "ljt/equiv_n.006.ljt"),-(False, "ljt/equiv_n.010.ljt"),-(True, "ljt/equiv_p.002.ljt"),-(True, "ljt/equiv_p.006.ljt"),-(True, "ljt/equiv_p.010.ljt"),-(False, "ljt/kk_n.002.ljt"),-(False, "ljt/kk_n.006.ljt"),-(False, "ljt/kk_n.010.ljt"),-(True, "ljt/kk_p.002.ljt"),-(True, "ljt/kk_p.006.ljt"),-(True, "ljt/kk_p.010.ljt"),-(False, "ljt/ph_n.002.ljt"),-(False, "ljt/ph_n.006.ljt"),-(False, "ljt/ph_n.010.ljt"),-(True, "ljt/ph_p.002.ljt"),-(True, "ljt/ph_p.006.ljt"),-(True, "ljt/ph_p.010.ljt"),-(True, "ljt/sch_ax.ljt"),-(True, "ljt/sch_implies.ljt"),-(True, "ljt/sch_jens_prop.ljt"),-(True, "ljt/sch_mult.002.ljt"),-(True, "ljt/sch_mult.003.ljt"),-(True, "ljt/sch_mult.004.ljt"),-(True, "ljt/sch_notnot.ljt"),-(True, "ljt/sch_notnot2.ljt"),-(True, "ljt/sch_prop_n.001.ljt"),-(True, "ljt/sch_prop_n.002.ljt"),-(True, "ljt/sch_prop_n.003.ljt"),-(True, "ljt/sch_prop_n.004.ljt"),-(False, "ljt/schwicht_n.002.ljt"),-(False, "ljt/schwicht_n.006.ljt"),-(False, "ljt/schwicht_n.010.ljt"),-(True, "ljt/schwicht_p.002.ljt"),-(True, "ljt/schwicht_p.006.ljt"),-(True, "ljt/schwicht_p.010.ljt")-]
− scripts/Djinn/tests/testfiles.fast
@@ -1,33 +0,0 @@-[-(False, "ljt/con_n.002.ljt"),-(False, "ljt/con_n.006.ljt"),-(True, "ljt/con_p.002.ljt"),-(True, "ljt/con_p.006.ljt"),-(True, "ljt/con_p.010.ljt"),-(False, "ljt/debruijn_n.002.ljt"),-(True, "ljt/debruijn_p.002.ljt"),-(False, "ljt/equiv_n.002.ljt"),-(True, "ljt/equiv_p.002.ljt"),-(False, "ljt/kk_n.002.ljt"),-(True, "ljt/kk_p.002.ljt"),-(False, "ljt/ph_n.002.ljt"),-(True, "ljt/ph_p.002.ljt"),-(True, "ljt/sch_ax.ljt"),-(True, "ljt/sch_implies.ljt"),-(True, "ljt/sch_jens_prop.ljt"),-(True, "ljt/sch_mult.002.ljt"),-(True, "ljt/sch_mult.003.ljt"),-(True, "ljt/sch_mult.004.ljt"),-(True, "ljt/sch_notnot.ljt"),-(True, "ljt/sch_notnot2.ljt"),-(True, "ljt/sch_prop_n.001.ljt"),-(True, "ljt/sch_prop_n.002.ljt"),-(True, "ljt/sch_prop_n.003.ljt"),-(True, "ljt/sch_prop_n.004.ljt"),-(False, "ljt/schwicht_n.002.ljt"),-(False, "ljt/schwicht_n.006.ljt"),-(False, "ljt/schwicht_n.010.ljt"),-(True, "ljt/schwicht_p.002.ljt"),-(True, "ljt/schwicht_p.006.ljt"),-(True, "ljt/schwicht_p.010.ljt")-]
− scripts/Djinn/verbose-help
@@ -1,173 +0,0 @@---Djinn commands explained-========================--<sym> ? <type>-  Try to find a function of the specified type.  Djinn knows about the-function type, tuples, Either, Maybe, (), and can be given new type-definitions.  (Djinn also knows about the empty type, Void, but this-is less useful.)  Further functions, type synonyms, and data types can-be added by using the commands below.  If a function can be found it-is printed in a style suitable for inclusion in a Haskell program.  If-no function can be found this will be reported as well.  Examples:-  Djinn> f ? a->a-  f :: a -> a-  f x1 = x1-  Djinn> sel ? ((a,b),(c,d)) -> (b,c)-  sel :: ((a, b), (c, d)) -> (b, c)-  sel ((_, v5), (v6, _)) = (v5, v6)-  Djinn> cast ? a->b-  -- cast cannot be realized.-  Djinn will always find a (total) function if one exists.  (The worst-case complexity is bad, but unlikely for typical examples.)  If no-function exists Djinn will always terminate and say so.-  When multiple implementations of the type exists Djinn will only-give one of them.  Example:-  Djinn> f ? a->a->a-  f :: a -> a -> a-  f _ x2 = x2--Warning: The given type expression is not checked in any way (i.e., no-kind checking).---<sym> :: <type>-  Add a new function available for Djinn to construct the result.-Example:-  Djinn> foo :: Int -> Char-  Djinn> bar :: Char -> Bool-  Djinn> f ? Int -> Bool-  f :: Int -> Bool-  f x3 = bar (foo x3)-This feature is not as powerful as it first might seem.  Djinn does-*not* instantiate polymorphic function.  It will only use the function-with exactly the given type.  Example:-  Djinn> cast :: a -> b-  Djinn> f ? c->d-  -- f cannot be realized.--type <sym> <vars> = <type>-  Add a Haskell style type synonym.  Type synonyms are expanded before-Djinn starts looking for a realization.-  Example:-  Djinn> type Id a = a->a-  Djinn> f ? Id a-  f :: Id a-  f x1 = x1--data <sym> <vars> = <type>-  Add a Haskell style data type.-  Example:-  Djinn> data Foo a = C a a a-  Djinn> f ? a -> Foo a-  f :: a -> Foo a-  f x1 = C x1 x1 x1---:clear-  Set the environment to the start environment.---:delete <sym>-  Remove a symbol that has been added with the add command.---:environment-  List all added symbols and their types.---:help-  Show a short help message.---:load <file>-  Read and execute a file with commands.  The file may include Haskell-style -- comments.---:quit-  Quit Djinn.---:set-  Set runtime options.-     +multi    show multiple solutions-               This will not show all solutions since there might be-               infinitly many.-     -multi    show one solution-     +sorted   sort solutions according to a heuristic criterion-     -sorted   do not sort solutions-  The heuristic used to sort the solutions is that as many of the-bound variables as possible should be used.--:verbose-help-  Print this message.---Further examples-================-  calvin% djinn-  Welcome to Djinn version 2005-12-11.-  Type :h to get help.--  -- return, bind, and callCC in the continuation monad-  Djinn> data CD r a = CD ((a -> r) -> r)-  Djinn> returnCD ? a -> CD r a-  returnCD :: a -> CD r a-  returnCD x1 = CD (\ c15 -> c15 x1)--  Djinn> bindCD ? CD r a -> (a -> CD r b) -> CD r b-  bindCD :: CD r a -> (a -> CD r b) -> CD r b-  bindCD x1 x4 =-           case x1 of-           CD v3 -> CD (\ c49 ->-                        v3 (\ c50 ->-                            case x4 c50 of-                            CD c52 -> c52 c49))--  Djinn> callCCD ? ((a -> CD r b) -> CD r a) -> CD r a-  callCCD :: ((a -> CD r b) -> CD r a) -> CD r a-  callCCD x1 =-            CD (\ c68 ->-                case x1 (\ c69 -> CD (\ _ -> c68 c69)) of-                CD c72 -> c72 c68)---  -- return and bind in the state monad-  Djinn> type S s a = (s -> (a, s))-  Djinn> returnS ? a -> S s a-  returnS :: a -> S s a-  returnS x1 x2 = (x1, x2)-  Djinn> bindS ? S s a -> (a -> S s b) -> S s b-  bindS :: S s a -> (a -> S s b) -> S s b-  bindS x1 x2 x3 =-          case x1 x3 of-          (v4, v5) -> x2 v4 v5---Theory-======-  Djinn interprets a Haskell type as a logic formula using the-Curry-Howard isomorphism and then uses a decision procedure for-Intuitionistic Propositional Calculus.  This decision procedure is-based on Gentzen's LJ sequent calculus, but in a modified form, LJT,-that ensures termination.  This variation on LJ has a long history,-but the particular formulation used in Djinn is due to Roy Dyckhoff.-The decision procedure has been extended to generate a proof object-(i.e., a lambda term).  It is this lambda term (in normal form) that-constitutes the Haskell code.-  See http://www.dcs.st-and.ac.uk/~rd/publications/jsl57.pdf for more-on the exact method used by Djinn.--  Since Djinn handles propositional calculus it also knows about the-absurd proposition, corresponding to the empty set.  This set is-called Void in Haskell, and Djinn assumes an elimination rule for the-Void type:-  void :: Void -> a-Using Void is of little use for programming, but can be interesting-for theorem proving.  Example, the double negation of the law of-excluded middle:-  Djinn> f ? Not (Not (Either x (Not x)))-  f :: Not (Not (Either x (Not x)))-  f x1 = void (x1 (Right (\ c23 -> void (x1 (Left c23)))))
− scripts/FT/FTbase.hs
@@ -1,267 +0,0 @@--- Copyright 2006, Sascha Boehme.------- Main module of the application.--module Main (main) where----import FreeTheorems-import PredefinedTypes--import Control.Monad-import Data.List-import System.Environment-import System.Console.GetOpt-import System.IO-import Text.ParserCombinators.Parsec (ParseError)--computeResult' :: String -> String-computeResult' t =-    let model = FixModel-        omitIns = True-    in-      case parseTypeString t of-        Left error -> "There was an error in the type: "++show error-        Right nt   ->-          let (th, td) = generateTheorem model nt-              (th2, td2) = foldl instantiateRelation (th, td)-                                 (extractRelationVariables th)-              tm2 = if omitIns then omitInstantiations th2 else th2-              ls2 = extractLiftRelations (th2, td2) omitIns-          in  (printAsText tm2)-              ++ (concatMap (\l -> "\n\n"++(printAsText l)) ls2)--main = putStr . computeResult' =<< getLine----- Entry point for the application.--- The function parses the command line arguments. Then, it starts the--- computation with the given values.--{--main :: IO ()-main = do-  arguments <- getArgs-  case getOpt Permute options arguments of-    (opts, _, [])  -> let (info, os) = checkOpt opts-                      in  if info-                            then putStrLn showInfo-                            else case os of-                                   Left errors   -> showErrors errors-                                   Right (t,m,o) -> putStrLn-                                                    $ computeResult t m o-    (_, _, errors) -> showErrors errors--  where-    showErrors errors = do-      mapM (\s -> hPutStr stderr ("Error: " ++ s)) errors-      hPutStr stderr (usageInfo "Usage: ftbase [OPTIONS]" options)--    showInfo =-        xmlTag "info" [] (concat-          [ concatMap (\(n,i) -> xmlData n i) getSupportedAlgebraicDatatypes-          , concatMap (\(n,i) -> xmlType n i) getSupportedTypeSynonyms-          , concatMap (\(n,t) -> xmlPred n t) predefinedTypes-          ])-      where-        xmlData n i = xmlEmptyTag "data" [("name", n), ("arity", show i)]-        xmlType n i = xmlEmptyTag "type" [("name", n), ("arity", show i)]-        xmlPred n t = xmlTag "predefined" [("name", n)] t---}------------------------------------------------------------------------------------------ Parsing of command line arguments.--------- Abstract description of command line options.--data Flag = Type String-          | Model LanguageModel-          | Info-          | OmitInstantiations-          deriving (Eq, Show)------ The command line options.--options :: [OptDescr Flag]-options =-  [ Option ['t'] ["type"]-           (ReqArg Type "TYPE")-           "the type from which to generate a theorem"--  , Option ['b'] ["basic-model"]-           (NoArg (Model BasicModel))-           "use the basic model"--  , Option ['f'] ["fix-model"]-           (NoArg (Model FixModel))-           "use the fix model"--  , Option ['o'] ["omit-instantiations"]-           (NoArg OmitInstantiations)-           "omit instantiations in the generated theorem"--  , Option ['i'] ["info"]-           (NoArg Info)-           "show available constructors and predefined types"-  ]------ Checks if the detected command line options are correct, i.e. if flags of--- each kind are occurring only once. If so, the corresponding values are--- returned.--checkOpt :: [Flag] -> (Bool, Either [String] (LanguageModel, String, Bool))-checkOpt flags =-  let om = foldr (checkModel) (Left "missing model\n") flags-      ot = case foldr (checkType) (Left "missing type\n") flags of-             Left e  -> Left e-             Right t -> if length (words t) > 0-                          then Right t-                          else Left "missing type\n"-      oi = any (\f -> f == Info) flags-      oo = any (\f -> f == OmitInstantiations) flags--      extractError = either (\e -> [e]) (\_ -> [])-      errors = extractError om ++ extractError ot--  in  case (om,ot) of-        (Right m, Right t) -> (oi, Right (m, t, oo))-        otherwise          -> (oi, Left errors)--  where-    checkModel (Model m) (Left _)  = Right m-    checkModel (Model _) (Right _) = Left "only one model can be given\n"-    checkModel _         x         = x--    checkType (Type t) (Left _)  = Right t-    checkType (Type _) (Right _) = Left "only one type can be given\n"-    checkType _        x         = x-------------------------------------------------------------------------------------------- Computation of output--------- Parses the given string and creates either an error message or valid output.--computeResult :: LanguageModel -> String -> Bool -> String-computeResult model t omitIns =-  case parseTypeString t of-    Left error -> xmlTag "error" [("type", t)] (xmlClean (show error))-    Right nt   ->-      let (th, td) = generateTheorem model nt-          tm = if omitIns then omitInstantiations th else th-          ls = extractLiftRelations (th, td) omitIns--          (th2, td2) = foldl instantiateRelation (th, td)-                             (extractRelationVariables th)-          tm2 = if omitIns then omitInstantiations th2 else th2-          ls2 = extractLiftRelations (th2, td2) omitIns--      in  xmlTag "model" [] (show model)-          ++ xmlTag "type" [] (xmlClean (printAsText nt))-          ++ xmlTag "fundamental" [] (concat-               [ xmlTag "theorem"  [] (xmlClean (printAsText tm))-               , concatMap (\l -> xmlTag "lift"  [] (xmlClean (printAsText l))) ls-               ])-          ++ xmlTag "reduced" [] (concat-               [ xmlTag "theorem"  [] (xmlClean (printAsText tm2))-               , concatMap (\l -> xmlTag "lift"  [] (xmlClean (printAsText l))) ls2-               ])------ Parses a type string and returns the named type obtained from parsing or an--- error if no type was found. The function works as follows:------   * If the input contains "::", then it is parsed as a named type.------   * If the input is only one word, the function tries to find a type with---     that name in the list of predefined types. If it can be found, that type---     is parsed as a named type.------   * Otherwise the input is parsed as a type without name, while a new name is---     generated.--parseTypeString :: String -> Either ParseError NamedType-parseTypeString string =-  let wlist = words string-  in if (containsTwoColons string)-       then parseNamedType string-       else let (w:ws) = wlist-            in  if (ws == [])-                  then case lookup w predefinedTypes of-                         Nothing -> parseType acceptName string-                         Just t  -> parseNamedType (w ++ " :: " ++ t)-                  else parseType acceptName string-  where-    containsTwoColons str =-      case str of-        ':' : ':' : cs -> True-        _   :  c  : cs -> containsTwoColons (c:cs)-        otherwise     -> False--    acceptName name =-      let (predefinedNames, _) = unzip predefinedTypes-      in  name `notElem` predefinedNames-------------------------------------------------------------------------------------------- XML functions--------- Creates an XML tag.--xmlTag :: String -> [(String, String)] -> String -> String-xmlTag n as c =-  "<" ++ n-  ++ foldl (\s (k,v) -> s ++ " " ++ k ++ "=\"" ++ xmlClean v ++ "\"") "" as-  ++ ">" ++ c ++ "</" ++ n ++ ">"------ Creates an empty XML tag.--xmlEmptyTag :: String -> [(String, String)] -> String-xmlEmptyTag n as =-  "<" ++ n-  ++ foldl (\s (k,v) -> s ++ " " ++ k ++ "=\"" ++ xmlClean v ++ "\"") "" as-  ++ "/>"------ Replaces XML special characters.--xmlClean :: String -> String-xmlClean = concatMap replaceSymbol-  where-    replaceSymbol '&' = "&amp;"-    replaceSymbol '>' = "&gt;"-    replaceSymbol '<' = "&lt;"-    replaceSymbol c   = [c]
− scripts/FT/FreeTheorems.hs
@@ -1,86 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module is the interface to the FreeTheorems library. It exposes all---   types and functions needed to parse types, generate theorems for them and---   pretty-print types and theorems.------   Although every type below is an instance of the class 'Show', the provided---   pretty-printing classes should be used to display them. The standard 'show'---   function is only available for debugging purposes.--module FreeTheorems (---- * Types and theorems-    LanguageModel(..),-    NamedType(..),-    TermVariable,-    Type,-    Theorem,-    RelationVariable,-    UnfoldedRelation,-    TheoremData,---- * Parsing of types-    parseNamedType,-    parseType,-    getSupportedAlgebraicDatatypes,-    getSupportedTypeSynonyms,---- * Generation and deduction of theorems-    generateTheorem,-    extractLiftRelations,-    Specialization.extractRelationVariables,-    instantiateRelation,-    omitInstantiations,---- * Pretty-printing-    PrettyPrintAsText(..)-) where----import FreeTheorems.Declarations-import FreeTheorems.Delta-import qualified FreeTheorems.Lifts as Lifts-import FreeTheorems.Modification-import FreeTheorems.PrettyPrint-import qualified FreeTheorems.Specialization as Specialization-import FreeTheorems.TheoremData-import FreeTheorems.TypeParser-import FreeTheorems.Types-import FreeTheorems.Unfolding------ | Generates a theorem for a named type using a certain language model.--generateTheorem :: LanguageModel -> NamedType -> (Theorem, TheoremData)-generateTheorem model (NamedType tv t) =-  execute tv (applyDelta model t >>= unfold tv)------ | Creates a list of all lifted relations occurring in the given theorem.---   Lifted relations are @lift@ relations as well as functional relations and---   relational abstractions.---   The lifted relations are returned together with their unfolded description.--extractLiftRelations :: (Theorem, TheoremData) -> Bool -> [UnfoldedRelation]-extractLiftRelations (theorem, tdata) omitIns =-  fst $ executeWith tdata (Lifts.extractLiftRelations theorem omitIns)------ | Instantiates a relation variable found by---   'Specialization.extractRelationVariables' in the given theorem.---   A new function symbol is created to replace the relation variable.--instantiateRelation :: (Theorem, TheoremData)-                       -> RelationVariable-                       -> (Theorem, TheoremData)--instantiateRelation (theorem, tdata) rv =-  executeWith tdata (Specialization.replaceRelationVariable theorem rv)
− scripts/FT/FreeTheorems/Declarations.hs
@@ -1,298 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module defines the accepted user-defined types.---   It covers only algebraic datatypes and type synonyms.--module FreeTheorems.Declarations (--    -- * Haskell type declarations-    DataDeclaration(..),-    DataConstructorDeclaration(..),-    Type(..),-    TypeDeclaration(..),-    TypeConstructor,-    Arity,--    -- * Type information-    isDefined,-    getDataDecl,-    getTypeDecl,-    getSupportedAlgebraicDatatypes,-    getSupportedTypeSynonyms,--    -- testing interface-    testDeclarations-) where----import FreeTheorems.Types------ | Gives a notation for the declaration of an algebraic datatype.---   The right-hand side is defined as a function type to replace type variables---   easily by arbitrary types. The argument list of this function should be---   exactly as long as the arity of the type constructor.---   The types of the right-hand side should not contain any type synonym---   because right-hand sides will not be prepared the same way as types---   inputted by the user.--data DataDeclaration = DataDecl TypeConstructor Arity-                                ([Type] -> [DataConstructorDeclaration])------ | Denotes the declaration of a data constructor as it occurs in definitions---   of algebraic datatypes.--data DataConstructorDeclaration = DataConDecl DataConstructor [Type]------ | Represents the declaration of a type synonym.---   The right-hand side is defined as a function type to replace type variables---   easily by arbitrary types. The argument list of this function should be---   exactly as long as the arity of the type constructor.--data TypeDeclaration = TypeDecl TypeConstructor Arity ([Type] -> Type)------ | Used to describe the rank or arity of type constructors.--type Arity = Int------ | Stores valid user-defined types.---   It contains algebraic datatypes and type synonyms along with their---   right-hand side.--data UserDefinedTypes = UserDefinedTypes {-  dataDecls :: [DataDeclaration],   -- ^ A list of valid algebraic data types-                                    --   each of them with their right-hand-                                    --   side.--  typeDecls :: [TypeDeclaration]    -- ^ A list of valid type synonymes each of-                                    --   them with their right-hand side.-}------ | Checks if a type constructor occurs in the list of accepted user-defined---   types.--isDefined :: TypeConstructor -> Bool-isDefined t =-     any (\(DataDecl t' _ _) -> (t == t')) (dataDecls userDefinedTypes)-  || any (\(TypeDecl t' _ _) -> (t == t')) (typeDecls userDefinedTypes)------ | Returns the declaration of an algebraic datatype, if it occurs in the list---   of accepted algebraic datatypes.--getDataDecl :: TypeConstructor -> Maybe DataDeclaration-getDataDecl t =-  case (filter (\(DataDecl t' _ _)-> (t == t')) (dataDecls userDefinedTypes)) of-    []    -> Nothing-    (d:_) -> Just d------ | Returns the declaration of a type synonym, if it occurs in the list of---   accepted type synonyms.--getTypeDecl :: TypeConstructor -> Maybe TypeDeclaration-getTypeDecl t =-  case (filter (\(TypeDecl t' _ _)-> (t == t')) (typeDecls userDefinedTypes)) of-    []    -> Nothing-    (d:_) -> Just d------ | Returns the list of algebraic datatypes being supported by the FreeTheorems---   library. For each algebraic datatype, its name and arity are returned.--getSupportedAlgebraicDatatypes :: [(String, Int)]-getSupportedAlgebraicDatatypes = map (\(DataDecl n i _) -> (n,i))-                                     (dataDecls userDefinedTypes)------ | Returns the list of type synonyms being supported by the FreeTheorems---   library. For each type synonym, its name and arity are returned.--getSupportedTypeSynonyms :: [(String, Int)]-getSupportedTypeSynonyms = map (\(TypeDecl n i _) -> (n,i))-                               (typeDecls userDefinedTypes)------ | Defines the set of valid user-defined types.---   This sets defines all types which may occur in type terms from which---   theorems can be generated. Except of predefined types, no more types are---   allowed in type terms.--userDefinedTypes :: UserDefinedTypes-userDefinedTypes = UserDefinedTypes {---- Note that the types of the right-hand side should not contain any type--- synonym because it will not be replaced.-  dataDecls = [-    DataDecl "Bool" 0 (\[] ->-             [DataConDecl "False" []-             ,DataConDecl "True" []-             ]),-    DataDecl "Maybe" 1 (\[a] ->-             [DataConDecl "Nothing" []-             ,DataConDecl "Just" [a]-             ]),-    DataDecl "Either" 2 (\[a, b] ->-             [DataConDecl "Left" [a]-             ,DataConDecl "Right" [b]-             ]),-    DataDecl "Ordering" 0 (\[] ->-             [DataConDecl "LT" []-             ,DataConDecl "EQ" []-             ,DataConDecl "GT" []-             ]),-    DataDecl "IOMode" 0 (\[] ->-             [DataConDecl "ReadMode" []-             ,DataConDecl "WriteMode" []-             ,DataConDecl "AppendMode" []-             ,DataConDecl "ReadWriteMode" []-             ]),-    DataDecl "BufferMode" 0 (\[] ->-             [DataConDecl "NoBuffering" []-             ,DataConDecl "LineBuffering" []-             ,DataConDecl "BlockBuffering" [TypeCon "Maybe" [TypeBasic Int]]-             ]),-    DataDecl "SeekMode" 0 (\[] ->-             [DataConDecl "AbsoluteSeek" []-             ,DataConDecl "RelativeSeek" []-             ,DataConDecl "SeekFromEnd" []-             ]),-    DataDecl "Permissions" 0 (\[] ->-             [DataConDecl "Permissions" [TypeCon "Bool" []  -- readable-                                        ,TypeCon "Bool" []  -- writable-                                        ,TypeCon "Bool" []  -- executable-                                        ,TypeCon "Bool" []  -- searchable-                                        ]]),-    DataDecl "ExitCode" 0 (\[] ->-             [DataConDecl "ExitSuccess" []-             ,DataConDecl "ExitFailure" [TypeBasic Int]-             ]),-    DataDecl "Month" 0 (\[] ->-             [DataConDecl "January" []-             ,DataConDecl "February" []-             ,DataConDecl "March" []-             ,DataConDecl "April" []-             ,DataConDecl "May" []-             ,DataConDecl "June" []-             ,DataConDecl "July" []-             ,DataConDecl "August" []-             ,DataConDecl "September" []-             ,DataConDecl "October" []-             ,DataConDecl "November" []-             ,DataConDecl "December" []-             ]),-    DataDecl "Day" 0 (\[] ->-             [DataConDecl "Sunday" []-             ,DataConDecl "Monday" []-             ,DataConDecl "Tuesday" []-             ,DataConDecl "Wednesday" []-             ,DataConDecl "Thursday" []-             ,DataConDecl "Friday" []-             ,DataConDecl "Saturday" []-             ]),-    DataDecl "CalenderTime" 0 (\[] ->-             [DataConDecl "CalenderTime" [TypeBasic Int     -- ctYear-                                         ,TypeCon "Month" []    -- ctMonth-                                         ,TypeBasic Int     -- ctDay-                                         ,TypeBasic Int     -- ctHour-                                         ,TypeBasic Int     -- ctMin-                                         ,TypeBasic Int     -- ctSec-                                         ,TypeBasic Integer -- ctPicosec-                                         ,TypeCon "Day" []  -- ctWDay-                                         ,TypeBasic Int     -- ctYDay-                                         ,TypeList (TypeBasic Char)  -- ctTZName-                                         ,TypeBasic Int     -- ctTZ-                                         ,TypeCon "Bool" [] -- ctIsDST-                                         ]]),-    DataDecl "TimeDiff" 0 (\[] ->-             [DataConDecl "TimeDiff" [TypeBasic Int     -- tdYear-                                     ,TypeBasic Int     -- tdMonth-                                     ,TypeBasic Int     -- tdDay-                                     ,TypeBasic Int     -- tdHour-                                     ,TypeBasic Int     -- tdMin-                                     ,TypeBasic Int     -- tdSec-                                     ,TypeBasic Integer -- tdPicosec-                                     ]]),-    DataDecl "TimeLocale" 0 (\[] ->-             [DataConDecl "TimeLocale"-                [TypeList (TypeTuple [TypeList (TypeBasic Char)-                                     ,TypeList (TypeBasic Char)]) -- wDays-                ,TypeList (TypeTuple [TypeList (TypeBasic Char)-                                     ,TypeList (TypeBasic Char)]) -- months-                ,TypeTuple [TypeList (TypeBasic Char)-                           ,TypeList (TypeBasic Char)]            -- amPm-                ,TypeList (TypeBasic Char)        -- dateTimeFmt-                ,TypeList (TypeBasic Char)        -- dateFmt-                ,TypeList (TypeBasic Char)        -- timeFmt-                ,TypeList (TypeBasic Char)        -- time12Fmt-                ]])-  ],--  typeDecls = [-    TypeDecl "String" 0-             (\[] -> TypeList (TypeBasic Char)),-    TypeDecl "ReadS" 1-             (\[a] -> TypeFun (TypeCon "String" [])-                              (TypeList (TypeTuple [a, TypeCon "String" []]))),-    TypeDecl "ShowS" 0-             (\[] -> TypeFun (TypeCon "String" []) (TypeCon "String" [])),-    TypeDecl "FilePath" 0-             (\[] -> TypeCon "String" [])-  ]-}------------------------------------------------------------------------------------------ A list of tests for this module.--testDeclarations = do-  putStr "declarations contain no function and forall ... "-  putStrLn (if test_no_fun_forall then "OK" else "FALSE")------ Check that data declarations contain no functions and type abstractions in--- its right-hand sides.--test_no_fun_forall = and $ map hasNoFunForall (dataDecls userDefinedTypes)--hasNoFunForall (DataDecl _ n f) =-  let vs = map (\i -> TypeVar ("a" ++ show i)) [1..n]-      ts = concatMap (\(DataConDecl _ ts) -> ts) (f vs)-  in  and $ map noFunForall ts--noFunForall t =-  case t of-    TypeBasic _    -> True-    TypeVar _      -> True-    TypeTermVar _  -> True-    TypeCon _ ts   -> and $ map noFunForall ts-    TypeList t'    -> noFunForall t'-    TypeUnit       -> True-    TypeTuple ts   -> and $ map noFunForall ts-    TypeFun _ _    -> False-    TypeForall _ _ -> False
− scripts/FT/FreeTheorems/Delta.hs
@@ -1,289 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module contains the delta algorithm which transforms a type into a---   relation.--module FreeTheorems.Delta (-    applyDelta,-    applyDeltaWith,-    Environment,--    -- testing interface-    -- testDelta-) where----import Prelude hiding (lookup)--import FreeTheorems.Preparation-import FreeTheorems.Reduction-import FreeTheorems.TheoremData-import FreeTheorems.Types-import qualified Data.Map as Map (Map, empty, insert, lookup)---- import FreeTheorems.Test.ArbitraryTypes-import Data.List (nub, delete)--- import Test.QuickCheck (quickCheck)-------- | Applies the delta algorithm to a type to transform it into a corresponding---   relation. In the generated relation, subrelations are simplified as much as---   possible.------   According to the language model used, the correct delta algorithm is---   chosen. The delta algorithm is essentially a term rewriting, i.e. type---   terms are transformed in corresponding relations while obeying certain---   rules of the language subset in use.--applyDelta :: LanguageModel -> Type -> TheoremState Relation-applyDelta model = applyDeltaWith model empty------ | Applies the delta algorithm to a type to transform it into a corresponding---   relation. In the generated relation, subrelations are simplified as much as---   possible.------   According to the language model used, the correct delta algorithm is---   chosen. The delta algorithm is essentially a term rewriting, i.e. type---   terms are transformed in corresponding relations while obeying certain---   rules of the language subset in use.------   This function is a variant of 'applyDelta' where an initial environment can---   be provided.--applyDeltaWith :: LanguageModel -> Environment -> Type -> TheoremState Relation-applyDeltaWith model env t = do-  rel <- case model of-           BasicModel -> deltaBasic env t-           FixModel   -> deltaFix env t-  return $ reduceRelation rel------- | Declares the type for environments which are mappings of type variables to---   relation variables.--type Environment = Map.Map TypeVariable Relation------ | Creates an empty environment.--empty :: Environment-empty = Map.empty------ | Updates an environment.--update :: Environment -> TypeVariable -> RelationVariable -> Environment-update env v rv = Map.insert v (RelVar rv) env------ | Returns the relation variable which is mapped to a type variable.--lookup :: Environment -> TypeVariable -> Relation-lookup env v =-  case Map.lookup v env of-    Just rel -> rel-    -- 'Nothing' can not occur because every types processed in 'delta' is-    -- closed and a 'lookup' may only occur after the corresponding 'update'-    -- (due to the structure of types).-------- | The delta algorithm for the basic model.--deltaBasic :: Environment -> Type -> TheoremState Relation-deltaBasic env t =-  case t of-    TypeBasic b     -> return (RelTerm (TermIns (TermVar (PV "id")) t) (t,t))--    TypeVar v       -> return (lookup env v)--    TypeCon c ts    -> do rels <- mapM (deltaBasic env) ts-                          return (RelLift BasicModel c rels)--    TypeList t1     -> do rel <- deltaBasic env t1-                          return (RelLiftList BasicModel rel)--    TypeUnit        -> return (RelTerm (TermIns (TermVar (PV "id")) t) (t, t))--    TypeTuple ts    -> do rels <- mapM (deltaBasic env) ts-                          return (RelLiftTuple BasicModel rels)--    TypeFun t1 t2   -> do rel1 <- deltaBasic env t1-                          rel2 <- deltaBasic env t2-                          return (RelFun BasicModel rel1 rel2)--    TypeForall v t1 -> do rv  <- newRelationVariable v-                          rel <- deltaBasic (update env v rv) t1-                          return (RelForall BasicModel rv rel)------ | The delta algorithm for the fix model.--deltaFix :: Environment -> Type -> TheoremState Relation-deltaFix env t =-  case t of-    TypeBasic b     -> return (RelTerm (TermIns (TermVar (PV "id")) t) (t,t))--    TypeVar v       -> return (lookup env v)--    TypeCon c ts    -> do rels <- mapM (deltaFix env) ts-                          return (RelLift FixModel c rels)--    TypeList t1     -> do rel <- deltaFix env t1-                          return (RelLiftList FixModel rel)--    TypeUnit        -> return (RelTerm (TermIns (TermVar (PV "id")) t) (t,t))--    TypeTuple ts    -> do rels <- mapM (deltaFix env) ts-                          return (RelLiftTuple FixModel rels)--    TypeFun t1 t2   -> do rel1 <- deltaFix env t1-                          rel2 <- deltaFix env t2-                          return (RelFun FixModel rel1 rel2)--    TypeForall v t1 -> do rv  <- newRelationVariable v-                          rel <- deltaFix (update env v rv) t1-                          return (RelForall FixModel rv rel)------------------------------------------------------------------------------------------ A list of tests for this module.--{--testDelta = do-  putStr "delta preserves the structure ... "-  quickCheck prop_delta_preserves_structure-  putStr "every relation variable occurs only once ... "-  quickCheck prop_every_rv_only_once-  putStr "every relation variable is bound ... "-  quickCheck prop_every_rv_is_bound-  putStr "relation uses only one model ... "-  quickCheck prop_only_one_model-  putStr "delta reduces the generated relation ... "-  quickCheck prop_delta_reduces_relation--}------ Check that delta preserves the structure, i.e. the type is just reflected--- into a representation by relations.--prop_delta_preserves_structure model t =-   let t' = prepare t-       rel = fst $ execute (PV "t") $ applyDelta model t'-   in  compareTypeAndRelation (rel, t')--compareTypeAndRelation :: (Relation, Type) -> Bool-compareTypeAndRelation pair =-  case pair of-    (RelVar rv, TypeVar v)               -> let R _ v' _ = rv-                                            in  v == v'--    (RelTerm _ _, t')                    -> True--    (RelLift _ c rels, TypeCon c' ts)    -> (c == c')-                                            && and (map compareTR $ zip rels ts)--    (RelLiftList _ rel, TypeList t)      -> compareTR (rel, t)--    (RelLiftTuple _ rels, TypeTuple ts)  -> and (map compareTR $ zip rels ts)--    (RelFun _ rel1 rel2, TypeFun t1 t2)  -> compareTR (rel1, t1) &&-                                            compareTR (rel2, t2)--    (RelForall _ rv rel, TypeForall v t) -> let R _ v' _ = rv-                                            in  v' == v && compareTR (rel, t)--    otherwise      -> False--  where-    compareTR = compareTypeAndRelation------ Check that every relation variable is bound only once in a quantification,--- i.e. every relation variable is unique.--prop_every_rv_only_once model t =-  let rel = fst $ execute (PV "t") $ applyDelta model $ prepare t-      rvs = getBoundRelVars rel-  in  rvs == nub rvs--getBoundRelVars rel =-  case rel of-    RelTerm _ _         -> []-    RelVar _            -> []-    RelLift _ _ rels    -> concatMap getBoundRelVars rels-    RelLiftList _ rel'  -> getBoundRelVars rel'-    RelLiftTuple _ rels -> concatMap getBoundRelVars rels-    RelFun _ rel1 rel2  -> getBoundRelVars rel1 ++ getBoundRelVars rel2-    RelForall _ rv rel' -> rv : (getBoundRelVars rel')------ Check that all relation variables are quantified.--prop_every_rv_is_bound model t =-  let rel = fst $ execute (PV "t") $ applyDelta model $ prepare t-  in  checkRelVars rel == []--checkRelVars rel =-  case rel of-    RelTerm _ _         -> []-    RelVar rv           -> [rv]-    RelLift _ _ rels    -> nub $ concatMap checkRelVars rels-    RelLiftList _ rel'  -> nub $ checkRelVars rel'-    RelLiftTuple _ rels -> nub $ concatMap checkRelVars rels-    RelFun _ rel1 rel2  -> nub $ checkRelVars rel1 ++ checkRelVars rel2-    RelForall _ rv rel' -> delete rv (checkRelVars rel')------ Check that delta creates relations having only one model.--prop_only_one_model model t =-  let rel = fst $ execute (PV "t") $ applyDelta model $ prepare t-  in  usesModel model rel--usesModel model rel =-  case rel of-    RelTerm _ _         -> True-    RelVar rv           -> True-    RelLift m _ rels    -> m == model && and (map (usesModel model) rels)-    RelLiftList m rel'  -> m == model && usesModel model rel'-    RelLiftTuple m rels -> m == model && and (map (usesModel model) rels)-    RelFun m rel1 rel2  -> m == model && usesModel model rel1-                                      && usesModel model rel2-    RelForall m rv rel' -> m == model && usesModel model rel'------ Check that delta simplifies its generated relations.--prop_delta_reduces_relation model t =-   let rel = fst $ execute (PV "t") $ applyDelta model $ prepare t-   in  rel == reduceRelation rel---
− scripts/FT/FreeTheorems/Lifts.hs
@@ -1,220 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module defines a function to extract and unfold lifted relations---   occurring in theorems.--module FreeTheorems.Lifts (-    extractLiftRelations-) where----import FreeTheorems.Declarations-import FreeTheorems.Delta-import FreeTheorems.Modification-import FreeTheorems.TheoremData-import FreeTheorems.Types-import FreeTheorems.Unfolding-import Control.Monad (liftM, liftM2)-import Control.Monad.State (evalState)-import Data.List (nub)-import qualified Data.Map as Map (fromAscList)-import Data.Maybe (catMaybes)-------- | Creates a list of all lifted relations occurring in the given theorem.---   Lifted relations are @lift@ relations as well as functional relations and---   relational abstractions.---   The lifted relations are returned together with their unfolded description.---   If the second argument is 'True', all instantiations in the terms of the---   returned unfolded relations are omitted.--extractLiftRelations :: Theorem -> Bool -> TheoremState [UnfoldedRelation]-extractLiftRelations theorem omitIns = do-  rels <- extractLifts theorem-  lifts <- mapM unfoldLiftRelation $ nub rels-  if omitIns-    then return (map omitInstantiationsInUnfoldedRelation lifts)-    else return lifts------------------------------------------------------------------------------------------ | Extracts all lifted relations from a theorem. This is a helper function for---   'extractLiftRelations'.--extractLifts :: Theorem -> TheoremState [Relation]-extractLifts theorem =-  case theorem of-    IsElementOf _ rel       -> collectLifts rel-    ForallPairs _ rel t     -> liftM2 (++) (collectLifts rel) (extractLifts t)-    ForallRelations _ _ t   -> extractLifts t-    ForallFunctions _ _ _ t -> extractLifts t-    ForallElements _ _ t    -> extractLifts t-    Conjunction t1 t2       -> liftM2 (++) (extractLifts t1) (extractLifts t2)-    Implication t1 t2       -> liftM2 (++) (extractLifts t1) (extractLifts t2)------ | Returns all lift relations occurring in a relation.--collectLifts :: Relation -> TheoremState [Relation]-collectLifts rel =-  case rel of-    RelTerm _ _         -> return []-    RelVar _            -> return []--    RelLift m con rels  -> do subLifts <- subLifts m con rels-                              lifts <- liftM concat $ mapM collectLifts rels-                              return $ rel : lifts ++ subLifts--    RelLiftList _ rel'  -> do lifts <- collectLifts rel'-                              return $ rel : lifts--    RelLiftTuple _ rels -> do lifts <- liftM concat $ mapM collectLifts rels-                              return $ rel : lifts--    RelFun _ rel1 rel2  -> do lifts1 <- collectLifts rel1-                              lifts2 <- collectLifts rel2-                              return $ rel : lifts1 ++ lifts2--    RelForall _ _ rel'  -> do lifts <- collectLifts rel'-                              return $ rel : lifts------ | Returns all sublifts occurring in the right-hand side definition of a---   type constructor. For example, the following datatype has a sublift:------ > data Foo = Bar [Int]------   Here, the function will return the relation for @[Int]@ as the only sublift---   of @Foo@.------   However, only general type constructors, tuples and lists may occur as---   sublifts. Functions and type abstractions are forbidden, because their---   behaviour is not yet defined.---- The function relies on the fact, that functions and type abstractions may not--- occur on the right-hand side of data declarations. That way, it can safely--- use 'delta' (which is also defined for functions and type abstractions) to--- create relations of types.--subLifts :: LanguageModel-            -> TypeConstructor-            -> [Relation]-            -> TheoremState [Relation]--subLifts model con rels = do-  let Just (DataDecl _ n f) = getDataDecl con-  let vs = map (\i -> "a" ++ show i) [1..n]-  let decls = f (map (\v -> TypeVar v) vs)-  let types = concatMap (\(DataConDecl _ ts) -> ts) decls-  let env = Map.fromAscList $ zip vs rels-  relations <- mapM (applyDeltaWith model env) types-  liftM concat (mapM collectLifts relations)------------------------------------------------------------------------------------------ | Unfolds a lift relation. This is a helper function for---   'extractLiftRelations'.--unfoldLiftRelation :: Relation -> TheoremState UnfoldedRelation-unfoldLiftRelation rel =-  case rel of---- the following two cases will never occur, see 'collectLifts'---    RelTerm _ _---    RelVar _--    RelLift model con rels  -> liftM (pack model) (unfoldLift model con rels)-    RelLiftList model rel'  -> return $ pack model (unfoldLiftList model rel')-    RelLiftTuple model rels -> return $ pack model (unfoldLiftTuple model rels)--    RelFun model rel1 rel2  -> do (f, g) <- newVariablesFor rel-                                  let pair = (TermVar f, TermVar g)-                                  theorem <- unfoldFunction model rel1 rel2 pair-                                  return $ pack model-                                         $ UnfoldedFunction (f,g) theorem--    RelForall model rv rel' -> do (x, y) <- newVariablesFor rel-                                  let pair = (TermVar x, TermVar y)-                                  theorem <- unfoldForall model rv rel' pair-                                  return $ pack model-                                         $ UnfoldedForall (x,y) theorem-  where-    pack = UnfoldedRelation rel------ | Unfolds a lifted relation of an algebraic datatype. It uses 'delta' on the---   types occurring on the right-hand side of the according type constructor's---   definition to generate relations.--unfoldLift :: LanguageModel-              -> TypeConstructor-              -> [Relation]-              -> TheoremState UnfoldedSet--unfoldLift model con rels = do-  let Just (DataDecl _ n f) = getDataDecl con-      vs = map (\i -> "a" ++ show i) [1..n]-      decls = f (map (\v -> TypeVar v) vs)-      env = Map.fromAscList $ zip vs rels--  liftM UnfoldedLift (mapM (unfoldDecl env) decls)--  where-    unfoldDecl env (DataConDecl con types) = do-      let n = length types-          xs = map (TV "x") [1..n]-          ys = map (TV "y") [1..n]-      if n == 0-        then return (con, [], [], Nothing)-        else liftM (\t -> (con, xs, ys, Just t)) (buildTheorem env xs ys types)--    buildTheorem env xs ys types = do-      rels <- mapM (applyDeltaWith model env) types-      let mkTheorem (x,y,r) = IsElementOf (TermVar x, TermVar y) r-          theorems = map mkTheorem (zip3 xs ys rels)-      return $ foldr1 Conjunction theorems------ | Unfolds a lifted list relation.--unfoldLiftList :: LanguageModel -> Relation -> UnfoldedSet-unfoldLiftList model rel =-  let (x, xs) = (PV "x", PV "xs")-      (y, ys) = (PV "y", PV "ys")-      lift    = RelLiftList model rel-      theorem = Conjunction (IsElementOf (TermVar x, TermVar y) rel)-                            (IsElementOf (TermVar xs, TermVar ys) lift)-  in  UnfoldedLiftList ((x, xs), (y, ys)) theorem------ | Unfolds a lifted tuple relation.--unfoldLiftTuple :: LanguageModel -> [Relation] -> UnfoldedSet-unfoldLiftTuple model rels =-  let n = length rels-      xs = map (TV "x") [1..n]-      ys = map (TV "y") [1..n]-      mkTheorem (x,y,r) = IsElementOf (TermVar x, TermVar y) r-      theorem = foldr1 Conjunction (map mkTheorem (zip3 xs ys rels))-  in  UnfoldedLiftTuple (xs, ys) theorem-
− scripts/FT/FreeTheorems/Modification.hs
@@ -1,87 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module defines a function to modify theorems by omitting---   instantiations in terms.--module FreeTheorems.Modification (-    omitInstantiations,-    omitInstantiationsInUnfoldedRelation-) where----import FreeTheorems.Types------ | Omits all instantiations in the terms of the given theorem.--omitInstantiations :: Theorem -> Theorem-omitInstantiations theorem =-  case theorem of-    IsElementOf (t1,t2) r   -> IsElementOf (omitIns t1, omitIns t2)-                                           (omitInsRel r)-    ForallPairs p r t       -> ForallPairs p (omitInsRel r)-                                             (omitInstantiations t)-    ForallRelations rv r t  -> ForallRelations rv r (omitInstantiations t)-    ForallFunctions f p r t -> ForallFunctions f p r (omitInstantiations t)-    ForallElements x ty t   -> ForallElements x ty (omitInstantiations t)-    Conjunction t1 t2       -> Conjunction (omitInstantiations t1)-                                           (omitInstantiations t2)-    Implication t1 t2       -> Implication (omitInstantiations t1)-                                           (omitInstantiations t2)------ | Omits all instantiations in unfolded relations.--omitInstantiationsInUnfoldedRelation :: UnfoldedRelation -> UnfoldedRelation-omitInstantiationsInUnfoldedRelation (UnfoldedRelation rel model set) =-  UnfoldedRelation (omitInsRel rel) model (omitInsSet set)------ | Omit instantiations in relations.--omitInsRel :: Relation -> Relation-omitInsRel rel =-  case rel of-    RelTerm t types     -> RelTerm (omitIns t) types-    RelVar _            -> rel-    RelLift m c rels    -> RelLift m c (map omitInsRel rels)-    RelLiftList m rel'  -> RelLiftList m (omitInsRel rel')-    RelLiftTuple m rels -> RelLiftTuple m (map omitInsRel rels)-    RelFun m rel1 rel2  -> RelFun m (omitInsRel rel1) (omitInsRel rel2)-    RelForall m rv rel' -> RelForall m rv (omitInsRel rel')------ | Omits instantiations in unfolded sets.--omitInsSet :: UnfoldedSet -> UnfoldedSet-omitInsSet set =-  case set of-    UnfoldedLift list     -> UnfoldedLift (map omit list)-    UnfoldedLiftList p t  -> UnfoldedLiftList p (omitInstantiations t)-    UnfoldedLiftTuple p t -> UnfoldedLiftTuple p (omitInstantiations t)-    UnfoldedFunction p t  -> UnfoldedFunction p (omitInstantiations t)-    UnfoldedForall p t    -> UnfoldedForall p (omitInstantiations t)-  where-    omit (con, xs, ys, mt) =-      case mt of-        Nothing -> (con, xs, ys, mt)-        Just t  -> (con, xs, ys, Just (omitInstantiations t))------ | Omits all instantiations in a term.--omitIns :: Term -> Term-omitIns t =-  case t of-    TermVar tv    -> TermVar tv-    TermApp t1 t2 -> TermApp (omitIns t1) (omitIns t2)-    TermIns t _   -> omitIns t
− scripts/FT/FreeTheorems/Preparation.hs
@@ -1,156 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module contains functions to process types before a theorem can be---   generated out of them.--module FreeTheorems.Preparation (-    prepare,--    -- testing interface-    -- testPreparation-) where----import FreeTheorems.Declarations (TypeDeclaration(..), getTypeDecl)-import FreeTheorems.Types-import Data.List (nub, delete)---- import FreeTheorems.Test.ArbitraryTypes--- import Test.QuickCheck (quickCheck)-------- | Prepares a type before a theorem can be generated out of it.--prepare :: Type -> Type-prepare = replaceTypeSynonyms . closure-------- | Computes the closure for a named type term. The returned type term contains---   no free type variables anymore.--closure :: Type -> Type-closure t = foldr (\v t -> TypeForall v t) t (freeVariables t)------ | Computes the free type variables for a type term.---   This is a helper function for 'closure'.--freeVariables :: Type -> [TypeVariable]-freeVariables t =-  case t of-    TypeBasic _     -> []-    TypeVar v       -> [v]-    TypeTermVar _   -> []-    TypeCon _ ts    -> nub $ concat $ map freeVariables ts-    TypeList t1     -> freeVariables t1-    TypeUnit        -> []-    TypeTuple ts    -> nub $ concat $ map freeVariables ts-    TypeFun t1 t2   -> nub $ concat $ map freeVariables [t1, t2]-    TypeForall v t1 -> delete v (freeVariables t1)-------- | Replaces all type synonyms by its declaration's right-hand side.---   Only type synonyms occurring in the set of user-defined types are replaced.---   However, there may be no other type synonyms in the type term, anyway.--replaceTypeSynonyms :: Type -> Type-replaceTypeSynonyms t =-  let replaceTS = replaceTypeSynonyms-  in  case t of-        TypeBasic _     -> t-        TypeVar _       -> t-        TypeTermVar _   -> t-        TypeCon c ts    -> replaceByDecl c ts-        TypeList t1     -> TypeList (replaceTS t1)-        TypeUnit        -> t-        TypeTuple ts    -> TypeTuple (map replaceTS ts)-        TypeFun t1 t2   -> TypeFun (replaceTS t1) (replaceTS t2)-        TypeForall v t1 -> TypeForall v (replaceTS t1)------- | Replaces a type constructor by its declaration's right-hand side, if the---   type constructor belongs to a type synonym. Otherwise calls---   'replaceTypeSynonyms' on the subtypes.--replaceByDecl :: TypeConstructor -> [Type] -> Type-replaceByDecl con ts =-  case getTypeDecl con of-    Nothing   -> TypeCon con (map replaceTypeSynonyms ts)-    Just decl -> let TypeDecl _ _ rhs = decl-                 in  replaceTypeSynonyms (rhs ts)------------------------------------------------------------------------------------------ A list of tests for this module.--{--testPreparation = do-  putStr "closure of types works ... "-  quickCheck prop_closure-  putStr "type synonyms are replaced correctly ... "-  quickCheck prop_replaceTypeSynonyms-  putStr "preparation of types works ... "-  quickCheck prop_prepare---}----- A closed type term does not contain any free variable.--prop_closure t =-     (freeVariables (closure t) == [])-  && (closure t == closure (closure t))------ Check that there are no type synonyms anymore and that further applications--- of 'replaceTypeSynonyms' don't change the type anymore.--prop_replaceTypeSynonyms t =-     (hasNoTypeSynonyms $ replaceTypeSynonyms t)-  && (replaceTypeSynonyms t == replaceTypeSynonyms (replaceTypeSynonyms t))--hasNoTypeSynonyms t =-  case t of-    TypeBasic _     -> True-    TypeVar _       -> True-    TypeCon c ts    -> case getTypeDecl c of-                         Nothing -> and (map hasNoTypeSynonyms ts)-                         Just _  -> False-    TypeList t1     -> hasNoTypeSynonyms t1-    TypeUnit        -> True-    TypeTuple ts    -> and (map hasNoTypeSynonyms ts)-    TypeFun t1 t2   -> hasNoTypeSynonyms t1 && hasNoTypeSynonyms t2-    TypeForall v t1 -> hasNoTypeSynonyms t1-    otherwise       -> False------ Check that prepare does everything it is supposed to do, in any way.--prop_prepare t =-  (prepare t == (replaceTypeSynonyms $ closure t))-  && (prepare t == (closure $ replaceTypeSynonyms t))---
− scripts/FT/FreeTheorems/PrettyPrint.hs
@@ -1,68 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module contains classes to pretty-print types and theorems in---   different formats.--module FreeTheorems.PrettyPrint where------ This module is just an interface for all pretty-print modules. The intention--- is that this module hides the implementation of several output formats by a--- simple interface. For each output format, there should be one module in the--- 'PrettyPrint' subdirectory (according to the 'AsText' module) and also one--- class similar to 'PrettyPrintAsText'.----import FreeTheorems.Types-import qualified FreeTheorems.PrettyPrint.AsText as Text-------- | Conversion of values to 'String's.---   Derived instances of 'PrettyPrintAsText' show their values using---   'printAsText'. The pretty-printed text is optimized consoles or text files---   having a line length of at least 75 characters.--class PrettyPrintAsText a where-  -- | Pretty-prints a value as plain text with a maximum line length of 75-  --   characters.-  printAsText :: a -> String----instance PrettyPrintAsText LanguageModel where-  printAsText = Text.printLanguageModel----instance PrettyPrintAsText NamedType where-  printAsText = Text.printNamedType----instance PrettyPrintAsText Theorem where-  printAsText = Text.printTheorem----instance PrettyPrintAsText UnfoldedRelation where-  printAsText = Text.printUnfoldedRelation----instance PrettyPrintAsText TermVariable where-  printAsText = Text.printTermVariable----instance PrettyPrintAsText RelationVariable where-  printAsText = Text.printRelationVariable--
− scripts/FT/FreeTheorems/PrettyPrint/AsText.hs
@@ -1,264 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module defines functions to pretty-print types and theorems as text.--module FreeTheorems.PrettyPrint.AsText (-    printLanguageModel,-    printNamedType,-    printTheorem,-    printUnfoldedRelation,-    printTermVariable,-    printRelationVariable-) where----import FreeTheorems.Types-import FreeTheorems.PrettyPrint.Common-import FreeTheorems.PrettyPrint.Document-import qualified PPrint as P-------- | Renders a document. This helper function is used both to render type---   documents and theorem documents.------   The parameters to renderPretty influence the output by setting the ribbon---   factor and the line length.--renderDoc :: PDoc -> String-renderDoc (P doc) = P.displayS (P.renderPretty 1.0 75 doc) ""------------------------------------------------------------------------------------------ | Pretty-prints a language model.--printLanguageModel :: LanguageModel -> String-printLanguageModel BasicModel = "BasicModel"-printLanguageModel FixModel   = "FixModel"------ | Pretty-prints a named type.--printNamedType :: NamedType -> String-printNamedType = renderDoc . docNamedType------ | Pretty-prints a theorem.--printTheorem :: Theorem -> String-printTheorem = renderDoc . docTheorem------ | Pretty-prints a term variable.--printTermVariable :: TermVariable -> String-printTermVariable = renderDoc . docTermVariable------ | Pretty-prints a relation variable.--printRelationVariable :: RelationVariable -> String-printRelationVariable = renderDoc . docRelationVariable------ | Pretty-prints an expanded relation.--printUnfoldedRelation :: UnfoldedRelation -> String-printUnfoldedRelation = renderDoc . docUnfoldedRelation------------------------------------------------------------------------------------------ | Defines text documents as liftings of the document type used in the PPrint---   library.--newtype PDoc = P P.Doc----- Define some lift operators for the PDoc type, so that the following code is--- then better readable.--lift d1 = P d1--lift1 op (P d1) = P (op d1)--lift2 op (P d1) (P d2) = P (op d1 d2)--liftL op pds = P (op (map (\(P d) -> d) pds))--text = P . P.text------ The instance declaration which specifies for every class method, how it--- should work when pretty-printing objects as plain text. The following--- definitions lift mainly some of the PPrint functions.--instance Document PDoc where--  -- The empty document.-  empty = lift P.empty--  -- Concatenates two documents horizontally without putting space between-  -- them.-  (<>) = lift2 (P.<>)--  -- Concatenates two documents horizontally and puts a soft space between-  -- them. A soft space may differ from the underlying document structure. If-  -- it puts spaces automatically between objects, than a soft space should be-  -- an empty document, otherwise it should be a space character.-  ---  -- If the two documents do not fit on the same line, a linebreak is used-  -- instead of the soft space.-  (<.>) = lift2 (P.</>)--  -- Concatenates two documents horizontally and puts a space between them.-  ---  -- If the two documents do not fit on the same line, a linebreak is used-  -- instead of the soft space.-  (<+>) = lift2 (P.</>)--  -- Concatenates two documents vertically.-  (<$>) = lift2 (P.<$>)--  -- Concatenates a list of documents either horizontally, if it fits on the-  -- page, or vertically otherwise.-  -- When concatenating the documents horizontally, a soft space is inserted-  -- between each document.-  catSoft = liftL P.sep--  -- Creates a document where all lines start at least from the current-  -- column.-  align = lift1 P.align--  -- Indents the document. The amount of indentation is left to the-  -- implementation.-  indent = lift1 (P.indent 2)-----  -- Puts '(' and ')' around the document.-  parens = lift1 P.parens--  -- Puts '[' and ']' around the document.-  brackets = lift1 P.brackets--  -- Puts '{' and '}' around the document.-  braces = lift1 P.braces--  -- Writes an instantiation of a document by another document.-  instant d1 d2 = d1 <> (text "_") <> braces d2-----  -- The comma @,@.-  docComma = text ","--  -- The dot @.@ as used to terminate quantifications.-  docDot = text "."--  -- The colon @:@ used as data constructor for lists or as double colon in-  -- type notations.-  docColon = text ":"--  -- The arrow @->@.-  docArrow = text "->"--  -- The universal quantifier.-  docForall = text "forall"--  -- The universal quantifier in the FixModel.-  docForallFix = text "forall-fix"--  -- The equals sign @=@.-  docEqual = text "="--  -- The is-element-of sign.-  docIn = text "in"--  -- The conjunction sign.-  docConjunction = text "/\\"--  -- The implication sign.-  docImplication = text "==>"--  -- The union sign used when building the union of two sets.-  docUnion = text "u"--  -- The bottom @_|_@.-  docBottom = text "_|_"--  -- The bar @|@ used to separate elements from their restrictions in sets.-  docBar = text "|"--  -- The mathematical symbol for the set of closed types.-  docTypes = text "TYPES"--  -- The mathematical symbol for the set of relations over closed types.-  docRel = text "REL"--  -- The identity relation @id@.-  docId = text "id"--  -- The lift relation @lift@.-  docLift = text "lift"--  -- The pointed lift relation.-  docLiftPointed = text "lift-pointed"--  -- The text \"strict\".-  docStrict = text "strict"--  -- The text \"strict and continuous\".-  docStrictAndContinuous = fillSep [text "strict", text "and",-                                    text "continuous"]-----  -- Creates a document from a basic type.-  docBasicType b = text (show b)--  -- Creates a document from a type constructor.-  docTypeConstructor = text--  -- Creates a document from a data constructor.-  docDataConstructor = text--  -- Creates a document from a type variable.-  docTypeVariable = text--  -- Creates a document from a type term variable.-  docTypeTermVariable (T i) = text "T" <> docInt i--  -- Creates a document from a term variable.-  docTermVariable (PV tv)   = text tv-  docTermVariable (TV tv i) = text tv <> docInt i--  -- Creates a document from a relation variable.-  docRelationVariable (R i _ _)  = text "R" <> docInt i--  -- Creates a document from an integer value.-  docInt i = text (show i)--
− scripts/FT/FreeTheorems/PrettyPrint/Common.hs
@@ -1,395 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module gives common pretty-printing functions shared by various output---   formats. It is heavily based 'Document' to let the output look uniformly---   for different output formats and pretty printers.--module FreeTheorems.PrettyPrint.Common (-    docNamedType,-    docType,-    docTheorem,-    docUnfoldedRelation-) where----import FreeTheorems.Types-import FreeTheorems.PrettyPrint.Document-import Control.Monad (liftM)-import Data.Maybe (maybeToList)-------- | Creates a document from a named type.--docNamedType :: Document a => NamedType -> a-docNamedType (NamedType tv t) =-  docTermVariable tv <+> docColon <> docColon <+> align (docType False t)------ | Creates a document from a type. The second parareter is used to switch---   between a compact notation ('True') and a better readable notation---   ('False').--docType :: Document a => Bool -> Type -> a-docType = docTypeP id------ | Creates a document from a type. This is just a helper function for---   'docTypeP'.------   The first argument should either be 'id' or 'parens'. It is---   used to put parentheses around certain parts of types depending on their---   position. It effects only functions and type abstractions.------   The second argument is used to switch between a compact notation ('True')---   and a better readable notation ('False'). If turned off with False, it---   breaks long functions into several lines.--docTypeP :: Document a => (a -> a) -> Bool -> Type -> a-docTypeP useParens compact t =-  case t of-    TypeBasic b    -> docBasicType b--    TypeVar v      -> docTypeVariable v--    TypeTermVar tv -> docTypeTermVariable tv--    TypeCon c ts   -> let docts = map (docTypeP parens compact) ts-                          doc   = fillSep (docTypeConstructor c : docts)-                      in  if ts == []-                            then doc-                            else parens doc--    TypeList t'    -> brackets (docTypeP id compact t')--    TypeUnit       -> parens empty--    TypeTuple ts   -> tupled (map (docTypeP id compact) ts)--    TypeFun t1 t2  -> let ts = collectFun t2-                          t2d = (\t -> docArrow <.> docTypeP parens compact t)-                          docts = map t2d ts-                          docts' = (docTypeP parens compact t1) : docts-                      in  if compact-                            then useParens (fillSoft docts')-                            else useParens (catSoft docts')--    TypeForall _ _ -> let (vs,t') = collectForall t-                          docvs = fillSoft (map docTypeVariable vs)-                          doct' = docTypeP id compact t'-                          doc   = docForall <.> docvs <> docDot <.> align doct'-                      in  useParens doc--  where-    -- Collects all types being part of a function.-    collectFun t =-      case t of-        TypeFun t1 t2 -> t1 : (collectFun t2)-        otherwise     -> [t]--    -- Collects variables of consecutive type abstractions.-    collectForall t =-      case t of-        TypeForall v t1 -> (v:vs, t2) where (vs,t2) = (collectForall t1)-        otherwise       -> ([], t)------------------------------------------------------------------------------------------ | Creates a document from a theorem.---   To make theorems better readable, every quantification indents its---   subtheorem a bit. Otherwise, the parts of a theorem are written on a line,---   possibly continuing in the next line.--docTheorem :: Document a => Theorem -> a---docTheorem (IsElementOf (t1,t2) rel) =-  let doct1  = docTerm t1-      doct2  = docTerm t2-  in  case rel of-        RelTerm (TermVar (PV "id")) _ -> fillSoft [doct1, docEqual, doct2]--        RelTerm (TermIns (TermVar (PV "id")) _) _ -> fillSoft [doct1, docEqual,-                                                               doct2]--        RelTerm t _ -> fillSoft [docTerm (TermApp t t1), docEqual, doct2]--        otherwise -> let docrel = case rel of-                                    RelForall _ _ _ -> parens $ docRelation rel-                                    RelFun _ _ _    -> parens $ docRelation rel-                                    otherwise       -> docRelation rel-                     in  fillSoft [tupled [doct1, doct2], docIn, docrel]---docTheorem (ForallPairs (tv1,tv2) rel theorem) =-  let doctv1 = docTermVariable tv1-      doctv2 = docTermVariable tv2-      docrel = docRelation rel-  in  fillSoft [docForall, tupled [doctv1, doctv2], docIn, docrel <> docDot]-      <$> indent (docTheorem theorem)---docTheorem (ForallRelations rv res theorem) =-  let R _ _ (ttv1, ttv2) = rv-      docttvs = docTypeTermVariable ttv1 <> docComma <> docTypeTermVariable ttv2-      docrv   = docRelationVariable rv-      docres  = case res of-                  []        -> docDot-                  otherwise -> let drs = map docRestriction res-                                   i = map (\dr -> dr <> docComma) (init drs)-                                   l = last drs <> docDot-                               in  fillSep ([docComma] ++ i ++ [l])-  in  fillSoft [docForall, docttvs, docIn, docTypes <> docDot,-                docForall, docrv, docIn, docRel <> parens docttvs <> docres]-      <$> indent (docTheorem theorem)---docTheorem (ForallFunctions f (ttv1, ttv2) res theorem) =-  let docttvs = docTypeTermVariable ttv1 <> docComma <> docTypeTermVariable ttv2-      doct    = docType True (TypeFun (TypeTermVar ttv1) (TypeTermVar ttv2))-      docf    = docTermVariable f-      docres  = case res of-                  []        -> docDot-                  otherwise -> let drs = map docRestriction res-                                   i = map (\dr -> dr <> docComma) (init drs)-                                   l = last drs <> docDot-                               in  fillSep ([docComma] ++ i ++ [l])-  in  fillSoft [docForall, docttvs, docIn, docTypes <> docDot,-                docForall, docf, docColon <> docColon, doct <> docres]-      <$> indent (docTheorem theorem)---docTheorem (ForallElements tv t theorem) =-  let doctv   = docTermVariable tv-      doct    = case t of-                  TypeForall _ _ -> parens (docType True t)-                  otherwise      -> docType True t-  in  fillSoft [docForall, doctv, docColon <> docColon, doct <> docDot]-      <$> indent (docTheorem theorem)---docTheorem (Conjunction theorem1 theorem2) =-  let collect t = case t of-                    Conjunction t1 t2 -> t1 : collect t2-                    otherwise         -> [t]-      docts = map (\t -> align $ docTheorem t) (collect theorem2)-  in  foldl (<$>) (parens $ align $ docTheorem theorem1)-                  (map (\d -> docConjunction <+> parens d) docts)---docTheorem (Implication theorem1 theorem2) =-  (parens $ align $ docTheorem theorem1)-  <$> (docImplication <+> (align $ docTheorem theorem2))-------- | Creates a document from a term.--docTerm :: Document a => Term -> a-docTerm term =-  case term of-    TermVar tv    -> docTermVariable tv--    TermApp t1 t2 -> case t2 of-                       TermApp _ _ -> fillSep [docTerm t1, parens (docTerm t2)]-                       otherwise   -> fillSep [docTerm t1, docTerm t2]--    TermIns t ty  -> let docty = docType True ty-                     in  case t of-                           TermApp _ _ -> instant (parens (docTerm t)) docty-                           otherwise   -> instant (docTerm t) docty-------- | Creates a document from a restriction.--docRestriction :: Document a => Restriction -> a-docRestriction res =-  case res of-    IsStrict tv              -> fillSep [docTermVariable tv, docStrict]-    IsStrictAndContinuous rv -> fillSep [docRelationVariable rv,-                                         docStrictAndContinuous]-------- | Creates a document from a relation.--docRelation :: Document a => Relation -> a-docRelation rel =-  case rel of-    RelTerm t _             -> docTerm t--    RelVar rv               -> docRelationVariable rv--    RelLift model con rels  -> let doccon = docTypeConstructor con-                               in  docLiftRelation model doccon rels--    RelLiftList model rel'  -> docLiftRelation model (brackets empty) [rel']--    RelLiftTuple model rels -> let doccon = parens (docInt (length rels))-                               in  docLiftRelation model doccon rels--    RelFun model rel1 rel2  -> fillSoft [docRelation rel1,-                                         docArrow,-                                         docRelation rel2]--    RelForall model rv rel' -> let quant = case model of-                                             BasicModel -> docForall-                                             FixModel   -> docForallFix-                               in  fillSoft [quant,-                                             docRelationVariable rv <> docDot,-                                             docRelation rel']------ | Creates a document from a lift relation.--docLiftRelation :: Document a => LanguageModel -> a -> [Relation] -> a-docLiftRelation model doccon rels =-  let doclift = case model of-                  BasicModel -> docLift-                  FixModel   -> docLiftPointed-      docrels =  map docRelation rels-  in  (instant doclift doccon) <> (tupled docrels)------------------------------------------------------------------------------------------ | Creates a document from an unfolded relation.--docUnfoldedRelation :: Document a => UnfoldedRelation -> a-docUnfoldedRelation (UnfoldedRelation rel model unfolded) =-  let docsets = case unfolded of-                  UnfoldedLift cs        -> docUnfoldedLift model cs-                  UnfoldedLiftList vs t  -> docUnfoldedListLift model vs t-                  UnfoldedLiftTuple vs t -> docUnfoldedTupleLift model vs t-                  UnfoldedFunction vs t  -> [docUnfoldedFunction model vs t]-                  UnfoldedForall vs t    -> [docUnfoldedForall model vs t]-      docrel = docRelation rel-      h = docEqual <+> head docsets-      t = map (\d -> docUnion <+> d) (tail docsets)-  in  foldr1 (<$>) (docrel : h : t)------ | Creates a document from a tuple and a corresponding theorem.--docUnfoldedSet :: Document a => (a, a) -> Maybe a -> a-docUnfoldedSet (x, y) maybeTheorem =-  case maybeTheorem of-    Nothing      -> braces (tupled [x, y])-    Just theorem -> braces ((tupled [x, y]) <+> docBar <+> align theorem)------ | Creates a document showing a set containing only a pair of bottoms.--docBottomSet :: Document a => LanguageModel -> Maybe a-docBottomSet model =-  case model of-    BasicModel -> Nothing-    FixModel   -> Just (docUnfoldedSet (docBottom, docBottom) Nothing)------ | Creates a document for an unfolded lifted relation.--docUnfoldedLift :: Document a => LanguageModel-                                   -> [( DataConstructor-                                       , [TermVariable], [TermVariable]-                                       , Maybe Theorem)]-                                   -> [a]--docUnfoldedLift model list =-  maybeToList (docBottomSet model) ++ map makeSet list-  where-    makeSet (con, xs, ys, maybeTheorem) =-      let doccon = docDataConstructor con-          docxs = doccon <+> fillSep (map docTermVariable xs)-          docys = doccon <+> fillSep (map docTermVariable ys)-          doctheorem = liftM docTheorem maybeTheorem-      in  docUnfoldedSet (docxs, docys) doctheorem------ | Creates a document for an unfolded lifted list relation.--docUnfoldedListLift :: Document a => LanguageModel-                                     -> ( (TermVariable, TermVariable)-                                        , (TermVariable, TermVariable))-                                     -> Theorem-                                     -> [a]--docUnfoldedListLift model ((x,xs),(y,ys)) theorem =-  let docx  = docTermVariable x-      docy  = docTermVariable y-      docxs = docTermVariable xs-      docys = docTermVariable ys-      doctuple   = (docx <.> docColon <.> docxs, docy <.> docColon <.> docys)-      docempty   = docUnfoldedSet (brackets empty, brackets empty) Nothing-      doctheorem = Just $ docTheorem theorem-  in  maybeToList (docBottomSet model)-      ++ [docempty] ++ [docUnfoldedSet doctuple doctheorem]------ | Creates a document for an unfolded lifted tuple relation.--docUnfoldedTupleLift :: Document a => LanguageModel-                                      -> ([TermVariable], [TermVariable])-                                      -> Theorem-                                      -> [a]--docUnfoldedTupleLift model (xs, ys) theorem =-  let docxs    = tupled (map docTermVariable xs)-      docys    = tupled (map docTermVariable ys)-      doctuple = (docxs, docys)-      doctheorem = Just $ docTheorem theorem-  in  maybeToList (docBottomSet model) ++ [docUnfoldedSet doctuple doctheorem]------ | Creates a document for an unfolded functional relation.--docUnfoldedFunction :: Document a => LanguageModel-                                     -> (TermVariable, TermVariable)-                                     -> Theorem-                                     -> a--docUnfoldedFunction model (f,g) theorem =-  docUnfoldedSet (docTermVariable f, docTermVariable g)-                 (Just $ docTheorem theorem)------ | Creates a document for an unfolded relational abstraction.--docUnfoldedForall :: Document a => LanguageModel-                                   -> (TermVariable, TermVariable)-                                   -> Theorem-                                   -> a--docUnfoldedForall model (x,y) theorem =-  docUnfoldedSet (docTermVariable x, docTermVariable y)-                 (Just $ docTheorem theorem)
− scripts/FT/FreeTheorems/PrettyPrint/Document.hs
@@ -1,212 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module contains a class used as an abstraction of various---   pretty-printing libraries. It is used as a foundation to pretty-print---   types, relations and theorems in any format.--module FreeTheorems.PrettyPrint.Document where----import FreeTheorems.Types------ | An abstract document for a certain type.---   Every document type has to implement the member functions which are used as---   combinators to pretty-print types and theorems.--class Document a where-  -- | The empty document.-  empty :: a--  -- | Concatenates two documents horizontally without putting space between-  --   them.-  (<>) :: a -> a -> a--  -- | Concatenates two documents horizontally and puts a soft space between-  --   them. A soft space may differ from the underlying document structure. If-  --   it puts spaces automatically between objects, than a soft space should be-  --   an empty document, otherwise it should be a space character.-  ---  --   If the two documents do not fit on the same line, a linebreak is used-  --   instead of the soft space.-  (<.>) :: a -> a -> a--  -- | Concatenates two documents horizontally and puts a space between them.-  ---  --   If the two documents do not fit on the same line, a linebreak is used-  --   instead of the space.-  (<+>) :: a -> a -> a--  -- | Concatenates two documents vertically.-  (<$>) :: a -> a -> a---  infixr 6 <>, <.>, <+>-  infixr 5 <$>--  -- | Concatenates a list of documents and uses soft spaces to separate the-  --   documents.-  ---  --   If the concatenated document exceeds the line length, a line break is-  --   inserted at the correct position instead of a soft space.-  ---  --   An implementation is already provided.-  fillSoft :: [a] -> a-  fillSoft ds =-    case ds of-      []        -> empty-      [d]       -> d-      otherwise -> foldr1 (<.>) ds--  -- | Concatenates a list of documents with a soft space between every-  --   document.-  ---  --   If the concatenated document exceeds the line length, a line break is-  --   inserted at the correct position instead of a space.-  ---  --   An implementation is already provided.-  fillSep :: [a] -> a-  fillSep ds =-    case ds of-      []        -> empty-      [d]       -> d-      otherwise -> foldr1 (<+>) ds--  -- | Concatenates a list of documents either horizontally, if it fits on the-  --   page, or vertically otherwise.-  --   When concatenating the documents horizontally, a soft space is inserted-  --   between each document.-  catSoft :: [a] -> a--  -- | Creates a document where all lines start at least from the current-  --   column.-  align :: a -> a--  -- | Indents the document. The amount of indentation is left to the-  --   implementation.-  indent :: a -> a------  -- | Puts '(' and ')' around the document.-  parens :: a -> a--  -- | Puts '[' and ']' around the document.-  brackets :: a -> a--  -- | Puts '{' and '}' around the document.-  braces :: a -> a--  -- | Writes the list of documents as a tuple (d1,d2,...,dn).-  ---  --   An implementation is already provided.-  tupled :: [a] -> a-  tupled ds = let i = map (\d -> d <> docComma) (init ds)-              in  parens (fillSoft (i ++ [last ds]))--  -- | Writes an instantiation of a document by another document.-  instant :: a -> a -> a------  -- | The comma @,@.-  docComma :: a--  -- | The dot @.@ as used to terminate quantifications.-  docDot :: a--  -- | The colon @:@ used as data constructor for lists or as double colon in-  --   type notations.-  docColon :: a--  -- | The arrow @->@.-  docArrow :: a--  -- | The universal quantifier.-  docForall :: a--  -- | The universal quantifier in the FixModel.-  docForallFix :: a--  -- | The equals sign @=@.-  docEqual :: a--  -- | The is-element-of sign.-  docIn :: a--  -- | The conjunction sign.-  docConjunction :: a--  -- | The implication sign.-  docImplication :: a--  -- | The union sign used when building the union of two sets.-  docUnion :: a--  -- | The bottom @_|_@.-  docBottom :: a--  -- | The bar @|@ used to separate elements from their restrictions in sets.-  docBar :: a--  -- | The mathematical symbol for the set of closed types.-  docTypes :: a--  -- | The mathematical symbol for the set of relations over closed types.-  docRel :: a--  -- | The identity relation @id@.-  docId :: a--  -- | The lift relation @lift@.-  docLift :: a--  -- | The pointed lift relation.-  docLiftPointed :: a--  -- | The text \"strict\".-  docStrict :: a--  -- | The text \"strict and continuous\".-  docStrictAndContinuous :: a------  -- | Creates a document from a basic type.-  docBasicType :: BasicType -> a--  -- | Creates a document from a type constructor.-  docTypeConstructor :: TypeConstructor -> a--  -- | Creates a document from a data constructor.-  docDataConstructor :: TypeConstructor -> a--  -- | Creates a document from a type variable.-  docTypeVariable :: TypeVariable -> a--  -- | Creates a document from a type term variable.-  docTypeTermVariable :: TypeTermVariable -> a--  -- | Creates a document from a term variable.-  docTermVariable :: TermVariable -> a--  -- | Creates a document from a relation variable.-  docRelationVariable :: RelationVariable -> a--  -- | Creates a document from an integer value.-  docInt :: Int -> a----
− scripts/FT/FreeTheorems/Reduction.hs
@@ -1,141 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module contains a function to reduce automatically generated---   relations.--module FreeTheorems.Reduction (-    reduceRelation,--    -- testing interface-    -- testReduction-) where----import FreeTheorems.Types---- import FreeTheorems.Test.ArbitraryTypes--- import Test.QuickCheck (quickCheck)------ | Simplifies relations by replacing lifted relations by identity relations---   if possible. A lifted relation can be reduced to an identity relation, if---   all relations it is based on are identity relations. The same is true for---   functional relations.--reduceRelation :: Relation -> Relation-reduceRelation rel = either id toIdentityRelation $ reduceToId rel------ | Reduces relations to identity relations. This is a helper function for---   'reduceRelation'.------   If a lifted relation is only based on identity relations, it can be---   replaced by a identity relation itself. The same is true for functional---   relations.------   This functions walks other a given relation and decides on this mechanism---   if a lifted function should be reduced. It returns @Right t@ if the---   relation @r@ was reduced to an identity over type @t@. Otherwise,---   @Left r'@ is returned, where @r'@ is the relation @r@ with possible changes---   in its subrelations.--reduceToId :: Relation -> Either Relation Type-reduceToId rel =-  case rel of-    RelTerm term typepair   -> processTerm term typepair-    RelVar rv               -> Left rel-    RelLift model con rels  -> either (Left . RelLift model con)-                                      (Right . TypeCon con)-                                      (foldReduceToId rels)--    RelLiftList model rel'  -> either (Left . RelLiftList model)-                                      (Right . TypeList)-                                      (reduceToId rel')--    RelLiftTuple model rels -> either (Left . RelLiftTuple model)-                                      (Right . TypeTuple)-                                      (foldReduceToId rels)--    RelFun model rel1 rel2  -> either (\[r1,r2] -> Left $ RelFun model r1 r2)-                                      (\[t1,t2] -> Right $ TypeFun t1 t2)-                                      (foldReduceToId [rel1, rel2])--    RelForall model rv rel' -> either (Left . RelForall model rv)-                                      (Left . RelForall model rv-                                       . toIdentityRelation)-                                      (reduceToId rel')--  where-    processTerm term typepair =-      case term of-        TermIns (TermVar (PV "id")) ty -> Right ty-        otherwise                      -> Left (RelTerm term typepair)--    foldReduceToId = foldr (\r x -> combine (reduceToId r) x) (Right [])--    combine (Left x) (Left es)   = Left (x : es)-    combine (Left x) (Right es)  = Left (x : (map toIdentityRelation es))-    combine (Right x) (Left es)  = Left ((toIdentityRelation x) : es)-    combine (Right x) (Right es) = Right (x : es)------ | Returns the identity relation for a given type.--toIdentityRelation :: Type -> Relation-toIdentityRelation t = RelTerm (TermIns (TermVar (PV "id")) t) (t,t)------------------------------------------------------------------------------------------ A list of tests for this module.--{--testReduction = do-  putStr "reduction of relation works ... "-  quickCheck prop_reduceRelation------ Check that 'simplifyRelationsToId' doesn't change anything when applied--- twice and that it preserves the structure.--prop_reduceRelation rel =-  (reduceRelation (reduceRelation rel) == reduceRelation rel)-  && compareRelAndRel ((reduceRelation rel), rel)--compareRelAndRel pair =-  case pair of-    (RelTerm t1 _, RelTerm t2 _) -> t1 == t2-    (RelTerm t1 _, _)            -> True--    (RelVar rv1, RelVar rv2) -> rv1 == rv2--    (RelLift m1 c1 rels1, RelLift m2 c2 rels2) ->-        (m1 == m2) && (c1 == c2) && and (map compareRelAndRel $ zip rels1 rels2)--    (RelLiftList m1 rel1, RelLiftList m2 rel2) ->-        (m1 == m2) && compareRelAndRel (rel1, rel2)--    (RelLiftTuple m1 rels1, RelLiftTuple m2 rels2) ->-        (m1 == m2) && and (map compareRelAndRel $ zip rels1 rels2)--    (RelFun m1 rel1 rel1', RelFun m2 rel2 rel2') ->-        (m1 == m2) && compareRelAndRel (rel1, rel2)-                   && compareRelAndRel (rel1', rel2')--    (RelForall m1 rv1 rel1, RelForall m2 rv2 rel2) ->-        (m1 == m2) && (rv1 == rv2) && compareRelAndRel (rel1, rel2)--    otherwise -> False---}
− scripts/FT/FreeTheorems/Simplification.hs
@@ -1,96 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module defines a function to simplify theorems by trivial---   transformations.--module FreeTheorems.Simplification (-    simplifyTheorem-) where----import FreeTheorems.Types------ | Simplifies a theorem. It essentially replaces parts like------ >   forall x :: T1.--- >     forall y :: T2.--- >       (f x = y)--- >       ==> theorem------   by------ >   forall x :: T1.--- >     theorem'------   where @f@ is any function and @theorem'@ is obtained from @theorem@ by---   replacing each occurrence of @y1@ by @f x1@.--simplifyTheorem :: Theorem -> Theorem-simplifyTheorem theorem =-  case theorem of-    IsElementOf _ _            -> theorem-    ForallPairs p r t          -> ForallPairs p r (simplifyTheorem t)-    ForallRelations rv res t   -> ForallRelations rv res (simplifyTheorem t)-    ForallFunctions f ts res t -> ForallFunctions f ts res (simplifyTheorem t)-    ForallElements x ty t      -> ForallElements x ty (tryToSimplify t)-    Conjunction t1 t2          -> Conjunction (simplifyTheorem t1)-                                              (simplifyTheorem t2)-    Implication t1 t2          -> Implication (simplifyTheorem t1)-                                              (simplifyTheorem t2)------ | Tries to apply the simplification on the given theorem. This is a helper---   function for 'simplifyTheorem'.--tryToSimplify :: Theorem -> Theorem-tryToSimplify theorem =-  case theorem of-    ForallElements y _ (Implication (IsElementOf (t1, TermVar tv)-                                                 (RelTerm term _)) t) ->-        if y == tv-          then let term' = case term of-                             TermIns (TermVar (PV "id")) _ -> t1-                             otherwise                     -> TermApp term t1-               in  simplifyTheorem (replaceInTheorem tv term' t)-          else simplifyTheorem theorem-    otherwise -> simplifyTheorem theorem------ | Replaces every occurrence of a term variable in the given theorem by a---   term.--replaceInTheorem :: TermVariable -> Term -> Theorem -> Theorem-replaceInTheorem tv term theorem =-  case theorem of-    IsElementOf (t1, t2) rel -> IsElementOf ((replaceInTerm tv term t1)-                                            ,(replaceInTerm tv term t2)) rel-    ForallPairs p r t        -> ForallPairs p r (replaceInTheorem tv term t)-    ForallRelations rv res t -> ForallRelations rv res-                                                (replaceInTheorem tv term t)-    ForallFunctions f ts res t -> ForallFunctions f ts res-                                                (replaceInTheorem tv term t)-    ForallElements x ty t    -> ForallElements x ty (replaceInTheorem tv term t)-    Conjunction t1 t2        -> Conjunction (replaceInTheorem tv term t1)-                                            (replaceInTheorem tv term t2)-    Implication t1 t2        -> Implication (replaceInTheorem tv term t1)-                                            (replaceInTheorem tv term t2)------ | Replaces every occurrence of a term variable in the given term by a term.--replaceInTerm :: TermVariable -> Term -> Term -> Term-replaceInTerm tv term t =-  case t of-    TermVar tv'   -> if tv' == tv then term else TermVar tv'-    TermApp t1 t2 -> TermApp (replaceInTerm tv term t1)-                             (replaceInTerm tv term t2)-    TermIns t' ty -> TermIns (replaceInTerm tv term t') ty
− scripts/FT/FreeTheorems/Specialization.hs
@@ -1,180 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module defines function which are used in specializing relations to---   functions.--module FreeTheorems.Specialization (-    extractRelationVariables,-    replaceRelationVariable-) where----import FreeTheorems.Simplification-import FreeTheorems.TheoremData-import FreeTheorems.Types-import FreeTheorems.Unfolding-import Control.Monad (liftM)------ | Returns all relation variables of a theorem which can be specialized to a---   function.---   Relation variables being quantified on the left-hand side of an implication---   can not be specialized. However, relation variables being quantified like------ >   ((forall R. theorem) ==> theorem1) ==> theorem2------   can be specialized. Thus, the position relative to implications decides---   whether a relation variable is returned by this function.--extractRelationVariables :: Theorem -> [RelationVariable]-extractRelationVariables theorem = extractRelVars True theorem------ | Returns all relation variables of a theorem which can be specialized to a---   function. This is a helper function for 'extractRelationVariables' and uses---   its first argument to decide if a relation variable can be specialized to a---   function.--extractRelVars :: Bool -> Theorem -> [RelationVariable]-extractRelVars takeRVs theorem =-  case theorem of-    IsElementOf _ _         -> []-    ForallPairs _ _ t       -> extractRelVars takeRVs t-    ForallRelations rv _ t  -> if takeRVs-                                 then rv : (extractRelVars takeRVs t)-                                 else extractRelVars takeRVs t-    ForallFunctions _ _ _ t -> extractRelVars takeRVs t-    ForallElements _ _ t    -> extractRelVars takeRVs t-    Conjunction t1 t2       -> extractRelVars takeRVs t1-                               ++ extractRelVars takeRVs t2-    Implication t1 t2       -> extractRelVars (not takeRVs) t1-                               ++ extractRelVars takeRVs t2------------------------------------------------------------------------------------------ | Replaces a relation variable found by 'extractRelationVariables' in the---   given theorem. A new function symbol is created to replace the relation---   variable. The returned theorem is simplified by 'simplifyTheorem'.--replaceRelationVariable :: Theorem -> RelationVariable -> TheoremState Theorem-replaceRelationVariable theorem rv = do-  f <- newRelationAsFunctionVariable-  return $ simplifyTheorem (replaceRelVar rv f theorem)------ | Replaces every occurrence of a relation variable by the given term---   variable. This is a helper function for 'replaceRelationVariable'.--replaceRelVar :: RelationVariable -> TermVariable -> Theorem -> Theorem-replaceRelVar rv f theorem =-  case theorem of-    IsElementOf p r       -> IsElementOf p (replaceInRel rv f [] r)--    ForallPairs p r t     -> let r' = replaceInRel rv f [] r-                                 t' = replaceRelVar rv f t-                             in  adjustForallPairs p r' t'--    ForallRelations rv' res t -> let t'   = replaceRelVar rv f t-                                     res' = map (updateRestriction f) res-                                     R _ _ types = rv-                                 in  if rv == rv'-                                       then ForallFunctions f types res' t'-                                       else ForallRelations rv'     res  t'--    ForallFunctions f' types res t -> ForallFunctions f' types res-                                                      (replaceRelVar rv f t)--    ForallElements x ty t -> ForallElements x ty (replaceRelVar rv f t)--    Conjunction t1 t2     -> Conjunction (replaceRelVar rv f t1)-                                         (replaceRelVar rv f t2)--    Implication t1 t2     -> Implication (replaceRelVar rv f t1)-                                         (replaceRelVar rv f t2)------ | Takes a restriction for a relation variable and transforms it into a---   restriction for the given term variable.--updateRestriction :: TermVariable -> Restriction -> Restriction-updateRestriction f res =-  case res of-    IsStrictAndContinuous _ -> IsStrict f-    otherwise               -> res------ | Replaces every occurrence of the given relation variable by the given term---   variable in a relation.---   The third argument gives a list of relation variables bound in the current---   environment.--replaceInRel :: RelationVariable-                -> TermVariable-                -> [RelationVariable]-                -> Relation-                -> Relation--replaceInRel rv f rvs rel =-  case rel of-    RelTerm _ _          -> rel-    RelVar rv'           -> if (rv' `elem` rvs) || (rv' /= rv)-                              then RelVar rv'-                              else let R _ _ (ttv1, ttv2) = rv-                                       types = ( TypeTermVar ttv1-                                               , TypeTermVar ttv2)-                                   in  RelTerm (TermVar f) types-    RelLift m c rels     -> RelLift m c (map (replaceInRel rv f rvs) rels)-    RelLiftList m rel'   -> adjustLiftList m (replaceInRel rv f rvs rel')-    RelLiftTuple m rels  -> RelLiftTuple m (map (replaceInRel rv f rvs) rels)-    RelFun m rel1 rel2   -> RelFun m (replaceInRel rv f rvs rel1)-                                     (replaceInRel rv f rvs rel2)-    RelForall m rv' rel' -> RelForall m rv' (replaceInRel rv f (rv':rvs) rel')------ | Creates a proper notation of a lifted list relation. If the argument---   relation is a function, the list relation is replaced by @map@.--adjustLiftList :: LanguageModel -> Relation -> Relation-adjustLiftList model rel =-  case rel of-    RelTerm t (ty1, ty2) -> let tmap  = TermVar (PV "map")-                                tmap' = (TermIns (TermIns tmap ty1) ty2)-                            in  RelTerm (TermApp tmap' t)-                                        (TypeList ty1, TypeList ty2)-    otherwise            -> RelLiftList model rel------ | Creates a proper notation for abstractions over term variables. If the---   corresponding relation is a function, then the term variables abstraction---   uses a different notation.--adjustForallPairs :: (TermVariable, TermVariable)-                     -> Relation-                     -> Theorem-                     -> Theorem--adjustForallPairs (tv1, tv2) rel theorem =-  case rel of-    RelTerm _ _ -> let (ty1, ty2)  = getTypesOf rel-                   in  ForallElements tv1 ty1-                       $ ForallElements tv2 ty2-                       $ Implication-                           (IsElementOf (TermVar tv1, TermVar tv2) rel)-                           theorem-    otherwise   -> ForallPairs (tv1, tv2) rel theorem-
− scripts/FT/FreeTheorems/TheoremData.hs
@@ -1,200 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module provides a state object used in various stages of the theorem---   generation process. It serves to create unique indices.--module FreeTheorems.TheoremData (-    TheoremData,-    TheoremState,-    newTheoremData,-    execute,-    executeWith,-    newRelationVariable,-    newVariablesFor,-    newRelationAsFunctionVariable-) where----import FreeTheorems.Declarations (isDefined)-import FreeTheorems.Types-import Control.Monad (liftM2)-import Control.Monad.State (State, get, modify, runState)------ | A type synonym for the state used when modifying 'TheoremData'.--type TheoremState a = State TheoremData a------ | Stores information used to create unique indices. It is used while---   generating theorems for types.--data TheoremData = TheoremData {-                    forbiddenVariable :: TermVariable,-                        -- ^ The name of the type, from which the theorem is-                        --   generated. Used to avoid name clashes.--                    nextRelVarIndex :: Int,-                        -- ^ The next index when creating a new relation-                        --   variable.--                    nextTypeTermVarIndex :: Int,-                        -- ^ The next index when creating a new type term-                        --   variable.--                    nextTermVarIndex  :: Int,-                        -- ^ Next index when creating a new term variable.--                    nextFunVarIndex   :: Int,-                        -- ^ Next index when creating a new term variable-                        --   representing a function.--                    nextRelFunVarIndex   :: Int-                        -- ^ Next index when creating a new term variable-                        --   representing a function specialized from a-                        --   relation.-                  }------ | Creates new theorem data based on the name of the type from which the---   theorem is generated and the relation variable mapping of 'applyDelta'.--newTheoremData :: TermVariable -> TheoremData-newTheoremData tv = TheoremData {-                      forbiddenVariable = tv,-                      nextRelVarIndex = 1,-                      nextTypeTermVarIndex = 1,-                      nextTermVarIndex = 1,-                      nextFunVarIndex = 1,-                      nextRelFunVarIndex = 1-                    }------ | Executes a 'TheoremState' action and returns the result of it along with---   the last data. The latter may be used to execute consecutive actions.--execute :: TermVariable -> TheoremState a -> (a, TheoremData)-execute tv action = executeWith (newTheoremData tv) action----- | Executes a 'TheoremState' action using previously generated data. Returns---   the action's result and updated data.--executeWith :: TheoremData -> TheoremState a -> (a, TheoremData)-executeWith tdata action = runState action tdata------ | Creates a new relation variable.--newRelationVariable :: TypeVariable -> TheoremState RelationVariable-newRelationVariable v = do-  ttv1 <- newTypeTermVariable-  ttv2 <- newTypeTermVariable--  tdata <- get-  let index  = nextRelVarIndex tdata-  let rv = R index v (ttv1, ttv2)-  modify (\tdata -> tdata { nextRelVarIndex = index + 1 })-  return rv------ | Creates a new type term variable.--newTypeTermVariable :: TheoremState TypeTermVariable-newTypeTermVariable = do-  tdata <- get-  let index = nextTypeTermVarIndex tdata-  modify (\tdata -> tdata { nextTypeTermVarIndex = index + 1 })--  -- check if the name of the new type term variable collides with an already-  -- existing type constructor name-  if isDefined ("T" ++ show index)-    then newTypeTermVariable-    else return (T index)------ Generates a term variable for a non-function term or generates a function--- variable for a function, even if it is hidden by abstractions.--newVariablesFor :: Relation -> TheoremState (TermVariable, TermVariable)-newVariablesFor rel =-  case rel of-    RelFun _ _ _    -> newFunctionVariables-    RelForall _ _ r -> newVariablesFor r-    otherwise       -> newTermVariables------ | Creates a new pair of term variables (@x_i@ and @y_i@).---   The created variables are checked against the name of the type from which---   the theorem is generated to ensure that the variables are unique.--newTermVariables :: TheoremState (TermVariable, TermVariable)-newTermVariables = do-  tdata <- get-  let index = nextTermVarIndex tdata-  modify (\tdata -> tdata { nextTermVarIndex = index + 1 })-  let x = (TV "x" index)-  let y = (TV "y" index)-  areInUse <- liftM2 (||) (isAlreadyInUse x) (isAlreadyInUse y)-  if areInUse-    then newTermVariables-    else return (x, y)------ | Creates a new pair of function term variables (@f_i@ and @g_i@).---   The created variables are checked against the name of the type from which---   the theorem is generated to ensure that the variables are unique.--newFunctionVariables :: TheoremState (TermVariable, TermVariable)-newFunctionVariables = do-  tdata <- get-  let index = nextFunVarIndex tdata-  modify (\tdata -> tdata { nextFunVarIndex = index + 1 })-  let f = (TV "f" index)-  let g = (TV "g" index)-  areInUse <- liftM2 (&&) (isAlreadyInUse f) (isAlreadyInUse g)-  if areInUse-    then newFunctionVariables-    else return (f, g)------ | Creates a new function variable @h_i@ which is used to replace or---   specialize a relation variable.---   The created variable is checked against the name of the type from which---   the theorem is generated to ensure that the variable is unique.--newRelationAsFunctionVariable :: TheoremState TermVariable-newRelationAsFunctionVariable = do-  tdata <- get-  let index = nextRelFunVarIndex tdata-  modify (\tdata -> tdata { nextRelFunVarIndex = index + 1 })-  let h = TV "h" index-  isInUse <- isAlreadyInUse h-  if isInUse-    then newRelationAsFunctionVariable-    else return h------ | Checks if a generated variable is unique. Returns 'True' if the same name---   is already in use.--isAlreadyInUse :: TermVariable -> TheoremState Bool-isAlreadyInUse var = do-  tdata <- get-  return (var == forbiddenVariable tdata)-
− scripts/FT/FreeTheorems/TypeParser.hs
@@ -1,502 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module defines a parser to create a 'NamedType' out of a string.---   The parser itself is based on Parsec.--module FreeTheorems.TypeParser (-    parseNamedType,-    parseType,--    -- testing interface---  testTypeParser-) where----import FreeTheorems.Declarations-import FreeTheorems.Preparation-import FreeTheorems.PrettyPrint-import FreeTheorems.Types-import Data.Char (isLower, isUpper, isAlphaNum, isSpace, isDigit)-import Text.ParserCombinators.Parsec---- import FreeTheorems.Test.ArbitraryTypes--- import Test.QuickCheck (quickCheck)-------- | Parses a Haskell type string and creates a named type.------   The content of the string argument has to be conforming to the following---   EBNF syntax:------ > NamedType ::= Name :: TypeTerm------   where @Name@ is a token starting with a lower letter or @_@, and---   consisting of alphanumeric letters and the characters @_@ and @'@ from the---   second character onwards. A @Name@ starting with @_@ has to be at least two---   characters long, because @_@ is a reserved identifier in Haskell.------   Alternatively, a @Name@ can also be an operator which has to be enclosed in---   parentheses. Allowed characters of operators are------ > ! | # | $ | % | & | * | + | . | / | < | = | > | ? | @ | \ | ^ | | | - | ~------   and the colon @:@ from the second although character onwards.---   Note that the following operators are restricted keywords in Haskell and---   can not be used as names of types:------ > .. | : | :: | = | \ | | | <- | -> | @ | ~ | =>------   For the syntax of a @TypeTerm@ see 'parseType'.--parseNamedType :: String                            -- ^ The string to be-                                                    --   parsed.-                  -> Either ParseError NamedType    -- ^ Returns the parsed-                                                    --   named type or a parser-                                                    --   error.-parseNamedType string =-  case runParser namedType () "" string of-    Left error             -> Left error-    Right (NamedType tv t) -> Right (NamedType tv (prepare t))------ | Parses a Haskell type string and creates a named type.------   A type string has to be conforming to the following EBNF syntax:------ > TypeTerm ::= SimpleTypeTerm--- >            | SimpleTypeTerm "->" TypeTerm--- >            | "forall" TypeVariableList "." TypeTerm------ > SimpleTypeTerm ::= ATypeTerm--- >                  | TypeConstructor ATypeTermList--- >                  | "[]" ATypeTerm--- >                  | "(,)" ATypeTerm ATypeTerm--- >                  | "(,,)" ATypeTerm ATypeTerm ATypeTerm--- >                  | ...--- >                  | {- tuple in prefix notation of arity 15 -}--- >                  | "(->)" ATypeTerm ATypeTerm------ > ATypeTerm ::= "Char" | "Int" | "Integer" | "Float" | "Double"--- >             | TypeVariable--- >             | "()"--- >             | "[" TypeTerm "]"--- >             | "(" TypeTerm "," TypeTerm ")"--- >             | "(" TypeTerm "," TypeTerm "," TypeTerm ")"--- >             | ...--- >             | {- tuple of arity 15 -}--- >             | "(" TypeTerm ")"------ > ATypeTermList ::= ATypeTerm--- >                 | ATypeTermList ATypeTerm------ > TypeVariableList ::= TypeVariable--- >                    | TypeVariableList TypeVariable------   where @TypeVariable@ is a token starting with a lower letter or @_@, while---   @TypeConstructor@ starts with a capital letter. Every of these two tokens---   may consist of alphanumeric letters and the characters @_@ and @'@ from the---   second character onwards.---   A @TypeVariable@ starting with @_@ has to be at least two characters long,---   because @_@ is a reserved identifier in Haskell.---   Type constructors can not be formed from symbols.------   Although tuples are restricted to an arity of 15, tuples in the usual---   non-prefixed way can be arbitrary large. However, applications should not---   rely on this possibility.------   An additional rule limits the valid type terms: The number of type---   arguments for a type constructor must match the type constructors arity.--parseType :: (String -> Bool)       -- ^ When 'parseType' is trying to-                                    --   automatically create a name for the-                                    --   type, this function is asked if a name-                                    --   is acceptable.--             -> String              -- ^ The string to be parsed.--             -> Either ParseError NamedType-                                    -- ^ Returns the parsed named type with-                                    --   the generated name or an parser-                                    --   error.-parseType accept string =-  case runParser onlyType () "" string of-    Left error -> Left error-    Right t    -> Right (NamedType (newName (TV "t" 1) accept) (prepare t))-  where-    newName v@(TV t i) accept = if accept (printAsText v)-                                  then v-                                  else newName (TV t (i+1)) accept------------------------------------------------------------------------------------------ Parser for the above syntax.------ | The parser type used throughout this module.---   This type was just defined to make the type following annotations shorter.--type CLParser a = GenParser Char () a------ | Parses a named type.---   This is a top-level parser, i.e. it requests end of input when finished.--namedType :: CLParser NamedType-namedType = do-  skipSpace-  n <- (typeName <?> "name of a type")-  symbol "::"-  t <- typeTerm-  eof--  -- separate the parsed name in name and index, if possible-  let (rd, rn) = span isDigit $ reverse n-  let (n', digits) = (reverse rn, reverse rd)-  let tv = if (digits == [])-             then PV n'-             else TV n' (read digits)--  return (NamedType tv t)------ | Parses a type only.---   This is a top-level parser, i.e. it requests end of input when finished.--onlyType :: CLParser Type-onlyType = do-  skipSpace-  t <- typeTerm-  eof-  return t------ | Parses a type term consisting of functions or type abstractions,---   both of which are based on simple type terms.--typeTerm :: CLParser Type-typeTerm =--  -- parse type abstractions-  -- This is different to the above EBNF definition to allow for finding-  -- the keyword "forall" before any type variables. Thus, the parser gets-  -- a bit simpler.-      do try (keyword "forall")-         vs <- many1 typeVariable-         symbol "."-         t <- typeTerm-         return (foldr (\v t -> TypeForall v t) t vs)--  -- parse a simple type term possibly being part of a function type-  <|> simpleTypeTerm `chainr1` function------ | Parses the function symbol and returns a function to create a function---   type term out of two type terms.--function :: CLParser (Type -> Type -> Type)-function = do-  symbol "->"-  return (\t1 t2 -> TypeFun t1 t2)------ | Parses a simple type term.----   The cases are ordered so that first predefined type constructors in prefix---   notatation are checked, then basic type terms, and finally type---   constructors are parsed.--simpleTypeTerm :: CLParser Type-simpleTypeTerm =-      do try (symbol "[]" <?> "prefixed list constructor")-         t <- aTypeTerm-         return (TypeList t)--  <|> do n <- (tupleConstructor <?> "prefixed tuple constructor")-         ts <- count n aTypeTerm-         return (TypeTuple ts)--  <|> do try (symbol "(->)" <?> "prefixed function constructor")-         t1 <- aTypeTerm-         t2 <- aTypeTerm-         return (TypeFun t1 t2)--  <|> aTypeTerm--  <|> do (c, n) <- (typeConstructor <?> "type constructor")-         ts <- count n aTypeTerm-         return (TypeCon c ts)--  <?> "a simple type term"------ | Parses a basic type term.--aTypeTerm :: CLParser Type-aTypeTerm =-      do try (keyword "Char")-         return (TypeBasic Char)-  <|> do try (keyword "Int")-         return (TypeBasic Int)-  <|> do try (keyword "Integer")-         return (TypeBasic Integer)-  <|> do try (keyword "Float")-         return (TypeBasic Float)-  <|> do try (keyword "Double")-         return (TypeBasic Double)--  <|> do v <- (typeVariable <?> "type variable")-         return (TypeVar v)--  <|> do t <- between (symbol "[") (symbol "]") typeTerm-         return (TypeList t)--  <|> do l <- between (symbol "(") (symbol ")") (typeTerm `sepBy` (symbol ","))-         return $ case l of-                    []        -> TypeUnit-                    [t]       -> t-                    otherwise -> (TypeTuple l)--  <?> ("a basic type, a type variable or a list or tuple type term "-       ++ "like [a] or (a,b)")----------------------------------------------------------------------------------------- The lexer for the above parser's tokens.--- After every token, spaces are skipped.----- | Parses a name (of an identifier).--name :: CLParser String-name =-      do c  <- char '_'-         cs <- (many1 hsID <?> "at least one more character after \"_\"")-         skipSpace-         return (c:cs)--  <|> do c  <- hsSmall-         cs <- many hsID-         skipSpace-         return (c:cs)------ | Parses a name of a type which can be either an identifier or an operator.--typeName :: CLParser String-typeName =-     name- <|> do char '('-        op1 <- hsOperator1-        ops <- many hsOperator-        let op = op1 : ops-        if any (== op) reservedOps-          then unexpected ("reserved operator \"" ++ op ++ "\"")-          else do char ')'-                  skipSpace-                  return ("(" ++ op ++ ")")-  where-    reservedOps =-      [ "..", ":", "::", "=", "\\", "|", "<-", "->", "@", "~", "=>" ]------ | Parses a type variable. Note that there can not be a type variable called---   "forall".--typeVariable :: CLParser TypeVariable-typeVariable = do-  n <- name-  if (n == "forall")-    then unexpected "reserved word \"forall\"" <?> "type variable"-    else return n------ | Parses a type constructor.---   This function checks, if the parsed type constructor is accepted in the---   given language subset. If so, it returns also the arity of the type---   constructor.---   If the parsed type constructor is not valid, an error message is created.--typeConstructor :: CLParser (TypeConstructor, Int)-typeConstructor = do-  c  <- hsLarge-  cs <- many hsID-  let con = c:cs-  if (not $ isDefined con)-    then unexpected ("type constructor '" ++ con ++ "' " ++-                     "(this type constructor is not declared)")-    else do-      let Just n = getArity con-      skipSpace-      return (con, n)------ | Parses a tuple type constructor as @(,)@ or @(,,)@.---   Returns the arity of the parsed tuple type constructor.--tupleConstructor :: CLParser Int-tupleConstructor = do-  try (string "(,")-  cs <- many (char ',')-  char ')'-  skipSpace-  return (length cs + 2)------ | Checks if a symbol (consisting of operator characters) is at the current---   position of the input.--symbol :: String -> CLParser ()-symbol s = do-  string s-  skipSpace-  return ()------ | Checks if a keyword (consisting of alphanumeric characters) is at the---   current position of the input. Assures also, that after this keyword no---   other alphanumeric character is following.--keyword :: String -> CLParser ()-keyword s = do-  string s-  notFollowedBy hsID-  skipSpace-  return ()------ | Skips zero or more space characters.--skipSpace :: CLParser ()-skipSpace = skipMany hsSpace------ | Returns a lower letter character (see 'name').--hsSmall :: CLParser Char-hsSmall = satisfy $ \c -> isLower c------ | Returns a capital letter character (see 'typeConstructor').--hsLarge :: CLParser Char-hsLarge = satisfy $ \c -> isUpper c------ | Returns an alphanumeric character of which keywords and identifiers can be---   formed.--hsID :: CLParser Char-hsID = satisfy $ \c -> isAlphaNum c || (c == '_') || (c == '\'')------ | Returns a symbol which can be the first character of an operator function.--hsOperator1 :: CLParser Char-hsOperator1 = satisfy $ \c -> any (== c) "!#$%&*+./<=>?@\\^|-~"------ | Returns a symbol of which operators can be formed.--hsOperator :: CLParser Char-hsOperator = satisfy $ \c -> any (== c) "!#$%&*+./<=>?@\\^|-~:"------ | Returns a space character.--hsSpace :: CLParser Char-hsSpace = satisfy $ \c -> isSpace c------------------------------------------------------------------------------------------ Helper function------ | Returns the arity of a type constructor or @Nothing@ if the type---   constructor is not accepted in the given language subset.--getArity :: TypeConstructor -> Maybe Int-getArity con =-  case (getDataDecl con) of-    Just (DataDecl _ len _) -> Just len-    Nothing                 ->-      case (getTypeDecl con) of-        Just (TypeDecl _ len _) -> Just len-        Nothing                 -> Nothing------------------------------------------------------------------------------------------ A list of tests for this module.--{--testTypeParser = do-  putStr "parser for named types works ... "-  quickCheck prop_parser_NamedType-  putStr "parser for types works ... "-  quickCheck prop_parser_Type--}------ Checks the type parser for named types.--prop_parser_NamedType nt =-  case parseNamedType (printAsText nt) of-    Left _    -> False-    Right nt' -> let NamedType tv t = nt-                 in  NamedType tv (prepare t) == nt'------ Checks the type parser for types only.--prop_parser_Type t =-  let nt   = NamedType (PV "t") t-      text = drop 4 (printAsText nt)-  in  case parseType (\_ -> True) text of-        Left _                 -> False-        Right (NamedType _ t') -> prepare t == t'-
− scripts/FT/FreeTheorems/Types.hs
@@ -1,39 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module contains declarations for all major types used in the---   Free Theorems library. It includes the following types:------       * 'LanguageModel' which gives means to restrict the covered language---         subset of Haskell when generating theorems,------       * 'NamedType', 'Type' and related types to describe the structure of---         Haskell types,------       * 'Theorem', 'Relation' and connected types to formulate theorems which---         are generated from Haskell types.--module FreeTheorems.Types (-    -- * Language model-    module FreeTheorems.Types.LanguageModel,--    -- * Haskell types-    module FreeTheorems.Types.Type,--    -- * Relations-    module FreeTheorems.Types.Relation,--    -- * Theorems-    module FreeTheorems.Types.Theorem-) where----import FreeTheorems.Types.LanguageModel-import FreeTheorems.Types.Type-import FreeTheorems.Types.Relation-import FreeTheorems.Types.Theorem--
− scripts/FT/FreeTheorems/Types/LanguageModel.hs
@@ -1,21 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module declares 'LanguageModel' which gives means to restrict the---   covered language subset of Haskell when generating theorems,----module FreeTheorems.Types.LanguageModel where------ | Specifies the Haskell language model used in generating theorems.--data LanguageModel-  = BasicModel      -- ^ Most restrictive language model which does not allow-                    --   any of the relaxations the other models are providing.--  | FixModel        -- ^ Allows fixpoints and _|_ in the used Haskell subset.--  deriving (Eq, Show)
− scripts/FT/FreeTheorems/Types/Relation.hs
@@ -1,74 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module declares 'Relation' and connected types to formulate relations---   which are occurring in theorems.--module FreeTheorems.Types.Relation where----import FreeTheorems.Types.LanguageModel-import FreeTheorems.Types.Type------ | A structure to describe relations occurring in free theorems.--data Relation-  = RelTerm Term (Type, Type)-        -- ^ A function as a special case of a relation.-        --   The additional pair stores the type of the function, i.e. if-        --   the function has type T1 -> T2, then the pair is (T1, T2).--  | RelVar RelationVariable-        -- ^ A relation variable.--  | RelLift LanguageModel TypeConstructor [Relation]-        -- ^ A lift relation for a certain type constructor.--  | RelLiftList LanguageModel Relation-        -- ^ A lift relation for lists over a given relation.--  | RelLiftTuple LanguageModel [Relation]-        -- ^ A lift relation for tuples of relations.--  | RelFun LanguageModel Relation Relation-        -- ^ A functional relation between two relations.--  | RelForall LanguageModel RelationVariable Relation-        -- ^ A relational abstraction.--  deriving (Eq, Show)------ | Specifies relation variable or function variables as a special case of a---   relation.----   This definition is close to the mathematical notation @R_i@ in LaTeX.---   To every relation variable a number is assigned which is unique among---   relation variables.--data RelationVariable = R Int TypeVariable (TypeTermVariable, TypeTermVariable)-                            -- ^ A relation variable with a unique index.-                        deriving (Eq, Show)------ | Specifies terms which could occur in pairs of free theorems. Terms can---   either be just variables, applications of variables to terms or---   instantiations of terms.--data Term-  = TermVar TermVariable    -- ^ A variable.--  | TermApp Term Term       -- ^ An application of a term to a term.--  | TermIns Term Type       -- ^ An instantiation of a term by a closed type.-  deriving (Eq, Show)---
− scripts/FT/FreeTheorems/Types/Theorem.hs
@@ -1,137 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module 'Theorem' and connected types to formulate theorems which are---   generated from Haskell types.--module FreeTheorems.Types.Theorem where----import FreeTheorems.Types.LanguageModel-import FreeTheorems.Types.Type-import FreeTheorems.Types.Relation------ | Defines a structure to describe free theorems.----   The structure of the theorem type is essentially tree-like. Leaves---   consists of pairs of terms being elements of relations, and nodes are---   different universal quantifiers as well as conjunctions and implications.--data Theorem-  = IsElementOf (Term, Term) Relation-        -- ^ Models, that a pair of terms is an element of a relation.--  | ForallPairs (TermVariable,TermVariable) Relation Theorem-        -- ^ Models a universal quantification over pairs of a relation.--  | ForallRelations RelationVariable [Restriction] Theorem-        -- ^ Models a universal quantification over pairs of closed type terms-        --   and relations over these pairs where the relation respects the-        --   given list of restrictions.--  | ForallFunctions TermVariable (TypeTermVariable, TypeTermVariable)-                    [Restriction] Theorem-        -- ^ Models a universal quantification over pairs of closed type terms-        --   and functions over these pairs where the function respects the-        --   given list of restrictions.--  | ForallElements TermVariable Type Theorem-        -- ^ Models a universal quantification over elements from a certain-        --   type.--  | Conjunction Theorem Theorem-        -- ^ Models a conjunction between two theorems.--  | Implication Theorem Theorem-        -- ^ Models an implication between two theorems.--  deriving Show------ | Gives certain restrictions occurring in theorems.--data Restriction-  = IsStrict TermVariable-        -- ^ Requests that a function denoted by a term variable must be strict.--  | IsStrictAndContinuous RelationVariable-        -- ^ Requests that a relation denoted by a relation variable must be-        --   strict and continous.--  deriving Show-------- | Gives a means to describe unfolded relations, i.e. relations and---   corresponding sets which specify explicitely the members of that relation.--data UnfoldedRelation = UnfoldedRelation Relation LanguageModel UnfoldedSet------ | The sets of an unfolded lift relation.--data UnfoldedSet--        -- | The sets of a general unfolded lift relation. Each set consists of-        --   the elements to create a notation like:-        ---        -- > { (D x1 ... xn, D y1 ... yn) | (xi,yi) in Ri }-        ---        --   where the theorem may be omitted in the case of nullary data-        --   constructors.-  = UnfoldedLift-      [(DataConstructor, [TermVariable], [TermVariable], Maybe Theorem)]--        -- | The set of an unfolded list relation. It corresponds to the-        --   notation:-        ---        -- > { (x:xs, y:ys) | (x,y) in R and (xs,ys) in lift_[](R) }-  | UnfoldedLiftList-      ((TermVariable, TermVariable), (TermVariable, TermVariable))-      Theorem--        -- | The set of an unfolded tuple relation. It corresponds to the-        --   notation:-        ---        -- > { ((x1, ..., xn), (y1, ..., yn)) | (xi,yi) in Ri }-  | UnfoldedLiftTuple-      ([TermVariable], [TermVariable])-      Theorem--        -- | The set of an unfolded functional relation. It corresponds to the-        --   notation:-        ---        -- > { (f, g) | forall (x,y) in R1. (f x, g y) in R2 }-  | UnfoldedFunction-      (TermVariable, TermVariable)-      Theorem--        -- | The set of an unfolded relational abstraction. It corresponds to-        --   the notation:-        ---        -- > { (x, y) | forall T1,T2 in TYPES. forall R in Rel(T1,T2).-        -- >            (x_T1, y_T2) in F(R) }-  | UnfoldedForall-      (TermVariable, TermVariable)-      Theorem-------- | A Haskell data constructor.--type DataConstructor = String----
− scripts/FT/FreeTheorems/Types/Type.hs
@@ -1,93 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module declares 'NamedType', 'Type' and related types to describe the---   structure of Haskell types.--module FreeTheorems.Types.Type where-------- | A Haskell type with an associated name.--data NamedType = NamedType TermVariable Type-                 deriving (Eq, Show)----- | Describes Haskell types.---   This algebraic datatype is powerful enough to not only model Haskell98---   types, but also higher-rank function types.--data Type-  = TypeBasic BasicType         -- ^ A basic type.--  | TypeVar TypeVariable        -- ^ A type variable.--  | TypeTermVar TypeTermVariable    -- ^ A type term variable representing an-                                    --   abstract type term.--  | TypeCon TypeConstructor [Type]-                                -- ^ An algebraic datatype with type arguments.--  | TypeList Type               -- ^ The list type.--  | TypeUnit                    -- ^ The unit type @()@.--  | TypeTuple [Type]            -- ^ Tuple types. Although this construct allows-                                --   arbitrary typle sizes, tuples are generally-                                --   restricted to a size between 2 and 15.--  | TypeFun Type Type           -- ^ A function type of the two argument types.--  | TypeForall TypeVariable Type-                                -- ^ A @forall@ type abstraction.--  deriving (Eq, Show)------ | Defines the basic types of Haskell. The data constructors use the same---   names as the corresponding Haskell types.--data BasicType = Char | Int | Integer | Float | Double-                 deriving (Eq, Show)------ | Defines a type to represent type constructors.--type TypeConstructor = String------ | Describes Haskell type variables.--type TypeVariable = String------ | Describes a variable occurring in terms.--data TermVariable-  = TV String Int   -- ^ An automatically generated term variable where the-                    --   string is a prefix (like @x@) and the integer is an-                    --   index.--  | PV String       -- ^ A parsed term variable, usually the name of a type.--  deriving (Eq, Show)------ | Defines a type term variable.----   This definition is close to the mathematical notation @T_i@ in LaTeX.---   To every relation variable a number is assigned which is unique among---   relation variables.--newtype TypeTermVariable = T Int    -- ^ A type term variable with an index.-                           deriving (Eq, Show)
− scripts/FT/FreeTheorems/Unfolding.hs
@@ -1,309 +0,0 @@--- Copyright 2006, Sascha Boehme.------- | This module defines a function to unfold relations generated from types to---   theorems.--module FreeTheorems.Unfolding (-    unfold,-    unfoldFunction,-    unfoldForall,-    getTypesOf,--    -- testing interface-    -- testUnfolding-) where----import FreeTheorems.Simplification-import FreeTheorems.TheoremData-import FreeTheorems.Types-import Control.Monad (liftM)--import FreeTheorems.Delta-import FreeTheorems.Preparation--- import FreeTheorems.Test.ArbitraryTypes--- import Test.QuickCheck (quickCheck)-------- | Unfolds a relation to a theorem.---   It replaces all functional relations and relation abstractions by logical---   statements and conditions while the other relations are transformed in---   is-element-of predicates using relations on their right-hand side.------   The returned theorem is simplified using 'simplifyTheorem'.--unfold :: TermVariable-                -- ^ The name of the type from which the theorem is to be-                --   generated.-          -> Relation-                -- ^ Relation which was generated from the type.-          -> TheoremState Theorem-                -- ^ Returns the generated theorem in the corresponding theorem-                --   state.--unfold tv rel =-  liftM simplifyTheorem (unfoldRelation rel (TermVar tv, TermVar tv))-------- | Unfolds the given relation to a theorem. This is a helper function for---   'unfold'.------   Basic relations are transformed into is-element-of predicates while---   functional relations and relation abstractions are replaced by logical---   expressions. See also 'unfoldFunction' and 'unfoldForall'.--unfoldRelation :: Relation -> (Term, Term) -> TheoremState Theorem-unfoldRelation rel (t1, t2) =-  case rel of-    RelTerm _ _             -> return $ IsElementOf (t1,t2) rel-    RelVar _                -> return $ IsElementOf (t1,t2) rel-    RelLift _ _ _           -> return $ IsElementOf (t1,t2) rel-    RelLiftList _ _         -> return $ IsElementOf (t1,t2) rel-    RelLiftTuple _ _        -> return $ IsElementOf (t1,t2) rel-    RelFun model rel1 rel2  -> unfoldFunction model rel1 rel2 (t1,t2)-    RelForall model rv rel1 -> unfoldForall model rv rel1 (t1,t2)------ | Unfolds a functional relation to a logical expression.--unfoldFunction :: LanguageModel-                  -> Relation-                  -> Relation-                  -> (Term, Term)-                  -> TheoremState Theorem--unfoldFunction model rel1 rel2 (t1,t2) = do-  (x,y) <- newVariablesFor rel1-  let (tx,ty) = (TermVar x, TermVar y)-  theorem <- unfoldRelation rel2 (TermApp t1 tx, TermApp t2 ty)-  case rel1 of-    RelTerm t (t1,t2) -> return $ ForallElements x t1-                                $ ForallElements y t2-                                $ Implication (IsElementOf (tx,ty) rel1) theorem--    RelVar _          -> return $ ForallPairs (x,y) rel1 theorem-    RelLift _ _ _     -> return $ ForallPairs (x,y) rel1 theorem-    RelLiftList _ _   -> return $ ForallPairs (x,y) rel1 theorem-    RelLiftTuple _ _  -> return $ ForallPairs (x,y) rel1 theorem--    RelFun _ rel3 rel4  -> do let (t1, t2) = getTypesOf rel3-                              let (t3, t4) = getTypesOf rel4-                              theorem1 <- unfoldFunction model rel3 rel4 (tx,ty)-                              return $ ForallElements x (TypeFun t1 t3)-                                     $ ForallElements y (TypeFun t2 t4)-                                     $ Implication theorem1 theorem--    RelForall _ rv rel3 -> do let (t1, t2) = getTypesOf rel1-                              theorem1 <- unfoldForall model rv rel3 (tx,ty)-                              return $ ForallElements x t1-                                     $ ForallElements y t2-                                     $ Implication theorem1 theorem------ | Unfolds a relation abstraction to a logical expression.---   Depending on the language model used, the expression may contain certain---   restriction annotations.--unfoldForall :: LanguageModel-                -> RelationVariable-                -> Relation-                -> (Term, Term)-                -> TheoremState Theorem--unfoldForall model rv rel (t1,t2) = do-  let R _ _ (ttv1, ttv2) = rv-  let pair = (TermIns t1 (TypeTermVar ttv1), TermIns t2 (TypeTermVar ttv2))--  let res = case model of-              BasicModel -> []-              FixModel   -> [IsStrictAndContinuous rv]--  liftM (ForallRelations rv res) (unfoldRelation rel pair)------------------------------------------------------------------------------------------ | Every relation is defined over a pair of closed types. This function---   returns exactly that pair of types for an arbitrary relation. Thus, it acts---   like an inverse delta function, although this is not fully true.--getTypesOf :: Relation -> (Type, Type)-getTypesOf rel = getTypes [] rel------ | Computes the pair of types for a relation. This function is a helper---   function for 'getTypesOf'.------   The second argument contains a list of relation variables which should---   be replaced by corresponding type variables (used to process abstractions).---   Otherwise, relation variables are replaced by the according type term---   variables.--getTypes :: [RelationVariable] -> Relation -> (Type, Type)-getTypes rvs rel =-  case rel of-    RelTerm _ typepair      -> typepair--    RelVar rv               -> let R _ v (ttv1, ttv2) = rv-                               in  if rv `elem` rvs-                                     then (TypeVar v, TypeVar v)-                                     else (TypeTermVar ttv1, TypeTermVar ttv2)--    RelLift model c rels    -> let (ts1, ts2) = unzip $ map (getTypes rvs) rels-                               in  (TypeCon c ts1, TypeCon c ts2)--    RelLiftList model rel'  -> let (t1, t2) = getTypes rvs rel'-                               in  (TypeList t1, TypeList t2)--    RelLiftTuple model rels -> let (ts1, ts2) = unzip $ map (getTypes rvs) rels-                               in  (TypeTuple ts1, TypeTuple ts2)--    RelFun model rel1 rel2  -> let (t1, t2) = getTypes rvs rel1-                                   (t3, t4) = getTypes rvs rel2-                               in  (TypeFun t1 t3, TypeFun t2 t4)--    RelForall model rv rel' -> let (t1, t2) = getTypes (rv:rvs) rel'-                                   R _ v _ = rv-                               in  (TypeForall v t1, TypeForall v t2)------------------------------------------------------------------------------------------ A list of tests for this module.--{--testUnfolding = do-  putStr "unfold replaces functions and abstractions ... "-  quickCheck prop_unfold-  putStr "every variable is quantified ... "-  quickCheck prop_variables_are_quantified--}------ Check that after expansion, there are no function type relations and--- type abstraction relations anymore.--prop_unfold model t =-  let tv = PV "t"-      theorem = fst $ execute tv (applyDelta model (prepare t) >>= unfold tv)-  in  hasNoFunAndForall theorem---hasNoFunAndForall theorem =-  case theorem of-    IsElementOf _ rel     -> isNotFunOrForall rel-    ForallPairs _ rel t   -> isNotFunOrForall rel && hasNoFunAndForall t-    ForallRelations _ _ t -> hasNoFunAndForall t-    ForallElements _ _ t  -> hasNoFunAndForall t-    Conjunction t1 t2     -> hasNoFunAndForall t1 && hasNoFunAndForall t2-    Implication t1 t2     -> hasNoFunAndForall t1 && hasNoFunAndForall t2--isNotFunOrForall rel =-  case rel of-    RelTerm _ _      -> True-    RelVar _         -> True-    RelLift _ _ _    -> True-    RelLiftList _ _  -> True-    RelLiftTuple _ _ -> True-    RelFun _ _ _     -> False-    RelForall _ _ _  -> False------ Check that every variable is quantified after expansion.--prop_variables_are_quantified model t =-  let tv = PV "t"-      theorem = fst $ execute tv (applyDelta model (prepare t) >>= unfold tv)-  in  cqTheorem [PV "t", PV "id"] [] [] theorem---cqTheorem tvs ttvs rvs theorem =-  case theorem of-    IsElementOf (t1,t2) rel     -> cqTerm tvs ttvs t1 && cqTerm tvs ttvs t2-                                   && cqRelation tvs ttvs rvs rel--    ForallPairs (tv1,tv2) rel t -> cqRelation tvs ttvs rvs rel-                                   && cqTheorem (tv1:tv2:tvs) ttvs rvs t--    ForallRelations rv res t    -> let R _ _ (ttv1,ttv2) = rv-                                       ttvs' = ttv1:ttv2:ttvs-                                   in cqRestriction tvs (rv:rvs) res-                                      && cqTheorem tvs ttvs' (rv:rvs) t--    ForallElements tv ty t      -> cqType [] ttvs ty-                                   && cqTheorem (tv:tvs) ttvs rvs t--    Conjunction t1 t2           -> cqTheorem tvs ttvs rvs t1-                                   && cqTheorem tvs ttvs rvs t2--    Implication t1 t2           -> cqTheorem tvs ttvs rvs t1-                                   && cqTheorem tvs ttvs rvs t2---cqRestriction tvs rvs [] = True-cqRestriction tvs rvs (res:ress) = cqRestriction tvs rvs ress &&-  case res of-    IsStrict tv              -> tv `elem` tvs-    IsStrictAndContinuous rv -> rv `elem` rvs---cqTerm tvs ttvs t =-  case t of-    TermVar tv    -> tv `elem` tvs-    TermApp t1 t2 -> cqTerm tvs ttvs t1 && cqTerm tvs ttvs t2-    TermIns t' ty -> cqTerm tvs ttvs t' && cqType [] ttvs ty--cqRelation tvs ttvs rvs rel =-  case rel of-    RelTerm t (ty1, ty2) -> cqTerm tvs ttvs t-                            && cqType [] ttvs ty1 && cqType [] ttvs ty2-    RelVar rv            -> rv `elem` rvs-    RelLift _ _ rels     -> and $ map (cqRelation tvs ttvs rvs) rels-    RelLiftList _ rel'   -> cqRelation tvs ttvs rvs rel'-    RelLiftTuple _ rels  -> and $ map (cqRelation tvs ttvs rvs) rels-    RelFun _ rel1 rel2   -> cqRelation tvs ttvs rvs rel1-                            && cqRelation tvs ttvs rvs rel2-    RelForall _ rv rel'  -> cqRelation tvs ttvs (rv:rvs) rel'--cqType vs ttvs t =-  case t of-    TypeBasic _     -> True-    TypeVar v       -> v `elem` vs-    TypeTermVar ttv -> ttv `elem` ttvs-    TypeCon _ ts    -> and $ map (cqType vs ttvs) ts-    TypeList t'     -> cqType vs ttvs t'-    TypeUnit        -> True-    TypeTuple ts    -> and $ map (cqType vs ttvs) ts-    TypeFun t1 t2   -> cqType vs ttvs t1 && cqType vs ttvs t2-    TypeForall v t' -> cqType (v:vs) ttvs t'------zz = TypeForall "a" (TypeFun (TypeBasic Char) (TypeTuple [TypeBasic Float,TypeVar "b"-  ,TypeBasic Char,TypeCon "String" [],TypeCon "String" [],TypeVar "b",TypeBasic-  Double,TypeVar "c",TypeVar "b",TypeCon "String" [],TypeBasic Int]))--zzz = fst $ execute (PV "t") (applyDelta BasicModel (prepare zz) >>= unfold (PV "t"))
− scripts/FT/PPrint.hs
@@ -1,409 +0,0 @@--------------------------------------------------------------- Daan Leijen (c) 2000, http://www.cs.uu.nl/~daan------ $version: $------ Pretty print module based on Philip Wadlers "prettier printer"---      "A prettier printer"---      Draft paper, April 1997, revised March 1998.---      http://cm.bell-labs.com/cm/cs/who/wadler/papers/prettier/prettier.ps------ Haskell98 compatible-------------------------------------------------------------module PPrint-        ( Doc-        , Pretty, pretty--        , show, putDoc, hPutDoc--        , (<>)-        , (<+>)-        , (</>), (<//>)-        , (<$>), (<$$>)--        , sep, fillSep, hsep, vsep-        , cat, fillCat, hcat, vcat-        , punctuate--        , align, hang, indent-        , fill, fillBreak--        , list, tupled, semiBraces, encloseSep-        , angles, langle, rangle-        , parens, lparen, rparen-        , braces, lbrace, rbrace-        , brackets, lbracket, rbracket-        , dquotes, dquote, squotes, squote--        , comma, space, dot, backslash-        , semi, colon, equals--        , string, bool, int, integer, float, double, rational--        , softline, softbreak-        , empty, char, text, line, linebreak, nest, group-        , column, nesting, width--        , SimpleDoc(..)-        , renderPretty, renderCompact-        , displayS, displayIO-        ) where--import System.IO      (Handle,hPutStr,hPutChar,stdout)--infixr 5 </>,<//>,<$>,<$$>-infixr 6 <>,<+>----------------------------------------------------------------- list, tupled and semiBraces pretty print a list of--- documents either horizontally or vertically aligned.-------------------------------------------------------------list            = encloseSep lbracket rbracket comma-tupled          = encloseSep lparen   rparen  comma-semiBraces      = encloseSep lbrace   rbrace  semi--encloseSep left right sep ds-    = case ds of-        []  -> left <> right-        [d] -> left <> d <> right-        _   -> align (cat (zipWith (<>) (left : repeat sep) ds) <> right)----------------------------------------------------------------- punctuate p [d1,d2,...,dn] => [d1 <> p,d2 <> p, ... ,dn]-------------------------------------------------------------punctuate p []      = []-punctuate p [d]     = [d]-punctuate p (d:ds)  = (d <> p) : punctuate p ds----------------------------------------------------------------- high-level combinators-------------------------------------------------------------sep             = group . vsep-fillSep         = fold (</>)-hsep            = fold (<+>)-vsep            = fold (<$>)--cat             = group . vcat-fillCat         = fold (<//>)-hcat            = fold (<>)-vcat            = fold (<$$>)--fold f []       = empty-fold f ds       = foldr1 f ds--x <> y          = x `beside` y-x <+> y         = x <> space <> y-x </> y         = x <> softline <> y-x <//> y        = x <> softbreak <> y-x <$> y         = x <> line <> y-x <$$> y        = x <> linebreak <> y--softline        = group line-softbreak       = group linebreak--squotes         = enclose squote squote-dquotes         = enclose dquote dquote-braces          = enclose lbrace rbrace-parens          = enclose lparen rparen-angles          = enclose langle rangle-brackets        = enclose lbracket rbracket-enclose l r x   = l <> x <> r--lparen          = char '('-rparen          = char ')'-langle          = char '<'-rangle          = char '>'-lbrace          = char '{'-rbrace          = char '}'-lbracket        = char '['-rbracket        = char ']'--squote          = char '\''-dquote          = char '"'-semi            = char ';'-colon           = char ':'-comma           = char ','-space           = char ' '-dot             = char '.'-backslash       = char '\\'-equals          = char '='----------------------------------------------------------------- Combinators for prelude types---------------------------------------------------------------- string is like "text" but replaces '\n' by "line"-string ""       = empty-string ('\n':s) = line <> string s-string s        = case (span (/='\n') s) of-                    (xs,ys) -> text xs <> string ys--bool :: Bool -> Doc-bool b          = text (show b)--int :: Int -> Doc-int i           = text (show i)--integer :: Integer -> Doc-integer i       = text (show i)--float :: Float -> Doc-float f         = text (show f)--double :: Double -> Doc-double d        = text (show d)--rational :: Rational -> Doc-rational r      = text (show r)----------------------------------------------------------------- overloading "pretty"-------------------------------------------------------------class Pretty a where-  pretty        :: a -> Doc-  prettyList    :: [a] -> Doc-  prettyList    = list . map pretty--instance Pretty a => Pretty [a] where-  pretty        = prettyList--instance Pretty Doc where-  pretty        = id--instance Pretty () where-  pretty ()     = text "()"--instance Pretty Bool where-  pretty b      = bool b--instance Pretty Char where-  pretty c      = char c-  prettyList s  = string s--instance Pretty Int where-  pretty i      = int i--instance Pretty Integer where-  pretty i      = integer i--instance Pretty Float where-  pretty f      = float f--instance Pretty Double where-  pretty d      = double d-----instance Pretty Rational where---  pretty r      = rational r--instance (Pretty a,Pretty b) => Pretty (a,b) where-  pretty (x,y)  = tupled [pretty x, pretty y]--instance (Pretty a,Pretty b,Pretty c) => Pretty (a,b,c) where-  pretty (x,y,z)= tupled [pretty x, pretty y, pretty z]--instance Pretty a => Pretty (Maybe a) where-  pretty Nothing        = empty-  pretty (Just x)       = pretty x------------------------------------------------------------------ semi primitive: fill and fillBreak-------------------------------------------------------------fillBreak f x   = width x (\w ->-                  if (w > f) then nest f linebreak-                             else text (spaces (f - w)))--fill f d        = width d (\w ->-                  if (w >= f) then empty-                              else text (spaces (f - w)))--width d f       = column (\k1 -> d <> column (\k2 -> f (k2 - k1)))----------------------------------------------------------------- semi primitive: Alignment and indentation-------------------------------------------------------------indent i d      = hang i (text (spaces i) <> d)--hang i d        = align (nest i d)--align d         = column (\k ->-                  nesting (\i -> nest (k - i) d))   --nesting might be negative :-)------------------------------------------------------------------ Primitives-------------------------------------------------------------data Doc        = Empty-                | Char Char             -- invariant: char is not '\n'-                | Text !Int String      -- invariant: text doesn't contain '\n'-                | Line !Bool            -- True <=> when undone by group, do not insert a space-                | Cat Doc Doc-                | Nest !Int Doc-                | Union Doc Doc         -- invariant: first lines of first doc longer than the first lines of the second doc-                | Column  (Int -> Doc)-                | Nesting (Int -> Doc)--data SimpleDoc  = SEmpty-                | SChar Char SimpleDoc-                | SText !Int String SimpleDoc-                | SLine !Int SimpleDoc---empty           = Empty--char '\n'       = line-char c          = Char c--text ""         = Empty-text s          = Text (length s) s--line            = Line False-linebreak       = Line True--beside x y      = Cat x y-nest i x        = Nest i x-column f        = Column f-nesting f       = Nesting f-group x         = Union (flatten x) x--flatten :: Doc -> Doc-flatten (Cat x y)       = Cat (flatten x) (flatten y)-flatten (Nest i x)      = Nest i (flatten x)-flatten (Line break)    = if break then Empty else Text 1 " "-flatten (Union x y)     = flatten x-flatten (Column f)      = Column (flatten . f)-flatten (Nesting f)     = Nesting (flatten . f)-flatten other           = other                     --Empty,Char,Text------------------------------------------------------------------ Renderers---------------------------------------------------------------------------------------------------------------------------- renderPretty: the default pretty printing algorithm---------------------------------------------------------------- list of indentation/document pairs; saves an indirection over [(Int,Doc)]-data Docs   = Nil-            | Cons !Int Doc Docs--renderPretty :: Float -> Int -> Doc -> SimpleDoc-renderPretty rfrac w x-    = best 0 0 (Cons 0 x Nil)-    where-      -- r :: the ribbon width in characters-      r  = max 0 (min w (round (fromIntegral w * rfrac)))--      -- best :: n = indentation of current line-      --         k = current column-      --        (ie. (k >= n) && (k - n == count of inserted characters)-      best n k Nil      = SEmpty-      best n k (Cons i d ds)-        = case d of-            Empty       -> best n k ds-            Char c      -> let k' = k+1 in seq k' (SChar c (best n k' ds))-            Text l s    -> let k' = k+l in seq k' (SText l s (best n k' ds))-            Line _      -> SLine i (best i i ds)-            Cat x y     -> best n k (Cons i x (Cons i y ds))-            Nest j x    -> let i' = i+j in seq i' (best n k (Cons i' x ds))-            Union x y   -> nicest n k (best n k (Cons i x ds))-                                      (best n k (Cons i y ds))--            Column f    -> best n k (Cons i (f k) ds)-            Nesting f   -> best n k (Cons i (f i) ds)--      --nicest :: r = ribbon width, w = page width,-      --          n = indentation of current line, k = current column-      --          x and y, the (simple) documents to chose from.-      --          precondition: first lines of x are longer than the first lines of y.-      nicest n k x y    | fits width x  = x-                        | otherwise     = y-                        where-                          width = min (w - k) (r - k + n)---fits w x        | w < 0         = False-fits w SEmpty                   = True-fits w (SChar c x)              = fits (w - 1) x-fits w (SText l s x)            = fits (w - l) x-fits w (SLine i x)              = True----------------------------------------------------------------- renderCompact: renders documents without indentation---  fast and fewer characters output, good for machines-------------------------------------------------------------renderCompact :: Doc -> SimpleDoc-renderCompact x-    = scan 0 [x]-    where-      scan k []     = SEmpty-      scan k (d:ds) = case d of-                        Empty       -> scan k ds-                        Char c      -> let k' = k+1 in seq k' (SChar c (scan k' ds))-                        Text l s    -> let k' = k+l in seq k' (SText l s (scan k' ds))-                        Line _      -> SLine 0 (scan 0 ds)-                        Cat x y     -> scan k (x:y:ds)-                        Nest j x    -> scan k (x:ds)-                        Union x y   -> scan k (y:ds)-                        Column f    -> scan k (f k:ds)-                        Nesting f   -> scan k (f 0:ds)------------------------------------------------------------------ Displayers:  displayS and displayIO-------------------------------------------------------------displayS :: SimpleDoc -> ShowS-displayS SEmpty             = id-displayS (SChar c x)        = showChar c . displayS x-displayS (SText l s x)      = showString s . displayS x-displayS (SLine i x)        = showString ('\n':indentation i) . displayS x--displayIO :: Handle -> SimpleDoc -> IO ()-displayIO handle simpleDoc-    = display simpleDoc-    where-      display SEmpty        = return ()-      display (SChar c x)   = do{ hPutChar handle c; display x}-      display (SText l s x) = do{ hPutStr handle s; display x}-      display (SLine i x)   = do{ hPutStr handle ('\n':indentation i); display x}----------------------------------------------------------------- default pretty printers: show, putDoc and hPutDoc-------------------------------------------------------------instance Show Doc where-  showsPrec d doc       = displayS (renderPretty 0.4 80 doc)--putDoc :: Doc -> IO ()-putDoc doc              = hPutDoc stdout doc--hPutDoc :: Handle -> Doc -> IO ()-hPutDoc handle doc      = displayIO handle (renderPretty 0.4 80 doc)------------------------------------------------------------------ insert spaces--- "indentation" used to insert tabs but tabs seem to cause--- more trouble than they solve :-)-------------------------------------------------------------spaces n        | n <= 0    = ""-                | otherwise = replicate n ' '--indentation n   = spaces n----indentation n   | n >= 8    = '\t' : indentation (n-8)---                | otherwise = spaces n
− scripts/FT/PredefinedTypes.hs
@@ -1,81 +0,0 @@--- Copyright 2006, Sascha Boehme.------- List types of functions which are defined in Haskell libraries.--module PredefinedTypes where------ Lists types of functions defined in Haskell libraries.--predefinedTypes :: [(String, String)]-predefinedTypes = preludeTypes------ Lists the types of all polymorphic functions from the Haskell prelude.--preludeTypes :: [(String, String)]-preludeTypes =-  [ ("maybe", "forall a b. b -> (a -> b) -> Maybe a -> b")-  , ("either", "forall a b c. (a -> c) -> (b -> c) -> Either a b -> c")-  , ("fst", "forall a b. (a, b) -> a")-  , ("snd", "forall a b. (a, b) -> b")-  , ("curry", "forall a b c. ((a, b) -> c) -> a -> b -> c")-  , ("uncurry", "forall a b c. (a -> b -> c) -> (a, b) -> c")-  , ("id", "forall a. a -> a")-  , ("const", "forall a b. a -> b -> a")-  , ("(.)", "forall a b c. (b -> c) -> (a -> b) -> a -> c")-  , ("flip", "forall a b c. (a -> b -> c) -> b -> a -> c")-  , ("($)", "forall a b. (a -> b) -> a -> b")-  , ("until", "forall a. (a -> Bool) -> (a -> a) -> a -> a")-  , ("asTypeOf", "forall a. a -> a -> a")-  , ("error", "forall a. String -> a")-  , ("undefined", "forall a. a")-  , ("seq", "forall a b. a -> b -> b")-  , ("($!)", "forall a b. (a -> b) -> a -> b")-  , ("map", "forall a b. (a -> b) -> [a] -> [b]")-  , ("(++)", "forall a. [a] -> [a] -> [a]")-  , ("filter", "forall a. (a -> Bool) -> [a] -> [a]")-  , ("head", "forall a. [a] -> a")-  , ("last", "forall a. [a] -> a")-  , ("tail", "forall a. [a] -> [a]")-  , ("init", "forall a. [a] -> [a]")-  , ("null", "forall a. [a] -> Bool")-  , ("length", "forall a. [a] -> Int")-  , ("(!!)", "forall a. [a] -> Int -> a")-  , ("reverse", "forall a. [a] -> [a]")-  , ("foldl", "forall a b. (a -> b -> a) -> a -> [b] -> a")-  , ("foldl1", "forall a b. (a -> a -> a) -> [a] -> a")-  , ("foldr", "forall a b. (a -> b -> b) -> b -> [a] -> b")-  , ("foldr1", "forall a. (a -> a -> a) -> [a] -> a")-  , ("any", "forall a. (a -> Bool) -> [a] -> Bool")-  , ("all", "forall a. (a -> Bool) -> [a] -> Bool")-  , ("concat", "forall a. [[a]] -> [a]")-  , ("concatMap", "forall a b. (a -> [b]) -> [a] -> [b]")-  , ("scanl", "forall a b. (a -> b -> a) -> a -> [b] -> [a]")-  , ("scanl1", "forall a. (a -> a -> a) -> [a] -> [a]")-  , ("scanr", "forall a b. (a -> b -> b) -> b -> [a] -> [b]")-  , ("scanr1", "forall a. (a -> a -> a) -> [a] -> [a]")-  , ("iterate", "forall a. (a -> a) -> a -> [a]")-  , ("repeat", "forall a. a -> [a]")-  , ("replicate", "forall a. Int -> a -> [a]")-  , ("cycle", "forall a. [a] -> [a]")-  , ("take", "forall a. Int -> [a] -> [a]")-  , ("drop", "forall a. Int -> [a] -> [a]")-  , ("splitAt", "forall a. Int -> [a] -> ([a], [a])")-  , ("takeWhile", "forall a. (a -> Bool) -> [a] -> [a]")-  , ("dropWhile", "forall a. (a -> Bool) -> [a] -> [a]")-  , ("span", "forall a. (a -> Bool) -> [a] -> ([a], [a])")-  , ("break", "forall a. (a -> Bool) -> [a] -> ([a], [a])")-  , ("zip", "forall a b. [a] -> [b] -> [(a, b)]")-  , ("zip3", "forall a b c. [a] -> [b] -> [c] -> [(a, b, c)]")-  , ("zipWith", "forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]")-  , ("zipWith3", "forall a b c d. (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]")-  , ("unzip", "forall a b. [(a, b)] -> ([a], [b])")-  , ("unzip3", "forall a b c. [(a, b, c)] -> ([a], [b], [c])")-  , ("readParen", "forall a. Bool -> ReadS a -> ReadS a")-  ]
− scripts/GenHaddock.hs
@@ -1,37 +0,0 @@------ | Generate the initial @index state----import System.Cmd-import System.Directory-import Data.List--main :: IO ()-main = do-    system $ "wget -nc -r -l 1 "++-      "http://haskell.org/ghc/docs/latest/html/libraries/doc-index.html"-    dir   <- getCurrentDirectory-    let filesdir = dir ++ "/haskell.org/ghc/docs/latest/html/libraries/"-    files <- getDirectoryContents filesdir-    let docfiles = filter ("doc-index-"`isPrefixOf`) files-    assocs <- fmap concat $ mapM getAssocs $ map (filesdir++) docfiles-    writeFile "../State/haddock" $ unlines $ map show assocs---getAssocs :: FilePath -> IO [(String,[String])]-getAssocs file = do-  cont <- lines `fmap` readFile file-  let isKey str = "><TD CLASS=\"indexentry\"" `isPrefixOf` str-      sections = tail $ groupBy (const $ not . isKey) cont-  return $ do -    s <- sections-    let key = clean $ (reverse . drop 4 . reverse . drop 1) (s !! 1)-    let values = map (reverse . drop 3 . reverse . drop 1) $ -          filter ("</A"`isSuffixOf`) s-    return (key,values)--clean :: String -> String-clean ('&':'a':'m':'p':';':xs) = '&':clean xs-clean ('&':'l':'t':';':xs) = '<':clean xs-clean ('&':'g':'t':';':xs) = '>':clean xs-clean (x:xs) = x:clean xs-clean [] = []
− scripts/LargeWord.hs
@@ -1,139 +0,0 @@-{-# OPTIONS -w #-}--------------------------------------------------------------------------------- |--- Module      :  Data.LargeWord--- Copyright   :  (c) Dominic Steinitz 2004--- License     :  BSD-style (see the file ReadMe.tex)--- --- Maintainer  :  dominic.steinitz@blueyonder.co.uk--- Stability   :  experimental--- Portability :  portable------ Provides Word128, Word192 and Word256 and a way of producing other--- large words if required.-----------------------------------------------------------------------------------module LargeWord (LargeWord(..),Word128,Word192,Word256,Word1024,Word512,Word2048,Word4096) where--import Data.Word-import Data.Bits-import Numeric-import Data.Char---- Keys have certain capabilities.--class LargeWord a where-   largeWordToInteger   :: a -> Integer-   integerToLargeWord   :: Integer -> a-   largeWordPlus        :: a -> a -> a-   largeWordAnd         :: a -> a -> a-   largeWordOr          :: a -> a -> a-   largeWordShift       :: a -> Int -> a-   largeWordXor         :: a -> a -> a-   largeBitSize         :: a -> Int---- Word64 is a key in the obvious way.--instance LargeWord Word64 where-   largeWordToInteger   = toInteger-   integerToLargeWord   = fromInteger-   largeWordPlus        = (+)-   largeWordAnd         = (.&.)-   largeWordOr          = (.|.)-   largeWordShift       = shift-   largeWordXor         = xor-   largeBitSize         = bitSize---- Define larger keys from smaller ones.--data LargeKey a b = LargeKey !a !b-   deriving (Eq, Ord)--instance (Ord a, Bits a, LargeWord a, Bits b, LargeWord b) =>-   LargeWord (LargeKey a b) where-      largeWordToInteger (LargeKey lo hi) =-         largeWordToInteger lo + (2^(bitSize lo)) * largeWordToInteger hi-      integerToLargeWord x =-         let (h,l) =  x `quotRem` (2^(bitSize lo))-             (lo,hi) = (integerToLargeWord l, integerToLargeWord h) in-                LargeKey lo hi-      largeWordPlus (LargeKey alo ahi) (LargeKey blo bhi) =-         LargeKey lo' hi' where-            lo' = alo + blo-            hi' = ahi + bhi + if lo' < alo then 1 else 0-      largeWordAnd (LargeKey alo ahi) (LargeKey blo bhi) =-         LargeKey lo' hi' where-            lo' = alo .&. blo-            hi' = ahi .&. bhi-      largeWordOr (LargeKey alo ahi) (LargeKey blo bhi) =-         LargeKey lo' hi' where-            lo' = alo .|. blo-            hi' = ahi .|. bhi-      largeWordXor (LargeKey alo ahi) (LargeKey blo bhi) =-         LargeKey lo' hi' where-            lo' = alo `xor` blo-            hi' = ahi `xor` bhi-      largeWordShift w 0 = w-      largeWordShift (LargeKey lo hi) x =-         if bitSize lo < bitSize hi-            then LargeKey (shift lo x) -                          (shift hi x .|. (shift (conv lo) (x - (bitSize lo))))-            else LargeKey (shift lo x)-                          (shift hi x .|. (conv $ shift lo (x - (bitSize lo))))-         where conv = integerToLargeWord . largeWordToInteger-      largeBitSize ~(LargeKey lo hi) = largeBitSize lo + largeBitSize hi--instance (Ord a, Bits a, LargeWord a, Bits b, LargeWord b) => Show (LargeKey a b) where-   showsPrec p = showInt . largeWordToInteger--instance (Ord a, Bits a, LargeWord a, Bits b, LargeWord b) => -   Num (LargeKey a b) where-      (+) = largeWordPlus-      fromInteger = integerToLargeWord ---- Larger keys are instances of Bits provided their constituents are keys.--instance (Ord a, Bits a, LargeWord a, Bits b, LargeWord b) => -   Bits (LargeKey a b) where-      (.&.) = largeWordAnd-      (.|.) = largeWordOr-      xor = largeWordXor-      shift = largeWordShift-      bitSize = largeBitSize--instance (Ord a, Bits a, Bounded a, Integral a, LargeWord a, -                 Bits b, Bounded b, Integral b, LargeWord b) => -   Bounded (LargeKey a b) where-      minBound = 0-      maxBound =-         result where-            result =-               fromIntegral $-               (1 + fromIntegral (maxBound `asTypeOf` (boflk result)))*-                  (1 + fromIntegral (maxBound `asTypeOf` (aoflk result))) - 1--aoflk :: (LargeKey a b) -> a-aoflk = undefined-boflk :: (LargeKey a b) -> b-boflk = undefined--instance (Ord a, Bits a, LargeWord a, Ord b, Bits b, LargeWord b) =>-   Integral (LargeKey a b) where-      toInteger = largeWordToInteger--instance (Ord a, Bits a, LargeWord a, Ord b, Bits b, LargeWord b) =>-   Real (LargeKey a b)--instance Enum (LargeKey a b)--type Word96   = LargeKey Word32 Word64-type Word128  = LargeKey Word64 Word64-type Word160  = LargeKey Word32 Word128-type Word192  = LargeKey Word64 Word128-type Word224  = LargeKey Word32 Word192-type Word256  = LargeKey Word64 Word192-type Word512  = LargeKey Word256 Word256-type Word1024 = LargeKey Word512 Word512-type Word2048 = LargeKey Word1024 Word1024-type Word4096 = LargeKey Word1024 Word1024
− scripts/QuickCheck.hs
@@ -1,70 +0,0 @@------ Copyright (c) 2004 Don Stewart - http://www.cse.unsw.edu.au/~dons--- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)---------- | QuickCheck. use hs-plugins to run a Haskell expression under--- controlled conditions.----import System.Eval.Haskell      (unsafeEval_)--import Data.Char                (chr)-import Data.Maybe               (isJust, fromJust)-import Control.Monad--import System.Random-import System.Exit              (exitWith, ExitCode(ExitSuccess))-import System.IO                (getContents, putStrLn)-import System.Posix.Resource    (setResourceLimit,-                                 Resource(ResourceCPUTime),-                                 ResourceLimits(ResourceLimits),-                                 ResourceLimit(ResourceLimit))-import Test.QuickCheck--import qualified Control.Exception--rlimit = ResourceLimit 5--context = prelude ++ prehier ++ datas ++ qualifieds ++ controls ++ other ++ extras--prelude = ["qualified Prelude as P", "Prelude"]--other = ["Text.Printf"]--prehier = ["Char", "List", "Maybe", "Numeric", "Random" ]--qualifieds = ["qualified Data.Map as M"-             ,"qualified Data.Set as S"-             ,"qualified Data.Generics as G"-             ,"qualified Data.IntSet as I"]--datas   = map ("Data." ++) [-                "Array", "Complex",-                "Bits", "Bool", "Char", "Dynamic", "Either", -                "Graph", "Int", "Ix", "List",-                "Maybe", "Ratio", "Tree", "Tuple", "Typeable", "Word" -              ]--controls = map ("Control." ++) ["Monad", "Monad.Cont", "Monad.State", "Monad.Writer", "Monad.Reader", "Monad.Fix", "Arrow"]--extras   = ["ShowQ","ShowFun","Test.QuickCheck","L","LargeWord"] -- a show instance for (Q a)--main = do-    setResourceLimit ResourceCPUTime (ResourceLimits rlimit rlimit)-    s <- getLine-    when (not . null $ s) $ do-        x <- sequence (take 3 (repeat $ getStdRandom (randomR (97,122)) >>= return . chr))-        s <- unsafeEval_ ("let { "++x++-                         " = \n# 1 \"<irc>\"\n"++s++-                         "\n} in (myquickcheck "++x++-                         ")") (context) [] [] []-        case s of-            Left  e -> mapM_ putStrLn e-            Right a -> Control.Exception.catch-                (a >>= putStr . take 512)-                (\e -> Control.Exception.handle (const $ putStrLn "Exception") $ do-                            e' <- Control.Exception.evaluate e-                            putStrLn $ "Exception: " ++ take 128 (show e'))-    exitWith ExitSuccess-
− scripts/RunPlugs.hs
@@ -1,145 +0,0 @@------ Copyright (c) 2004 Don Stewart - http://www.cse.unsw.edu.au/~dons--- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)---------- | Runplugs: use hs-plugins to run a Haskell expression under--- controlled conditions.----import System.Eval.Haskell      (unsafeEval_)--import Data.Char                (chr)-import Data.Maybe               (isJust, fromJust)-import Control.Monad--import System.Random-import System.Exit              (exitWith, ExitCode(ExitSuccess))-import System.IO                (getContents, putStrLn)-import System.Posix.Resource    (setResourceLimit,-                                 Resource(ResourceCPUTime),-                                 ResourceLimits(ResourceLimits),-                                 ResourceLimit(ResourceLimit))--import qualified Control.Exception--rlimit = ResourceLimit 3--context = prelude ++ prehier ++ datas ++ qualifieds ++ controls ++ other-       ++ template ++ extras ++ numbers--prelude =-    ["qualified Prelude as P", "Prelude"]--other   =-    ["Text.Printf"-    ,"Text.PrettyPrint.HughesPJ hiding (empty)"-    ,"Math.OEIS"]--prehier =-    ["Numeric"]--qualifieds =-    ["qualified Data.Map                    as M"-    ,"qualified Data.IntMap                 as I"-    ,"qualified Data.ByteString             as S"-    ,"qualified Data.ByteString.Char8       as SC"-    ,"qualified Data.ByteString.Lazy        as L"-    ,"qualified Data.ByteString.Lazy.Char8  as LC"-    ,"qualified Data.Set"-    ,"qualified Data.Generics"-    ,"qualified Data.IntSet"-    ,"qualified Data.Foldable"-    ,"qualified Data.Sequence"-    ,"qualified Data.Traversable"-    ,"qualified Control.Monad.Writer"-    ]--datas   = map ("Data." ++)-    ["Array"-    ,"Bits"-    ,"Bool"-    ,"Char"-    ,"Complex"-    ,"Dynamic"-    ,"Either"-    ,"Eq"-    ,"Fixed"---  ,"Foldable"---  ,"Function"---  ,"Generics"-    ,"Graph"-    ,"Int"---  ,"IntMap"---  ,"IntSet"-    ,"Ix"-    ,"List"---  ,"Map"-    ,"Maybe"-    ,"Monoid"-    ,"Ord"-    ,"Ratio"---  ,"Set"-    ,"Tree"-    ,"Tuple"-    ,"Typeable"-    ,"Word"-    ]--numbers = map ("Data.Number." ++)-    ["Symbolic"-    ,"Dif"-    ,"CReal"-    ,"Fixed"-    ,"Interval"-    ,"BigFloat"-    ,"Natural"]--controls = map ("Control." ++)-    ["Monad"-    ,"Monad.Cont"-    ,"Monad.Error"-    ,"Monad.Identity"-    ,"Monad.List"-    ,"Monad.RWS"-    ,"Monad.Reader"-    ,"Monad.State"-    ,"Monad.Trans"-    ,"Monad.Fix"-    ,"Monad.Instances"-    ,"Applicative"-    ,"Arrow hiding (pure)"---  ,"Arrow.Transformer"---  ,"Arrow.Transformer.All"---  ,"Arrow.Operations"-    ,"Parallel"-    ,"Parallel.Strategies"-    ]------- See if TH is safe with runIO and friends hidden.------ Be very careful here. The semantics of what is safe and unsafe is a--- bit blurry. It depends on what GHC allows.----template = [] -- ["Language.Haskell.TH hiding (runIO,reify)"]-extras   = ["ShowQ","ShowFun","L","LargeWord","SimpleReflect hiding (var)"]--main = do-    setResourceLimit ResourceCPUTime (ResourceLimits rlimit rlimit)-    s <- getLine-    when (not . null $ s) $ do-        x <- sequence (take 3 (repeat $ getStdRandom (randomR (97,122)) >>= return . chr))-        s <- unsafeEval_ ("let { "++x++-                         " = \n# 1 \"<irc>\"\n"++s++-                         "\n} in P.take 2048 (P.show "++x++-                         ")") context ["-O","-fasm","-fextended-default-rules","-package oeis"] [] []-        case s of-            Left  e -> mapM_ putStrLn e-            Right v -> Control.Exception.catch-                (putStrLn v)-                (\e -> Control.Exception.handle (const $ putStrLn "Exception") $ do-                            e' <- Control.Exception.evaluate e-                            putStrLn $ "Exception: " ++ take 1024 (show e'))-    exitWith ExitSuccess-
− scripts/RunSmallCheck.hs
@@ -1,70 +0,0 @@------ Copyright (c) 2004 Don Stewart - http://www.cse.unsw.edu.au/~dons--- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)---------- | QuickCheck. use hs-plugins to run a Haskell expression under--- controlled conditions.----import System.Eval.Haskell      (unsafeEval_)--import Data.Char                (chr)-import Data.Maybe               (isJust, fromJust)-import Control.Monad--import System.Random-import System.Exit              (exitWith, ExitCode(ExitSuccess))-import System.IO                (getContents, putStrLn)-import System.Posix.Resource    (setResourceLimit,-                                 Resource(ResourceCPUTime),-                                 ResourceLimits(ResourceLimits),-                                 ResourceLimit(ResourceLimit))-import SmallCheck--import qualified Control.Exception--rlimit = ResourceLimit 5--context = prelude ++ prehier ++ datas ++ qualifieds ++ controls ++ other ++ extras--prelude = ["qualified Prelude as P", "Prelude"]--other = ["Text.Printf"]--prehier = ["Char", "List", "Maybe", "Numeric", "Random" ]--qualifieds = ["qualified Data.Map as M"-             ,"qualified Data.Set as S"-             ,"qualified Data.Generics as G"-             ,"qualified Data.IntSet as I"]--datas   = map ("Data." ++) [-                "Array", "Complex", -                "Bits", "Bool", "Char", "Dynamic", "Either", -                "Graph", "Int", "Ix", "List",-                "Maybe", "Ratio", "Tree", "Tuple", "Typeable", "Word" -              ]--controls = map ("Control." ++) ["Monad", "Monad.Cont", "Monad.State", "Monad.Writer", "Monad.Reader", "Monad.Fix", "Arrow"]--extras   = ["ShowQ","SmallCheck","L","LargeWord"] -- a show instance for (Q a)--main = do-    setResourceLimit ResourceCPUTime (ResourceLimits rlimit rlimit)-    s <- getLine-    when (not . null $ s) $ do-        x <- sequence (take 3 (repeat $ getStdRandom (randomR (97,122)) >>= return . chr))-        s <- unsafeEval_ ("let { "++x++-                         " = \n# 1 \"<irc>\"\n"++s++-                         "\n} in (smallCheck 6 "++x++-                         ")") (context) [] [] []-        case s of-            Left  e -> mapM_ putStrLn e-            Right a -> Control.Exception.catch-                (a >>= putStr . take 512)-                (\e -> Control.Exception.handle (const $ putStrLn "Exception") $ do-                            e' <- Control.Exception.evaluate e-                            putStrLn $ "Exception: " ++ take 128 (show e'))-    exitWith ExitSuccess-
− scripts/ShowFun.hs
@@ -1,13 +0,0 @@------ Helper code for runplugs that doesn't agree with SmallCheck-----module ShowFun where--import Data.Typeable--instance (Typeable a, Typeable b) => Show (a -> b) where-    show e = '<' : (show . typeOf) e ++ ">"--instance Typeable a => Show (IO a) where-    show e = '<' : (show . typeOf) e ++ ">"
− scripts/ShowQ.hs
@@ -1,113 +0,0 @@------ Helper code for runplugs------ Note: must be kept in separate module to hide unsafePerformIO from--- runplugs-generated eval code!! you're warned.----module ShowQ where---- import Language.Haskell.TH-import System.IO.Unsafe-import Data.Dynamic-import Data.Ratio--import Test.QuickCheck.Batch-import Test.QuickCheck-import Data.Char-import Data.List-import Data.Word-import Data.Int-import System.Random--type T = [Int]-type I = Int---- instance Ppr a => Show (Q a) where---     show e = unsafePerformIO $ runQ e >>= return . pprint--instance Arbitrary Char where-    arbitrary     = choose (minBound, maxBound)-    coarbitrary c = variant (ord c `rem` 4)--instance Arbitrary Word8 where-    arbitrary = choose (minBound, maxBound)-    coarbitrary c = variant (fromIntegral ((fromIntegral c) `rem` 4))--instance Arbitrary Ordering where-    arbitrary     = elements [LT,EQ,GT]-    coarbitrary LT = variant 1-    coarbitrary EQ = variant 2-    coarbitrary GT = variant 0--instance Arbitrary Int64 where-  arbitrary     = sized $ \n -> choose (-fromIntegral n,fromIntegral n)-  coarbitrary n = variant (fromIntegral (if n >= 0 then 2*n else 2*(-n) + 1))--instance (Integral a, Arbitrary a) => Arbitrary (Ratio a) where-  arbitrary    = do a <- arbitrary-                    b <- arbitrary-                    return $ if b == 0-                         then if a == 0-                            then (1 % 1)-                            else (b % a)-                         else (a % b)--  coarbitrary m = variant (fromIntegral $ if n >= 0 then 2*n else 2*(-n) + 1)-    where n = numerator m--instance Random Word8 where-  randomR = integralRandomR-  random = randomR (minBound,maxBound)--instance Random Int64 where-  randomR = integralRandomR-  random  = randomR (minBound,maxBound)--integralRandomR :: (Integral a, RandomGen g) => (a,a) -> g -> (a,g)-integralRandomR  (a,b) g = case randomR (fromIntegral a :: Integer,-                                         fromIntegral b :: Integer) g of-                            (x,g) -> (fromIntegral x, g)--myquickcheck :: Testable a => a -> IO String-myquickcheck a = do-    rnd <- newStdGen-    tests (evaluate a) rnd 0 0 []--tests :: Gen Result -> StdGen -> Int -> Int -> [[String]] -> IO String-tests gen rnd0 ntest nfail stamps-  | ntest == 500  = done "OK, passed" ntest stamps-  | nfail == 1000 = done "Arguments exhausted after" ntest stamps-  | otherwise = case ok result of-       Nothing    -> tests gen rnd1 ntest (nfail+1) stamps-       Just True  -> tests gen rnd1 (ntest+1) nfail (stamp result:stamps)-       Just False -> return $ "Falsifiable, after "-                               ++ show ntest-                               ++ " tests:\n"-                               ++ unlines (arguments result)-   where-      result      = generate (((+ 3) . (`div` 2)) ntest) rnd2 gen-      (rnd1,rnd2) = split rnd0--done :: String -> Int -> [[String]] -> IO String-done mesg ntest stamps = return $ mesg ++ " " ++ show ntest ++ " tests" ++ table- where-  table = display-        . map entry-        . reverse-        . sort-        . map pairLength-        . group-        . sort-        . filter (not . null)-        $ stamps--  display []  = ".\n"-  display [x] = " (" ++ x ++ ").\n"-  display xs  = ".\n" ++ unlines (map (++ ".") xs)--  pairLength xss@(xs:_) = (length xss, xs)-  entry (n, xs)         = percentage n ntest-                       ++ " "-                       ++ concat (intersperse ", " xs)--  percentage n m        = show ((100 * n) `div` m) ++ "%"
− scripts/SimpleReflect.hs
@@ -1,212 +0,0 @@--------------------------------------------------------------------------------- |--- Module      :  SimpleReflect--- Copyright   :  (c) 2008 Twan van Laarhoven--- License     :  BSD-style--- --- Maintainer  :  twanvl@gmail.com--- Stability   :  experimental--- Portability :  portable------ Simple reflection of haskell expressions containing variables.----------------------------------------------------------------------------------module SimpleReflect-    ( Expr-    , var, fun, expr, reduce-    , a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z-    ) where--import Data.List-import Control.Applicative----------------------------------------------------------------------------------- Data type---------------------------------------------------------------------------------data Expr = Expr-   { showExpr   :: Int -> ShowS-   , intExpr    :: Maybe Integer-   , doubleExpr :: Maybe Double-   , reduced    :: Maybe Expr-   }--instance Show Expr where-    showsPrec p r = showExpr r p---- Default expression-emptyExpr :: Expr-emptyExpr = Expr { showExpr   = \_ -> showString ""-                 , intExpr    = Nothing-                 , doubleExpr = Nothing-                 , reduced    = Nothing-                 }----------------------------------------------------------------------------------- Lifting and combining expressions----------------------------------------------------------------------------------- | A variable-var :: String -> Expr-var s = emptyExpr { showExpr = \_ -> showString s }--lift :: Show a => a -> Expr-lift x = emptyExpr { showExpr = \p -> showsPrec p x }--data Fixity = L | R deriving Eq---- | A operator as expression-op :: Fixity -> Int -> String -> Expr -> Expr -> Expr-op fix prec op a b = emptyExpr { showExpr = showFun }- where showFun p = showParen (p > prec)-                     $ showExpr a (if fix == L then prec else prec + 1)-                     . showString op-                     . showExpr b (if fix == R then prec else prec + 1)----------------------------------------------------------------------------------- Adding numeric results---------------------------------------------------------------------------------iOp  r f a   = (r a  ) { intExpr    = f <$> intExpr    a }-iOp2 r f a b = (r a b) { intExpr    = f <$> intExpr    a <*> intExpr    b }-dOp  r f a   = (r a  ) { doubleExpr = f <$> doubleExpr a }-dOp2 r f a b = (r a b) { doubleExpr = f <$> doubleExpr a <*> doubleExpr b }--withReduce r a    = let rr = r a in-                    rr { reduced = withReduce r <$> reduced a-                               <|> fromInteger <$> intExpr    rr-                               <|> fromDouble  <$> doubleExpr rr-                       }-withReduce2 r a b = let rr = r a b in-                    rr { reduced = (\a' -> withReduce2 r a' b) <$> reduced a-                               <|> (\b' -> withReduce2 r a b') <$> reduced b-                               <|> fromInteger <$> intExpr    rr-                               <|> fromDouble  <$> doubleExpr rr-                       }----------------------------------------------------------------------------------- Function types---------------------------------------------------------------------------------class FromExpr a where-    fromExpr :: Expr -> a--instance FromExpr Expr where-    fromExpr = id--instance (Show a, FromExpr b) => FromExpr (a -> b) where-    fromExpr f a = fromExpr $ op L 10 " " f (lift a)--fun :: FromExpr a => String -> a-fun = fromExpr . var----------------------------------------------------------------------------------- Variables!---------------------------------------------------------------------------------a,b,c,d,e,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z :: Expr-[a,b,c,d,e,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]-   = [var [x] | x <- ['a'..'e']++['i'..'z']]--f,g,h :: FromExpr a => a-f = fun "f"-g = fun "g"-h = fun "h"----------------------------------------------------------------------------------- Forcing conversion & evaluation----------------------------------------------------------------------------------- | Force something to be an expression-expr :: Expr -> Expr-expr = id---- | Reduce (evaluate) an expression once---   for example 1 + 2 + 3 + 4 ==> 3 + 3 + 4-reduce :: Expr -> Expr-reduce e = maybe e id (reduced e)--reduction :: Expr -> [Expr]-reduction e = e : unfoldr (\e -> do e' <- reduced e; return (e',e')) e----------------------------------------------------------------------------------- Numeric classes---------------------------------------------------------------------------------instance Eq Expr where-    Expr{ intExpr    = Just a } == Expr{ intExpr    = Just b }  =  a == b-    Expr{ doubleExpr = Just a } == Expr{ doubleExpr = Just b }  =  a == b-    a                           == b                            =  show a == show b--instance Ord Expr where-    compare Expr{ intExpr    = Just a } Expr{ intExpr    = Just b }  =  compare a b-    compare Expr{ doubleExpr = Just a } Expr{ doubleExpr = Just b }  =  compare a b-    compare a                           b                            =  compare (show a) (show b)-    min = fun "min" `iOp2` min `dOp2` min-    max = fun "max" `iOp2` max `dOp2` max--instance Num Expr where-    (+)    = withReduce2 $ op L 6 " + " `iOp2` (+)   `dOp2` (+)-    (-)    = withReduce2 $ op L 6 " - " `iOp2` (-)   `dOp2` (-)-    (*)    = withReduce2 $ op L 7 " * " `iOp2` (*)   `dOp2` (*)-    negate = withReduce  $ fun "negate" `iOp` negate `dOp` negate-    abs    = withReduce  $ fun "abs"    `iOp` abs    `dOp` abs-    signum = withReduce  $ fun "signum" `iOp` signum `dOp` signum-    fromInteger i = (lift i)-                     { intExpr    = Just i-                     , doubleExpr = Just $ fromInteger i }--instance Real Expr where-    toRational expr = case (doubleExpr expr, intExpr expr) of-          (Just d,_) -> toRational d-          (_,Just i) -> toRational i-          _          -> error "not a number"--instance Integral Expr where-    quotRem a b = (quot a b, rem a b)-    divMod  a b = (div  a b, mod a b)-    quot = withReduce2 $ op L 7 " `quot` " `iOp2` quot-    rem  = withReduce2 $ op L 7 " `rem` "  `iOp2` rem-    div  = withReduce2 $ op L 7 " `div` "  `iOp2` div-    mod  = withReduce2 $ op L 7 " `mod` "  `iOp2` mod-    toInteger expr = case intExpr expr of-          Just i -> i-          _      -> error "not a number"--instance Fractional Expr where-    (/)   = withReduce2 $ op L 7 " / " `dOp2` (/)-    recip = withReduce  $ fun "recip"  `dOp` recip-    fromRational r = fromDouble (fromRational r)--fromDouble d = (lift d) { doubleExpr = Just d }--instance Floating Expr where-    pi    = (var "pi") { doubleExpr = Just pi }-    exp   = withReduce  $ fun "exp"   `dOp` exp-    sqrt  = withReduce  $ fun "sqrt"  `dOp` sqrt-    log   = withReduce  $ fun "log"   `dOp` log-    (**)  = withReduce2 $ op R 8 "**" `dOp2` (**)-    sin   = withReduce  $ fun "sin"   `dOp` sin-    cos   = withReduce  $ fun "cos"   `dOp` cos-    sinh  = withReduce  $ fun "sinh"  `dOp` sinh-    cosh  = withReduce  $ fun "cosh"  `dOp` cosh-    asin  = withReduce  $ fun "asin"  `dOp` asin-    acos  = withReduce  $ fun "acos"  `dOp` acos-    atan  = withReduce  $ fun "atan"  `dOp` atan-    asinh = withReduce  $ fun "asinh" `dOp` asinh-    acosh = withReduce  $ fun "acosh" `dOp` acosh-    atanh = withReduce  $ fun "atanh" `dOp` atanh--instance Enum Expr where-    succ   = withReduce  $ fun "succ" `iOp` succ `dOp` succ-    pred   = withReduce  $ fun "pred" `iOp` pred `dOp` pred-    toEnum = fun "toEnum"-    fromEnum = fromEnum . toInteger-    enumFrom       a     = map fromInteger $ enumFrom       (toInteger a)-    enumFromThen   a b   = map fromInteger $ enumFromThen   (toInteger a) (toInteger b)-    enumFromTo     a   c = map fromInteger $ enumFromTo     (toInteger a)               (toInteger c)-    enumFromThenTo a b c = map fromInteger $ enumFromThenTo (toInteger a) (toInteger b) (toInteger c)--instance Bounded Expr where-    minBound = var "minBound"-    maxBound = var "maxBound"
− scripts/SmallCheck.hs
@@ -1,378 +0,0 @@------------------------------------------------------------------------- SmallCheck: another lightweight testing library.--- Colin Runciman, August 2006--- Version 0.2 (November 2006)------ After QuickCheck, by Koen Claessen and John Hughes (2000-2004).------------------------------------------------------------------------module SmallCheck (-  smallCheck, depthCheck,-  Property, Testable,-  forAll, forAllElem,-  exists, existsDeeperBy, thereExists, thereExistsElem,-  (==>),-  Series, Serial(..),-  (\/), (><), two, three, four,-  cons0, cons1, cons2, cons3, cons4,-  alts0, alts1, alts2, alts3, alts4,-  N(..), Nat, Natural,-  depth, inc, dec-  ) where--import Data.List (intersperse)-import Control.Monad (when)-import System.IO (stdout, hFlush)-------------------- <Series of depth-bounded values> --------------------- Series arguments should be interpreted as a depth bound (>=0)--- Series results should have finite length--type Series a = Int -> [a]---- sum-infixr 7 \/-(\/) :: Series a -> Series a -> Series a-s1 \/ s2 = \d -> s1 d ++ s2 d---- product-infixr 8 ><-(><) :: Series a -> Series b -> Series (a,b)-s1 >< s2 = \d -> [(x,y) | x <- s1 d, y <- s2 d]--------------------- <methods for type enumeration> ---------------------- enumerated data values should be finite and fully defined--- enumerated functional values should be total and strict---- bounds:--- for data values, the depth of nested constructor applications--- for functional values, both the depth of nested case analysis--- and the depth of results- -class Serial a where-  series   :: Series a-  coseries :: Serial b => Series (a->b)--instance Serial () where-  series   _ = [()]-  coseries d = [ \() -> b-               | b <- series d ]--instance Serial Int where-  series   d = [(-d)..d]-  coseries d = [ \i -> if i > 0 then f (N (i - 1))-                       else if i < 0 then g (N (abs i - 1))-                       else z-               | z <- alts0 d, f <- alts1 d, g <- alts1 d ]--instance Serial Integer where-  series   d = [ toInteger (i :: Int)-               | i <- series d ]-  coseries d = [ f . (fromInteger :: Integer->Int)-               | f <- series d ]--newtype N a = N a--instance Show a => Show (N a) where-  show (N i) = show i--instance (Integral a, Serial a) => Serial (N a) where-  series   d = map N [0..d']-               where-               d' = fromInteger (toInteger d)-  coseries d = [ \(N i) -> if i > 0 then f (N (i - 1))-                           else z-               | z <- alts0 d, f <- alts1 d ]--type Nat = N Int-type Natural = N Integer--instance Serial Float where-  series d   = [ encodeFloat sig exp-               | (sig,exp) <- series d,-                 odd sig || sig==0 && exp==0 ]-  coseries d = [ f . decodeFloat-               | f <- series d ]-             -instance Serial Double where-  series   d = [ frac (x :: Float)-               | x <- series d ]-  coseries d = [ f . (frac :: Double->Float)-               | f <- series d ]--frac :: (Real a, Fractional a, Real b, Fractional b) => a -> b-frac = fromRational . toRational--instance Serial Char where-  series d   = take (d+1) ['a'..'z']-  coseries d = [ \c -> f (N (fromEnum c - fromEnum 'a'))-               | f <- series d ]--instance (Serial a, Serial b) =>-         Serial (a,b) where-  series   = series >< series-  coseries = map uncurry . coseries--instance (Serial a, Serial b, Serial c) =>-         Serial (a,b,c) where-  series   = \d -> [(a,b,c) | (a,(b,c)) <- series d]-  coseries = map uncurry3 . coseries--instance (Serial a, Serial b, Serial c, Serial d) =>-         Serial (a,b,c,d) where-  series   = \d -> [(a,b,c,d) | (a,(b,(c,d))) <- series d]-  coseries = map uncurry4 . coseries--uncurry3 :: (a->b->c->d) -> ((a,b,c)->d)-uncurry3 f (x,y,z) = f x y z--uncurry4 :: (a->b->c->d->e) -> ((a,b,c,d)->e)-uncurry4 f (w,x,y,z) = f w x y z--two   :: Series a -> Series (a,a)-two   s = s >< s--three :: Series a -> Series (a,a,a)-three s = \d -> [(x,y,z) | (x,(y,z)) <- (s >< s >< s) d]--four  :: Series a -> Series (a,a,a,a)-four  s = \d -> [(w,x,y,z) | (w,(x,(y,z))) <- (s >< s >< s >< s) d]--cons0 :: -         a -> Series a-cons0 c _ = [c]--cons1 :: Serial a =>-         (a->b) -> Series b-cons1 c d = [c z | d > 0, z <- series (d-1)]--cons2 :: (Serial a, Serial b) =>-         (a->b->c) -> Series c-cons2 c d = [c y z | d > 0, (y,z) <- series (d-1)]--cons3 :: (Serial a, Serial b, Serial c) =>-         (a->b->c->d) -> Series d-cons3 c d = [c x y z | d > 0, (x,y,z) <- series (d-1)]--cons4 :: (Serial a, Serial b, Serial c, Serial d) =>-         (a->b->c->d->e) -> Series e-cons4 c d = [c w x y z | d > 0, (w,x,y,z) <- series (d-1)]--alts0 ::  Serial a =>-            Series a-alts0 d = series d--alts1 ::  (Serial a, Serial b) =>-            Series (a->b)-alts1 d = if d > 0 then series (dec d)-          else [\_ -> x | x <- series d]--alts2 ::  (Serial a, Serial b, Serial c) =>-            Series (a->b->c)-alts2 d = if d > 0 then series (dec d)-          else [\_ _ -> x | x <- series d]--alts3 ::  (Serial a, Serial b, Serial c, Serial d) =>-            Series (a->b->c->d)-alts3 d = if d > 0 then series (dec d)-          else [\_ _ _ -> x | x <- series d]--alts4 ::  (Serial a, Serial b, Serial c, Serial d, Serial e) =>-            Series (a->b->c->d->e)-alts4 d = if d > 0 then series (dec d)-          else [\_ _ _ _ -> x | x <- series d]--instance Serial Bool where-  series     = cons0 True \/ cons0 False-  coseries d = [ \x -> if x then b1 else b2-               | (b1,b2) <- series d ]--instance Serial a => Serial (Maybe a) where-  series     = cons0 Nothing \/ cons1 Just-  coseries d = [ \m -> case m of-                       Nothing -> z-                       Just x  -> f x-               |  z <- alts0 d ,-                  f <- alts1 d ]--instance (Serial a, Serial b) => Serial (Either a b) where-  series     = cons1 Left \/ cons1 Right-  coseries d = [ \e -> case e of-                       Left x  -> f x-                       Right y -> g y-               |  f <- alts1 d ,-                  g <- alts1 d ]--instance Serial a => Serial [a] where-  series     = cons0 [] \/ cons2 (:)-  coseries d = [ \xs -> case xs of-                        []      -> y-                        (x:xs') -> f x xs'-               |   y <- alts0 d ,-                   f <- alts2 d ]---- Warning: the coseries instance here may generate duplicates.-instance (Serial a, Serial b) => Serial (a->b) where-  series = coseries-  coseries d = [ \f -> g [f x | x <- series d]-               | g <- series d ]              ---- For customising the depth measure.  Use with care!--depth :: Int -> Int -> Int-depth d d' | d >= 0    = d'+1-d-           | otherwise = error "SmallCheck.depth: argument < 0"--dec :: Int -> Int-dec d | d > 0     = d-1-      | otherwise = error "SmallCheck.dec: argument <= 0"--inc :: Int -> Int-inc d = d+1---- show the extension of a function (in part, bounded both by--- the number and depth of arguments)-instance (Serial a, Show a, Show b) => Show (a->b) where-  show f = -    if maxarheight == 1-    && sumarwidth + length ars * length "->;" < widthLimit then-      "{"++(-      concat $ intersperse ";" $ [a++"->"++r | (a,r) <- ars]-      )++"}"-    else-      concat $ [a++"->\n"++indent r | (a,r) <- ars]-    where-    ars = take lengthLimit [ (show x, show (f x))-                           | x <- series depthLimit ]-    maxarheight = maximum  [ max (height a) (height r)-                           | (a,r) <- ars ]-    sumarwidth = sum       [ length a + length r -                           | (a,r) <- ars]-    indent = unlines . map ("  "++) . lines-    height = length . lines-    (widthLimit,lengthLimit,depthLimit) = (80,20,3)::(Int,Int,Int)------------------ <properties and their evaluation> ---------------------- adapted from QuickCheck originals: here results come in lists,--- properties have depth arguments, stamps (for classifying random--- tests) are omitted, existentials are introduced--newtype PR = Prop [Result]--data Result = Result {ok :: Maybe Bool, arguments :: [String]}--nothing :: Result-nothing = Result {ok = Nothing, arguments = []}--result :: Result -> PR-result res = Prop [res]--newtype Property = Property (Int -> PR)--class Testable a where-  property :: a -> Int -> PR--instance Testable Bool where-  property b _ = Prop [Result (Just b) []]--instance Testable PR where-  property prop _ = prop--instance (Serial a, Show a, Testable b) => Testable (a->b) where-  property f = f' where Property f' = forAll series f--instance Testable Property where-  property (Property f) d = f d--evaluate :: Testable a => a -> Series Result-evaluate x d = rs where Prop rs = property x d--forAll :: (Show a, Testable b) => Series a -> (a->b) -> Property-forAll xs f = Property $ \d -> Prop $-  [ r{arguments = show x : arguments r}-  | x <- xs d, r <- evaluate (f x) d ]--forAllElem :: (Show a, Testable b) => [a] -> (a->b) -> Property-forAllElem xs = forAll (const xs)--thereExists :: Testable b => Series a -> (a->b) -> Property-thereExists xs f = Property $ \d -> Prop $-  [ Result-      ( Just $ or [ all pass (evaluate (f x) d)-                  | x <- xs d ] )-      [] ] -  where-  pass (Result Nothing _)  = True-  pass (Result (Just b) _) = b--thereExistsElem :: Testable b => [a] -> (a->b) -> Property-thereExistsElem xs = thereExists (const xs)--exists :: (Serial a, Testable b) =>-            (a->b) -> Property-exists = thereExists series--existsDeeperBy :: (Serial a, Testable b) =>-                    (Int->Int) -> (a->b) -> Property-existsDeeperBy f = thereExists (series . f)- -infixr 0 ==>--(==>) :: Testable a => Bool -> a -> Property-True ==>  x = Property (property x)-False ==> x = Property (const (result nothing))----------------------- <top-level test drivers> -------------------------- similar in spirit to QuickCheck but with iterative deepening---- test for values of depths 0..d stopping when a property--- fails or when it has been checked for all these values-smallCheck :: Testable a => Int -> a -> IO String-smallCheck d = iterCheck 0 (Just d)--depthCheck :: Testable a => Int -> a -> IO String-depthCheck d = iterCheck d (Just d)--iterCheck :: Testable a => Int -> Maybe Int -> a -> IO String-iterCheck dFrom mdTo t = iter dFrom-  where-  iter :: Int -> IO String-  iter d = do-    let Prop results = property t d-    (ok,s) <- check (mdTo==Nothing) 0 0 True results-    maybe (iter (d+1))-          (\dTo -> if ok && d < dTo-                        then iter (d+1)-                        else return s)-          mdTo--check :: Bool -> Int -> Int -> Bool -> [Result] -> IO (Bool, String)-check i n x ok rs | null rs = do-  let s = "  Completed "++show n++" test(s)"-      y = if i then "." else " without failure."-      z | x > 0     = "  But "++show x++" did not meet ==> condition."-        | otherwise = ""-  return (ok, s ++ y ++ z)--check i n x ok (Result Nothing _ : rs) = do-  progressReport i n x-  check i (n+1) (x+1) ok rs--check i n x f (Result (Just True) _ : rs) = do-  progressReport i n x-  check i (n+1) x f rs--check i n x f (Result (Just False) args : rs) = do-  let s = "  Failed test no. "++show (n+1)++". Test values follow."-      s' = s ++ ": " ++ concat (intersperse ", " args)-  if i then-      check i (n+1) x False rs-    else-      return (False, s')--progressReport :: Bool -> Int -> Int -> IO ()-progressReport _ _ _ = return ()
− scripts/Unlambda.hs
@@ -1,169 +0,0 @@-{-# OPTIONS -fglasgow-exts #-}--- --- Uses pattern guards------ This is an interpreter of the Unlambda language, written in--- the pure, lazy, functional language Haskell.--- --- Copyright (C) 2001 by Ørjan Johansen <oerjan@nvg.ntnu.no>--- Copyright (C) 2006 by Don Stewart - http://www.cse.unsw.edu.au/~dons---                                                                           --- This program is free software; you can redistribute it and/or modify--- it under the terms of the GNU General Public License as published by--- the Free Software Foundation; either version 2 of the License, or--- (at your option) any later version.---                                                                           --- This program is distributed in the hope that it will be useful,--- but WITHOUT ANY WARRANTY; without even the implied warranty of--- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the--- GNU General Public License for more details.---                                                                           --- You should have received a copy of the GNU General Public License--- along with this program; if not, write to the Free Software--- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA---------- A time- and output-limited unlambda-----import Data.Char-import System.IO-import System.Posix.Resource--rlimit = ResourceLimit 3--main = setResourceLimit ResourceCPUTime (ResourceLimits rlimit rlimit) >> run--run = do-  exp <- parse stdin-  let (Eval cp) = eval exp-  cp (Nothing, 2048) (const return)----------------------------------------------------------------------------- Abstract syntax--data Exp-    = App Exp Exp-    | K -    | K1 Exp-    | S -    | S1 Exp-    | S2 Exp Exp-    | I -    | V -    | C -    | Cont (Cont Exp) -    | D -    | D1 Exp-    | Dot Char -    | E -    | At -    | Ques Char -    | Pipe----------------------------------------------------------------------------- Parsing of the Unlambda program directly from handle----parse :: Handle -> IO Exp-parse h = do-  c <- catch (hGetChar h) (\_ -> error "Parse error at end of file")-  case toLower c of-    c | c `elem` " \t\n"  -> parse h-    '`' -> do e1 <- parse h-              e2 <- parse h-              return (App e1 e2)-    '#' -> hGetLine h >> parse h-    '.' -> hGetChar h >>= return . Dot-    '?' -> hGetChar h >>= return . Ques-    _ | Just fn <- lookup c table -> return fn-      | otherwise                 -> error $ "Unknown operator " ++ show c--    where table = zip "ksivcdre@|" [K,S,I,V,C,D,Dot '\n',E,At,Pipe]----------------------------------------------------------------------------- Printing--instance Show Exp where showsPrec _ e = sh e--sh (App x y)  = showChar '`' . sh x . sh y-sh K          = showChar 'k'-sh (K1 x)     = showString "`k" . sh x-sh S          = showChar 's'-sh (S1 x)     = showString "`s" . sh x-sh (S2 x y)   = showString "``s" . sh x . sh y-sh I          = showChar 'i'-sh V          = showChar 'v'-sh C          = showChar 'c'-sh (Cont _)   = showString "<cont>"-sh D          = showChar 'd'-sh (D1 x)     = showString "`d" . sh x-sh (Dot '\n') = showChar 'r'-sh (Dot c)    = showChar '.' . showChar c-sh E          = showChar 'e'-sh At         = showChar '@'-sh (Ques c)   = showChar '?' . showChar c-sh Pipe       = showChar '|'----------------------------------------------------------------------------- Eval monad--newtype Eval a = Eval ((Maybe Char, Int) -> Cont a -> IO Exp)--type Cont a = (Maybe Char, Int) -> a -> IO Exp--instance Monad Eval where--  (Eval cp1) >>= f = Eval $ \dat1 cont2 -> -                        cp1 dat1 $ \dat2 a -> -                            let (Eval cp2) = f a in cp2 dat2 cont2--  return a = Eval $ \dat cont -> cont dat a----------------------------------------------------------------------------- Basics--currentChar      = Eval (\dat@(c,_) cont -> cont dat c)-setCurrentChar c = Eval (\(_,i) cont -> cont (c,i) ())-io iocp          = Eval (\dat cont -> iocp >>= cont dat)-throw c x        = Eval (\dat cont -> c dat x)-exit e           = Eval (\_ _ -> return e)-callCC f         = Eval $ \dat cont -> let Eval cp2 = f cont in cp2 dat cont-step             = Eval (\(c,i) cont -> if i<1 then return E else cont (c,i-1) ())----------------------------------------------------------------------------- Interpretation in the Eval monad--eval (App e1 e2) = do-  f <- eval e1-  case f of-    D -> return (D1 e2)-    _ -> eval e2 >>= apply f-eval e = return e--apply K x        = return (K1 x)-apply (K1 x) y   = return x-apply S x        = return (S1 x)-apply (S1 x) y   = return (S2 x y)-apply (S2 x y) z = eval (App (App x z) (App y z))-apply I x        = return x-apply V x        = return V-apply C x        = callCC (\c -> apply x (Cont c))-apply (Cont c) x = throw c x-apply D x        = return x-apply (D1 e) x   = do f <- eval e; apply f x-apply (Dot c) x  = step >> io (putChar c) >> return x-apply E x        = exit x--apply At f = do-  dat <- io $ catch (getChar >>= return . Just) (const $ return Nothing)-  setCurrentChar dat-  apply f (case dat of Nothing -> V ; Just _  -> I)--apply (Ques c) f = do-  cur <- currentChar-  apply f (if cur == Just c then I else V)--apply Pipe f = do-  cur <- currentChar-  apply f (case cur of Nothing -> V ; Just c  -> (Dot c))
− scripts/gnuplot.script
@@ -1,11 +0,0 @@-set border 3-set xtics nomirror rotate ( "Don Stewart" 0, "Thomas Jaeger" 1, "J Louis" 2, "Samuel Bronson" 3, "Jason Dagit" 4, "Spencer Janssen" 5, "Bertram Felgenhauer" 6, "Pete Kazmier" 7, "Paolo Martini" 8, "Stefan Wehr" 9, "Dmitry Astapov" 10, "David House" 11, "Derek Elkins" 12, "David" 13, "Kevin Reid" 14, "smith" 15, "Simon Winwood" 16, "Shapr" 17, "Mark Wotton" 18, "Ketil Malde" 19, "tatd2" 20, "softpro" 21, "Ganesh" 22, "Duncan Coutts" 23, "Davidf" 24, "Andres" 25, "rizzix" 26, "mux" 27, "l.mai" 28, "Vesa Kaihlavirta" 29, "Vaclav Haisman" 30, "Peter Davis" 31, "Lemmih" 32, "Kenneth hoste" 33, "Josef Svenningsson" 34, "Joel Koerwer" 35, "Joachim breitner" 36, "Echo Nolan" 37 )-set border 3-set boxwidth 0.7 relative-set xrange [-1:*]-set yrange [1:*]-set logscale y-set ticscale 0-set terminal png font Vera 9-set output "lambdabot-commiters.png"-plot "authors" ti "Commiters" with boxes 
− scripts/hoogle/Makefile
@@ -1,43 +0,0 @@-#-# Simple Makefile for command line tool-#--GHC=            ghc-HC_OPTS=        -O--.PHONY: all deploy york haskell--all: hoogle--hoogle: -	cd src && $(GHC) $(HC_OPTS) --make -o a.out CmdLine.hs-	mv src/a.out ./$@-	cp src/hoogle.txt .---clean:-	rm -rf hoogle-	find src -name '*.hi' -o -name '*.o' -exec rm -rf {} \;---deploy:-	mkdir -p deploy-	mkdir -p deploy/res-	mkdir -p deploy/haddock-	wget http://www.cse.unsw.edu.au/~dons/lambdabot/State/where --output-document=deploy/res/lambdabot.txt --no-clobber-	cd src && $(GHC) $(HC_OPTS) --make -o ../deploy/index.cgi Web.hs-	cd src && $(GHC) $(HC_OPTS) --make -o ../deploy/hoodoc.cgi Doc.hs-	cp -r web/* deploy-	cp src/hoogle.txt deploy/res/hoogle.txt-	cp src/Web/res/* deploy/res-	cp src/Doc/res/* deploy/res-	haddock --html --title=Hoogle --odir=deploy/haddock --prologue=docs/haddock.txt src/*.hs src/*/*.hs---york: deploy-	cp -r deploy/* $(HOME)/web/cgi-bin/hoogle-	cd deploy && find * | grep '\.' | grep -v cgi | grep -v txt | xargs -i cp --parents {} $(HOME)/web/res-cgi-bin/hoogle---haskell: deploy-	scp -r deploy/* $(LOGNAME)@haskell.org:/haskell/hoogle
− scripts/hoogle/README.txt
@@ -1,34 +0,0 @@-README FOR HOOGLE
-=================
-
-A Haskell API search. To invoke it type
-
-	hoogle "[a] -# [b]"
-
-Where -# is used instead of -> so it does not conflict with the console.
-
-
-Web Version
------------
-
-A web version is available at http://www.haskell.org/hoogle
-
-All the appropriate documentation/credits/reference material is on the Haskell wiki at
-http://www.haskell.org/haskellwiki/Hoogle
-
-
-Building
---------
-
-To build the source type "ghc --make" on the files.
-
-Folders
--------
-
-The folders in the distribution, and their meaning are:
-
-data - programs that generate a hoogle data file
-docs - documentation on hoogle
-src  - source code to the hoogle front ends, and the main code
-test - regression tests
-web  - additional front end stuff for the web module
− scripts/hoogle/data/hadhoo/Main.hs
@@ -1,36 +0,0 @@--module Main where--import System.Environment-import System.Cmd-import Control.Monad-import Data.List---helpMsg = "help msg for hadhoo\nhadhoo directory -output.hoo"--main :: IO ()-main = do args <- getArgs-          if null args then putStrLn helpMsg else do-            let (outfiles,infiles) = partition ("-" `isPrefixOf`) args-                outfile = last ("hoogle.txt":map tail outfiles)-            allfiles <- liftM concat $ mapM pickFiles infiles-            if null allfiles-              then putStrLn "No in files specified, nothing to do"-              else execute allfiles outfile---pickFiles :: FilePath -> IO [FilePath]-pickFiles file = return [file]---execute :: [FilePath] -> FilePath -> IO ()-execute srcfiles outfile = mapM_ (executeOne outfile) srcfiles--executeOne :: FilePath -> FilePath -> IO ()-executeOne outfile file = do-    system $ "haddock -hoogle " ++ file ++ " > temp.txt"-    src <- readFile "temp.txt"-    appendFile outfile src--
− scripts/hoogle/data/hadhtml/Lexer.hs
@@ -1,130 +0,0 @@-
-module Lexer(Lexeme(..), lexer) where
-
-import TextUtil
-import List
-import Char
-
-data Lexeme = Tag String [(String, String)]
-            | ShutTag String
-            | Text String
-            deriving (Show)
-
-
-entities = [("gt", '>'), ("lt", '<'), ("amp", '&')]
-
----------------------------------------------------------------------
--- MANIPULATORS
-soupLower x = map f x
-    where
-        f (ShutTag x) = ShutTag (lcase x)
-        f (Tag x xs) = Tag (lcase x) (map (\(a,b) -> (lcase a,b)) xs)
-        f x = x
-        
-        lcase = map toLower
-
-firstText (Text x:_) = x
-firstText (x:xs) = firstText xs
-firstText [] = ""
-
-tagText (Text x) = x
-tagText _ = ""
-
-innerText x = concatMap tagText x
-
-innerTextSpace x = oneSpace $ concatMap (\a -> ' ':tagText a) x
-
-addAttr :: Lexeme -> (String, String) -> Lexeme
-addAttr (Tag name attr) x = Tag name (x:attr)
-
-getAttr :: Lexeme -> String -> Maybe String
-getAttr (Tag _ attr) name = lookup name attr
-
----------------------------------------------------------------------
--- PARSER
-
-lexer :: String -> [Lexeme]
-lexer = {- map singleSpace . -} joinText . readTagSoup {- . map reSpace -}
-
-reSpace x = if isSpace x then ' ' else x
-
-joinText (Text a:Text b:xs) = joinText (Text (a ++ b):xs)
-joinText (x:xs) = x : joinText xs
-joinText [] = []
-
-singleSpace (Text x) = Text (oneSpace x)
-singleSpace x = x
-
-oneSpace (' ':' ':xs) = oneSpace (' ':xs)
-oneSpace (x:xs) = x : oneSpace xs
-oneSpace [] = []
-
-readTagSoup [] = []
-readTagSoup ('<':'!':xs) = readDeclComment xs
-readTagSoup ('<':'/':xs) = readShutTag xs
-readTagSoup ('<':x:xs) | isAlpha x = readTag (x:xs)
-readTagSoup ('&':xs) = readEntity xs
-readTagSoup (x:xs) = Text [x] : readTagSoup xs
-
-
-readDeclComment ('-':'-':xs) = readTagSoup (skipUntilAfter "-->" xs)
-readDeclComment xs = readTagSoup (skipUntilAfter ">" xs)
-
-readShutTag xs = ShutTag (trim a) : readTagSoup b
-    where (a, b) = splitPairSafe ">" xs
-
-readEntity xs | hasClose && valid = Text [value] : readTagSoup b
-    where
-        hasClose = ';' `elem` take 10 xs
-        (a, b) = splitPairSafe ";" xs
-        isNumber = head xs == '#'
-        validNumber = all isDigit (tail a)
-        validWord = all isAlpha a
-        valid = (isNumber && validNumber) || (not isNumber && validWord)
-        value = if isNumber then chr (read (tail a)) else maybe '?' id (lookup a entities)
-
-readEntity xs = Text "&" : readTagSoup xs
-
-
-isLegal x = isAlpha x || isDigit x || x == '_' || x == '-'
-
-
--- read until a space or a >, that is the tag
-readTag x = readAttr (Tag a []) b
-    where (a, b) = pairWhile isLegal x
-
---readAttr tag xs = error (take 100 xs)
-readAttr tag ('>':xs) = tag : readTagSoup xs
-readAttr tag (x:xs) | isSpace x = readAttr tag xs
-
-readAttr tag [] = [tag]
-readAttr tag (x:xs) | not (isLegal x) = error $ "Doh: " ++ show x ++ ": " ++ take 25 (x:xs)
-readAttr tag xs = if head b == '='
-                  then readString tag a (tail b)
-                  else readAttr (addAttr tag (a, "")) b
-    where (a, b) = pairWhile isLegal xs
-
-
-readString tag name ('\"':xs) = readAttr (addAttr tag (name,a)) b
-    where (a, b) = splitPairSafe "\"" xs
-
-readString tag name xs = readAttr (addAttr tag (name,a)) b
-    where (a, b) = pairWhile (\x -> x /= ' ' && x /= '>') xs
-
-
-skipUntilAfter find str | find `isPrefixOf` str = drop (length find) str
-skipUntilAfter find (x:xs) = skipUntilAfter find xs
-skipUntilAfter find [] = []
-
-
-splitPairSafe find str = case splitPair find str of
-                              Just x -> x
-                              Nothing -> (str, "")
-
-pairWhile :: (a -> Bool) -> [a] -> ([a], [a])
-pairWhile f xs = g [] xs
-    where
-        g done (x:xs) | f x = g (x:done) xs
-        g done todo = (reverse done, todo)
-
-
− scripts/hoogle/data/hadhtml/Main.hs
@@ -1,297 +0,0 @@-
-module Main where
-
-import System
-import Directory
-import List
-
-import Lexer
-import TextUtil
-import Char
-
-
-copyright = ["-- Generated by Hoogle, from Haddock HTML", "-- (C) Neil Mitchell 2005",""]
-
-
--- example, for full GHC do C:\ghc\ghc-6.4\doc\html\libraries
-main = do xs <- getArgs
-          let res = case xs of
-                (a:_) -> a
-                [] -> "C:\\ghc\\ghc-6.4.1\\doc\\html\\libraries"
-          hoogledoc res
-
-
-test = hoogledoc "examples"
-
-
-
-
-
-hoogledoc :: FilePath -> IO ()
-hoogledoc x = do filelist <- docFiles x
-                 textlist <- mapM readFile filelist
-                 
-                 excludeExists <- doesFileExist "exclude.txt"
-                 excludeSrc <- if excludeExists then readFile "exclude.txt" else return ""
-                 h98 <- loadH98
-                 
-                 let filetext = zip filelist textlist
-                     exclude = lines excludeSrc
-                     results = onlyOnce $ h98 ++ concatMap (uncurry (document exclude)) filetext
-                 writeFile "hoogle.txt" $ unlines (copyright ++ results)
-
-
--- load up the libraries that GHC shows distain for...
-loadH98 :: IO [(String, [String])]
-loadH98 =  do exist <- doesFileExist "haskell98.txt"
-              if exist then
-                  do x <- readFile "haskell98.txt"
-                     return $ f $ filter (not . null) $ lines x
-               else
-                  do putStrLn "Warning: could not find haskell98.txt"
-                     return []
-    where
-        f [] = []
-        f (x:xs) = (drop 7 x,a) : f b
-            where (a,b) = break ("module" `isPrefixOf`) xs
-
-
-onlyOnce :: [(String, [String])] -> [String] 
-onlyOnce xs = concatMap g ordered
-    where
-        ordered = groupBy eqFst $ sortBy cmpFst items
-        items = map f $ groupBy eqSnd $ sortBy cmpSnd $ concatMap (\(a,b) -> map ((,) a) b) xs
-        
-        eqSnd  (_,a) (_,b) = a == b
-        cmpSnd (_,a) (_,b) = a `compare` b
-        eqFst  (a,_) (b,_) = a == b
-        cmpFst (a,_) (b,_) = a `compare` b
-        
-        modFst (a,_) (b,_) = length (filter (== '.') a) `compare` length (filter (== '.') b)
-        
-        f xs = head $ sortBy modFst xs
-        g xs@((name,_):_) = ["", "module " ++ name] ++ map snd xs
-        
-        
-
-{-
-doctest x = do let file = "C:/ghc/ghc-6.4/doc/html/libraries/parsec/Text.ParserCombinators.Parsec" ++ x ++ ".html"
-               src <- readFile file
-               let y = unlines $ document [] file src
-               writeFile "result.txt" y
--}
-
-
--- the entries to output
-document :: [String] -> FilePath -> String -> [(String, [String])]
-document exclude file contents = 
-        if hide then []
-        else if any isSpace name then []
-        else [(name, rewrite lexs)]
-    where
-        hide = any (`isPrefixOf` name) (map init partial) || any (== name) full
-        (partial, full) = partition (\x -> last x == '.') exclude
-    
-        lexs = lexer contents
-        name = modName lexs
-
-
-
-data Flags = IsDir | IsHtml | IsNone
-             deriving (Show, Eq)
-
-
-docFiles :: FilePath -> IO [FilePath]
-docFiles x = do xFlag <- getFlag x
-                if xFlag == IsHtml then return [x] else do
-                dir <- getDirectoryContents x
-                let qdir = map (\y -> x ++ "/" ++ y) (filter (\x -> head x /= '.') dir)
-                flags <- mapM getFlag qdir
-                let flag_dir = zip flags qdir
-                    resdirs = map snd $ filter (\(a,b) -> a == IsDir ) flag_dir
-                    reshtml = map snd $ filter (\(a,b) -> a == IsHtml) flag_dir
-                children <- mapM docFiles resdirs
-                return $ reshtml ++ concat children
-    where
-        getFlag ('.':_) = return IsNone
-        getFlag xs | ".html" `isSuffixOf` xs = return IsHtml
-        getFlag x = do y <- doesDirectoryExist x
-                       return $ if y then IsDir else IsNone
-
-
-
----- REWRITER
-
-getAttr :: Lexeme -> String -> String
-getAttr (Tag _ attr) name =
-    case lookup name attr of
-        Nothing -> ""
-        Just x -> x
-        
-        
-rewrite = concatMap rejoin . bundle . map deForall . extract
-        
-
-rebundle = bundle . map tail
-
-
-deForall :: String -> String
-deForall x = g x
-    where
-        g x | "forall " `isPrefixOf` x = g $ noImp $ tail $ tail $ dropWhile (/= '.') x
-        g (x:xs) = x : g xs
-        g [] = []
-        
-        noImp x = f x
-            where
-                f ('=':'>':' ':xs) = xs
-                f (x:xs) = f xs
-                f [] = x
-        
-
-
-bundle :: [String] -> [[String]]
-bundle (x:xs) = (x:a) : bundle b
-    where (a,b) = break (not . isSpace . head) xs
-bundle [] = []
-
-        
-rejoin :: [String] -> [String]
-rejoin [x] = [x]
-rejoin (x:xs) | "data " `isPrefixOf` x || "newtype " `isPrefixOf` x = rejoinData (x:xs)
-rejoin (x:xs) | "class " `isPrefixOf` trim x = rejoinClass (x:xs)
-rejoin (x:xs) = [concat (x:map ((++) " " . tail) xs)]
-
-
-rejoinData (dat:xs) = nub $ (keyword ++ " " ++ pre) : (concatMap f $ rebundle xs)
-    where
-        (keyword, _:pre) = break (== ' ') dat
-        
-        f ("Instances":xs) = map ((++) "instance " . tail) xs
-        f ("Constructors":xs) = concatMap g $ rebundle xs
-        
-        g [x] = [y ++ " :: " ++ concatMap (++ " -> ") ys ++ pre]
-            where (y:ys) = chunks x
-            
-        g (x:xs) = (dechunk $ x : "::" : concatMap h xs ++ [pre]) : concatMap t xs
-        
-        h x = res
-            where
-                res = concatMap (++ ["->"]) (replicate (reps+1) typ2)
-            
-                reps = length $ filter (== ',') names
-                (names:_:typ) = chunks x
-                typ2 = bracketStrip typ
-        
-        t x = map res names
-            where
-                names = splitList "," a
-                res name = dechunk $ name : "::" : clls ++ pre : "->" : imp
-                
-                (a:_:b) = chunks x
-                bb = bracketStrip b
-                (cls,rest) = break (== "=>") bb
-                
-                clls = if null rest then [] else cls ++ ["=>"]
-                imp = if null rest then cls else tail rest
-
-
-bracketStrip ['(':xs] | not ('(' `elem` xs) = chunks $ init xs
-bracketStrip x = x
-                
-
-
-rejoinClass (dat:xs) = ("class " ++ pre) : (concatMap f $ rebundle xs)
-    where
-        pre2 = drop 6 $ reverse $ drop 7 $ reverse dat
-        pre = if '|' `elem` pre2 then takeWhile (/= '|') pre2 else pre2
-        
-        cpre = chunks pre
-        body = dechunk $
-            if "=>" `elem` cpre then tail (dropWhile (/= "=>") cpre) else cpre
-        
-        f ("Instances":xs) = []
-        f ("Methods":xs) = map g $ rebundle xs
-        f (x:xs) = error $ "rejoinClass: " ++ x
-        
-        g [x] = dechunk $ a ++ "::" : cls : "=>" : imp
-            where
-                (a,b2) = break (== "::") (chunks x)
-                b = if null b2 then error pre else tail b2
-                (c,d) = break (== "=>") b
-                
-                cls = if null d then body else concat ["(", body, ", ", nobrackets (dechunk c), ")"]
-                imp = if null d then b else tail d
-                
-                nobrackets ('(':xs) = init xs
-                nobrackets x = x
-        
-        g xs = g [dechunk xs]
-
-
-dechunk = concat . intersperse " "
-
--- divide up into lexemes, respecting brackets
-chunks :: String -> [String]
-chunks x = filter (not . null) $ f "" 0 x
-    where
-        f a n (',':' ':xs) = f a n (',':xs)
-        f a n (x:xs) | x `elem` "[({" = f (x:a) (n+1) xs
-                     | x `elem` "])}" = f (x:a) (n-1) xs
-                     | isSpace x && n == 0 = reverse a : f "" n xs
-                     | otherwise = f (x:a) n xs
-        f a n [] = [reverse a]
-
-
-
-extract :: [Lexeme] -> [String]
-extract xs =
-        filter (not . isPrefixOf "module") $ -- remove modules
-        dropWhile (isSpace . head) $     -- remove synopsis
-        f (-1) xs
-    where
-        f n (Tag "TABLE" _:xs) = f (n+1) xs
-        f n (ShutTag "TABLE":xs) = f (n-1) xs
-        f n [] = []
-        
-        f n (t@(Tag "TD" attr):xs) | att `elem` ["decl","arg","section4"] = g n "" xs
-            where att = getAttr t "CLASS"
-        f n (_:xs) = f n xs
-        
-        g n a (Tag "TABLE" _:xs) = h n 1 a xs
-        g n a (ShutTag "TD":xs) = (replicate n '\t' ++ trim a) : f n xs
-        g n a (Text x:xs) = g n (a ++ x) xs
-        g n a (_:xs) = g n a xs
-        
-        h n m a (Text x:xs) = h n m (a ++ x) xs
-        h n m a (ShutTag "TABLE":xs) = if m == 1 then g n a xs else h n (m-1) a xs
-        h n m a (Tag "TABLE" _:xs) = h n (m+1) a xs
-        h n m a (_:xs) = h n m a xs
-
-
-deescape ('&':'g':'t':';':xs) = '>' : deescape xs
-deescape ('&':'l':'t':';':xs) = '<' : deescape xs
-deescape ('&':'a':'m':'p':';':xs) = '&' : deescape xs
-deescape (x:xs) = x : deescape xs
-deescape [] = []
-
-
-
-modName :: [Lexeme] -> String
-modName x = a
-    where Text a = head $ tail $ dropWhile (isntTag $ Tag "TITLE" []) $ x
-
-
--- first one is the pattern, second is the actual
-isTag :: Lexeme -> Lexeme -> Bool
-isTag (Tag a c) (Tag b d) = eqEmpty a b && all contain c
-    where contain (key, val) = Just val == lookup key d
-
-isTag (ShutTag a) (ShutTag b) = eqEmpty a b
-isTag (Text a) (Text b) = eqEmpty a b
-isTag _ _ = False
-
-isntTag a b = not (isTag a b)
-
-eqEmpty a b = a == "" || a == b
-
− scripts/hoogle/data/hadhtml/TextUtil.hs
@@ -1,108 +0,0 @@-module TextUtil where
-
-import Prelude
-import Maybe
-import Char
-import List
-
-
-trim :: String -> String
-trim = trimLeft . trimRight
-trimLeft = dropWhile isSpace
-trimRight = reverse . trimLeft . reverse
-
-
-isSubstrOf :: Eq a => [a] -> [a] -> Bool
-isSubstrOf find list = any (isPrefixOf find) (tails list)
-
-
-splitList :: Eq a => [a] -> [a] -> [[a]]
-splitList find str = if isJust q then a : splitList find b else [str]
-    where
-        q = splitPair find str
-        Just (a, b) = q
-
-
-splitPair :: Eq a => [a] -> [a] -> Maybe ([a], [a])
-splitPair find str = f str
-    where
-        f [] = Nothing
-        f x  | isPrefixOf find x = Just ([], drop (length find) x)
-             | otherwise = if isJust q then Just (head x:a, b) else Nothing
-                where
-                    q = f (tail x)
-                    Just (a, b) = q
-
-
-indexOf find str = length $ takeWhile (not . isPrefixOf (lcase find)) (tails (lcase str))
-
-
-lcase = map toLower
-ucase = map toUpper
-
-
-replace find with [] = []
-replace find with str | find `isPrefixOf` str = with ++ replace find with (drop (length find) str)
-                      | otherwise = head str : replace find with (tail str)
-
-
-
-
--- 0 based return
-findNext :: Eq a => [[a]] -> [a] -> Maybe Int
-findNext finds str = if null maxs then Nothing else Just (fst (head (sortBy compSnd maxs)))
-    where
-        maxs = mapMaybe f (zip [0..] finds)
-        
-        f (id, find) = if isJust q then Just (id, length (fst (fromJust q))) else Nothing
-            where q = splitPair find str
-        
-        compSnd (_, a) (_, b) = compare a b
-
-
--- bracketing...
-
-data Bracket = Bracket (Char, Char) [Bracket]
-             | UnBracket String
-             deriving (Show)
-
-data PartBracket = PBracket [PartBracket]
-                 | PUnBracket Char
-                 deriving (Show)
-
-
-bracketWith :: Char -> Char -> Bracket -> Bracket
-bracketWith strt stop (Bracket x y) = Bracket x (map (bracketWith strt stop) y)
-bracketWith strt stop (UnBracket x) = bracketString strt stop x
-
-
-bracketString :: Char -> Char -> String -> Bracket
-bracketString strt stop y = Bracket (strt, stop) (g "" res)
-    where
-        (a, b) = bracketPartial strt stop y
-        res = a ++ (map PUnBracket b)
-        
-        g c (PBracket x:xs  ) = deal c ++ Bracket (strt, stop) (g "" x) : g "" xs
-        g c (PUnBracket x:xs) = g (x:c) xs
-        g c []                = deal c
-        
-        deal [] = []
-        deal x  = [UnBracket (reverse x)]
-        
-
-
-bracketPartial :: Char -> Char -> String -> ([PartBracket], String)
-bracketPartial strt stop y = f y
-    where
-        
-        f [] = ([], "")
-        
-        f (x:xs) | x == strt = (PBracket a : c, d)
-                                 where
-                                    (a, b) = bracketPartial strt stop xs
-                                    (c, d) = f b
-
-        f (x:xs) | x == stop = ([], xs)
-        
-        f (x:xs) | otherwise = (PUnBracket x : a, b)
-                                  where (a, b) = f xs
− scripts/hoogle/data/hadhtml/exclude.txt
@@ -1,23 +0,0 @@-Distribution.Compat.RawSystem
-Distribution.Compat.ReadP
-Distribution.Make
-Distribution.Version
-Distribution.Simple.Utils
-Language.Haskell.Pretty
-Array
-Char
-Complex
-CPUTime
-Directory
-IO
-Ix
-List
-Locale
-MarshalError
-Maybe
-Monad
-Random
-Ratio
-System
-Time
-Graphics.
− scripts/hoogle/data/hadhtml/haskell98.txt
@@ -1,298 +0,0 @@-module Prelude
-data []
-(:) :: a -> [a] -> [a]
-[] :: [a]
-keyword |
-keyword ->
-keyword <-
-keyword @
-keyword !
-keyword ::
-keyword ~
-keyword _
-keyword as
-keyword case
-keyword class
-keyword data
-keyword default
-keyword deriving
-keyword do
-keyword else
-keyword forall
-keyword hiding
-keyword if
-keyword import
-keyword in
-keyword infix
-keyword infixl
-keyword infixr
-keyword instance
-keyword let
-keyword module
-keyword newtype
-keyword of
-keyword qualified
-keyword then
-keyword type
-keyword where
-
-
-module Ix
-index :: Ix a => (a,a) -> a -> Int
-inRange :: Ix a => (a,a) -> a -> Bool
-rangeSize :: Ix a => (a,a) -> Int
-range :: Ix a => (a,a) -> [a]
-
-module List
-tails :: [a] -> [[a]]
-intersectBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
-group :: Eq a => [a] -> [[a]]
-sortBy :: (a -> a -> Ordering) -> [a] -> [a]
-find :: (a -> Bool) -> [a] -> Maybe a
-delete :: Eq a => a -> [a] -> [a]
-(\\) :: Eq a => [a] -> [a] -> [a]
-nubBy :: (a -> a -> Bool) -> [a] -> [a]
-unzip4 :: [(a,b,c,d)] -> ([a],[b],[c],[d])
-unzip5 :: [(a,b,c,d,e)] -> ([a],[b],[c],[d],[e])
-unionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
-union :: Eq a => [a] -> [a] -> [a]
-elemIndices :: Eq a => a -> [a] -> [Int]
-zip6 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [(a,b,c,d,e,f)]
-findIndex :: (a -> Bool) -> [a] -> Maybe Int
-genericReplicate :: Integral a => a -> b -> [b]
-maximumBy :: (a -> a -> a) -> [a] -> a
-minimumBy :: (a -> a -> a) -> [a] -> a
-inits :: [a] -> [[a]]
-intersect :: Eq a => [a] -> [a] -> [a]
-transpose :: [[a]] -> [[a]]
-groupBy :: (a -> a -> Bool) -> [a] -> [[a]]
-insert :: Ord a => a -> [a] -> [a]
-unzip6 :: [(a,b,c,d,e,f)] -> ([a],[b],[c],[d],[e],[f])
-unzip7 :: [(a,b,c,d,e,f,g)] -> ([a],[b],[c],[d],[e],[f],[g])
-intersperse :: a -> [a] -> [a]
-zip5 :: [a] -> [b] -> [c] -> [d] -> [e] -> [(a,b,c,d,e)]
-zip4 :: [a] -> [b] -> [c] -> [d] -> [(a,b,c,d)]
-zip7 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [(a,b,c,d,e,f,g)]
-partition :: (a -> Bool) -> [a] -> ([a],[a])
-zipWith6 :: (a -> b -> c -> d -> e -> f -> g) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g]
-isPrefixOf :: Eq a => [a] -> [a] -> Bool
-genericIndex :: Integral a => [b] -> a -> b
-isSuffixOf :: Eq a => [a] -> [a] -> Bool
-findIndices :: (a -> Bool) -> [a] -> [Int]
-mapAccumR :: (a -> b -> (a,c)) -> a -> [b] -> (a,[c])
-genericSplitAt :: Integral a => a -> [b] -> ([b],[b])
-sort :: Ord a => [a] -> [a]
-mapAccumL :: (a -> b -> (a,c)) -> a -> [b] -> (a,[c])
-genericTake :: Integral a => a -> [b] -> [b]
-genericLength :: Integral a => [b] -> a
-insertBy :: (a -> a -> Ordering) -> a -> [a] -> [a]
-zipWith7 :: (a -> b -> c -> d -> e -> f -> g -> h) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [h]
-elemIndex :: Eq => a -> [a] -> Maybe Int
-zipWith5 :: (a -> b -> c -> d -> e -> f) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f]
-zipWith4 :: (a -> b -> c -> d -> e) -> [a] -> [b] -> [c] -> [d] -> [e]
-unfoldr :: (a -> Maybe (b,a)) -> a -> [b]
-deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]
-genericDrop :: Integral a => a -> [b] -> [b]
-nub :: Eq a => [a] -> [a]
-
-module Numeric
-showSigned :: Real a => (a -> ShowS) -> Int -> a -> ShowS
-floatToDigits :: RealFloat a => Integer -> a -> ([Int],Int)
-readInt :: Integral a => a -> (Char -> Bool) -> (Char -> Int) -> ReadS a
-showGFloat :: RealFloat a => Maybe Int -> a -> ShowS
-showInt :: Integral a => a -> ShowS
-readOct :: Integral a => ReadS a
-fromRat :: RealFloat a => Rational -> a
-readFloat :: RealFloat a => ReadS a
-showFFloat :: RealFloat a => Maybe Int -> a -> ShowS
-readSigned :: Real a => ReadS a -> ReadS a
-readDec :: Integral a => ReadS a
-showEFloat :: RealFloat a => Maybe Int -> a -> ShowS
-lexDigits :: ReadS String
-showFloat :: RealFloat a => a -> ShowS
-readHex :: Integral a => ReadS a
-
-module IO
-hGetChar :: Handle -> IO Char
-hGetPosn :: Handle -> IO HandlePosn
-isUserError :: IOError -> Bool
-bracket_ :: IO a -> (a -> IO b) -> IO c -> IO c
-hIsEOF :: Handle -> IO Bool
-try :: IO a -> IO (Either IOError a)
-hGetContents :: Handle -> IO String
-hIsClosed :: Handle -> IO Bool
-isEOFError :: IOError -> Bool
-hGetLine :: Handle -> IO String
-hFileSize :: Handle -> IO Integer
-isEOF :: IO Bool
-isAlreadyInUseError :: IOError -> Bool
-hReady :: Handle -> IO Bool
-isPermissionError :: IOError -> Bool
-hPutStrLn :: Handle -> String -> IO ()
-hIsSeekable :: Handle -> IO Bool
-stdout :: Handle
-stderr :: Handle
-isIllegalOperation :: IOError -> Bool
-hClose :: Handle -> IO ()
-hPrint :: Show a => Handle -> a -> IO ()
-isFullError :: IOError -> Bool
-hIsReadable :: Handle -> IO Bool
-ioeGetErrorString :: IOError -> String
-hFlush :: Handle -> IO ()
-isAlreadyExistsError :: IOError -> Bool
-hLookAhead :: Handle -> IO Char
-ioeGetHandle :: IOError -> Maybe Handle
-hIsWritable :: Handle -> IO Bool
-bracket :: IO a -> (a -> IO b) -> (a -> IO c) -> IO c
-hPutStr :: Handle -> String -> IO ()
-hIsOpen :: Handle -> IO Bool
-hPutChar :: Handle -> Char -> IO ()
-hSetBuffering :: Handle -> BufferMode -> IO ()
-ioeGetFileName :: IOError -> Maybe FilePath
-stdin :: Handle
-isDoesNotExistError :: IOError -> Bool
-openFile :: FilePath -> IOMode -> IO Handle
-hGetBuffering :: Handle -> IO BufferMode
-hSeek :: Handle -> SeekMode -> Integer -> IO ()
-hWaitForInput :: Handle -> Int -> IO Bool
-hSetPosn :: HandlePosn -> IO ()
-
-module System
-exitFailure :: IO a
-getArgs :: IO [String]
-exitWith :: ExitCode -> IO a
-system :: String -> IO ExitCode
-getProgName :: IO String
-getEnv :: String -> IO String
-
-module CPUTime
-getCPUTime :: IO Integer
-cpuTimePrecision :: Integer
-
-module Random
-split :: RandomGen a => a -> (a,a)
-randoms :: (Random a, RandomGen b) => b -> [a]
-next :: RandomGen a => a -> (Int,a)
-getStdGen :: IO StdGen
-randomIO :: Random a => IO a
-setStdGen :: StdGen -> IO ()
-getStdRandom :: (StdGen -> (a, StdGen)) -> IO a
-randomRs :: (Random a, RandomGen b) => (a,a) -> b -> [a]
-randomRIO :: Random a => (a,a) -> IO a
-randomR :: (Random a, RandomGen b) => (a,a) -> b -> (a,b)
-newStdGen :: IO StdGen
-random :: (Random a, RandomGen b) => b -> (a,b)
-mkStdGen :: Int -> StdGen
-
-module Array
-accum :: Ix a => (b -> c -> b) -> Array a b -> [(a,c)] -> Array a b
-array :: Ix a => (a,a) -> [(a,b)] -> Array a b
-ixmap :: (Ix a, Ix b) => (a,a) -> (a -> b) -> Array b c -> Array a c
-bounds :: Ix a => Array a b -> (a,a)
-accumArray :: Ix a => (b -> c -> b) -> b -> (a,a) -> [(a,c)] -> Array a b
-elems :: Ix a => Array a b -> [b]
-listArray :: Ix a => (a,a) -> [b] -> Array a b
-(!) :: Ix a => Array a b -> a -> b
-(//) :: Ix a => Array a b -> [(a,b)] -> Array a b
-assocs :: Ix a => Array a b -> [(a,b)]
-indices :: Ix a => Array a b -> [a]
-
-module Time
-formatCalendarTime :: TimeLocale -> String -> CalendarTime -> String
-diffClockTimes :: ClockTime -> ClockTime -> TimeDiff
-getClockTime :: IO ClockTime
-addToClockTime :: TimeDiff -> ClockTime -> ClockTime
-toClockTime :: CalendarTime -> ClockTime
-toUTCTime :: ClockTime -> CalendarTime
-toCalendarTime :: ClockTime -> IO CalendarTime
-calendarTimeToString :: CalendarTime -> String
-
-module Locale
-defaultTimeLocale :: TimeLocale
-
-module Complex
-mkPolar :: RealFloat a => a -> a -> Complex a
-polar :: RealFloat a => Complex a -> (a,a)
-cis :: RealFloat a => a -> Complex a
-conjugate :: RealFloat a => Complex a -> Complex a
-phase :: RealFloat a => Complex a -> a
-magnitude :: RealFloat a => Complex a -> a
-imagPart :: RealFloat a => Complex a -> a
-(:+) :: RealFloat a => a -> a -> Complex a
-realPart :: RealFloat a => Complex a -> a
-
-module Monad
-msum :: MonadPlus a => [a b] -> a b
-zipWithM :: Monad a => (b -> c -> a d) -> [b] -> [c] -> a [d]
-filterM :: Monad a => (b -> a Bool) -> [b] -> a [b]
-mapAndUnzipM :: Monad a => (b -> a (c,d)) -> [b] -> a ([c],[d])
-liftM :: Monad a => (b -> c) -> a b -> a c
-foldM :: Monad a => (b -> c -> a b) -> b -> [c] -> a b
-ap :: Monad a => a (b -> c) -> a b -> a c
-zipWithM_ :: Monad a => (b -> c -> a d) -> [b] -> [c] -> a ()
-join :: Monad a => a (a b) -> a b
-liftM3 :: Monad a => (b -> c -> d -> e) -> a b -> a c -> a d -> a e
-when :: Monad a => Bool -> a () -> a ()
-guard :: MonadPlus a => Bool -> a ()
-liftM2 :: Monad a => (b -> c -> d) -> a b -> a c -> a d
-unless :: Monad a => Bool -> a () -> a ()
-liftM4 :: Monad a => (b -> c -> d -> e -> f) -> a b -> a c -> a d -> a e -> a f
-liftM5 :: Monad a => (b -> c -> d -> e -> f -> g) -> a b -> a c -> a d -> a e -> a f -> a g
-
-module Directory
-getPermissions :: FilePath -> IO Permissions
-setPermissions :: FilePath -> Permissions -> IO ()
-searchable :: Permissions -> Bool
-createDirectory :: FilePath -> IO ()
-removeFile :: FilePath -> IO ()
-writable :: Permissions -> Bool
-getModificationTime :: FilePath -> IO ClockTime
-executable :: Permissions -> Bool
-readable :: Permissions -> Bool
-renameDirectory :: FilePath -> FilePath -> IO ()
-doesDirectoryExist :: FilePath -> IO Bool
-getCurrentDirectory :: IO FilePath
-removeDirectory :: FilePath -> IO ()
-renameFile :: FilePath -> FilePath -> IO ()
-setCurrentDirectory :: FilePath -> IO ()
-doesFileExist :: FilePath -> IO Bool
-getDirectoryContents :: FilePath -> IO [FilePath]
-
-module Char
-showLitChar :: Char -> ShowS
-isUpper :: Char -> Bool
-isPrint :: Char -> Bool
-chr :: Int -> Char
-ord :: Char -> Int
-isDigit :: Char -> Bool
-toLower :: Char -> Char
-isOctDigit :: Char -> Bool
-digitToInt :: Char -> Int
-isSpace :: Char -> Bool
-toUpper :: Char -> Char
-isAscii :: Char -> Bool
-lexLitChar :: ReadS String
-isHexDigit :: Char -> Bool
-readLitChar :: ReadS Char
-isLatin1 :: a -> Bool
-isAlphaNum :: Char -> Bool
-intToDigit :: Int -> Char
-isControl :: Char -> Bool
-isLower :: Char -> Bool
-isAlpha :: Char -> Bool
-
-module Ratio
-approxRational :: RealFrac a => a -> a -> Rational
-denominator :: Integral a => Ratio a -> a
-(%) :: Integral a => a -> a -> Ratio a
-numerator :: Integral a => Ratio a -> a
-
-module Maybe
-isJust :: Maybe a -> Bool
-listToMaybe :: [a] -> Maybe a
-fromMaybe :: a -> Maybe a -> a
-isNothing :: Maybe a -> Bool
-fromJust :: Maybe a -> a
-mapMaybe :: (a -> Maybe b) -> [a] -> [b]
-maybeToList :: Maybe a -> [a]
-catMaybes :: [Maybe a] -> [a]
− scripts/hoogle/data/hihoo/hihoo.pl
@@ -1,202 +0,0 @@-#!/usr/bin/perl -w
-# hihoo - extract Hoogle .HOO information from GHC .hi interface files
-# by Gaal Yahas <gaal@forum2>
-
-use strict;
-use Getopt::Long;
-use File::Find;
-use Text::Balanced;
-
-our $VERSION = '0.07';
-
-# ChangeLog
-#
-# 0.08
-# - most of the required support for classes, only one subtest fails
-#   (emits `instance Class2 (Data2 a)` instead of
-#   `instance Eq a => Class2 (Data2 a)`) - how bad do we want this?
-#
-# 0.07
-# - pass all tests except the ones for classes
-# - parse data completely
-# - supress duplicate accessors from different variants
-# - newtype (processed just like data declarations, I hope that's good)
-#
-# 0.06
-# - dequalify all outputs, not just from function signatures.
-# - use a record-based iterator instead of parsing lines, bozhe moi!
-# - support operators
-# - improve data type parsing, including infix constructors and field accessors
-#
-# 0.05
-# - fix a bug in multi-line processing that caused some functions
-#   to be omitted
-# - handle instance declarations
-#
-# 0.04
-# - strip function dependencies from class signatures
-# - give up more gracefully on funky functions (?ref / {1})
-
-
-# Functions matching these patterns are considered to be internal GHC stuff.
-# "Of course, this is a heuristic, which is a fancy way of saying that
-# it doesn't work." -- MJD
-our @STOPWORDS = map { qr/$_/ } qw/^a[\d\s] ^lvl[\d\s] ^lvn[\d\s] ^\$/;
-
-# GHC types which don't need to be fully qualified.
-our @DEQUALIFY = map { qr/\b$_\./ } map { quotemeta }
-        qw/GHC.Base GHC.Conc GHC.IOBase GHC.Num GHC.Prim GHC.Read GHC.Show/;
-
-GetOptions \our %Config, qw(ghc|g=s);
-$Config{ghc} ||= 'ghc';
-
-for my $e (@ARGV) {
-    if (-d $e) { recurse($e) } else { do_process($e) }
-}
-exit 0;
-
-sub recurse {
-    find({ wanted => \&process, no_chdir => 1}, shift);
-    exit 0;
-}
-
-sub process {
-    do_process($File::Find::name); # ick globals
-}
-
-sub do_process {
-    my($file) = @_;
-    return unless $file =~ /\.hi$/;
-
-    my $info = mk_iface_stream($file);
-
-    print "-- $file\n";
-    my %operators;
-    while (defined($_ = $info->())) {
-    #print "[$_]\n";
-        /^((\S+)( :: [^{\n]+))/  && do { my $f = $operators{$2} ? "($2)" : $2;
-                                         printfunc("$f$3") unless stop($2) };
-        /^interface (\w+)/       && do { print "module $1\n" };
-        # why do i sometimes see "2 class" in the hi output?
-        /^\d* \s* (class.*)/sx   && do { process_class($1) };
-        /^type/                  && do { s/\s+/ /g; s/\s*Variances.*//; dprint($_) };
-        /^(instance .*) =/       && do { dprint($1) };
-        /^data|newtype/          && do { process_data($_) };
-        /^export Operators (.*)/ && do { load_operators($1, \%operators) };
-    }
-
-    print "\n";
-}
-
-sub load_operators {
-    my($ops, $store) = @_;
-    # --show-iface is redundant: infix data constructors are marked as
-    # such elsewhere, but also appear here. So let's strip 'em and handle
-    # them later, in context. This is a little hacky.
-    $ops =~ s/\S+\{.*?\}//g;
-    %$store = map { $_ => 1 } split /\s+/, $ops;
-}
-
-sub process_class {
-    my($class) = @_;
-    my($classname) = $class =~ /class \s* (.*?) \s* Var/sx or do {
-        warn "*** class declaration unknown:\n$class"; return };
-    dprint("class $classname");
-    $classname =~ s/.* => \s*//; # crude, but correct AFAIK
-    $class =~ s/\{-.*?-\}//g; # remove "{- has default method -}"
-    while ($class =~ s/(\S+) \s* :: \s* (.+?)\s*(?=(?:\S+\s*:)|$)//x) {
-        dprint("$1 :: $classname => $2");
-    }
-}
-
-sub process_data {
-    my($data) = @_;
-    my %seenfields;
-    (my($decl, $type, $variants) = $data =~ m{
-        ^(data|newtype) \s* (.*?) \s*
-        Variances .*?
-        = \s*
-        (.*) \s*             # constructors, with Stricts and Fields etc.
-    }sx) or do { warn "*** can't parse data or newtype declaration:\n$data"; return };
-    dprint("$decl $type");
-    for my $v (split /\s+\|\s+/, $variants) {
-        my($cons, $params, $infix, $stricts, $fields) = $v =~ m{
-            ^
-            (\S+)                       \s*  # Cons
-            (.*?)                       \s*  #       Int String (IO a)
-            (Infix)?                    \s*  #
-            (?:Stricts: \s* ([\s_!]*))? \s*  # !Int
-            (?:Fields:  \s* (.*))? \s*       # { x :: Num, y :: Num }
-            $
-        }x or do { warn "*** can't parse data declaration:\n$data"; return };
-        my @params  = psplit($params);
-        my @stricts = map { /^!/ ? '!' : "" } split /\s+/, ($stricts||'');
-        my @fields  = split /\s+/, ($fields||'');
-
-#::YY([$data, $cons, \@params, \@stricts, \@fields]) if $type eq 'Data1 a';
-        my $cons1 = $infix ? "($cons)" : $cons;
-        dprint("$cons1 :: ". join " -> ", @params, $type);
-        for (0 .. $#fields) {
-            dprint("$fields[$_] :: $type -> $params[$_]") unless
-                $seenfields{$fields[$_]}++;
-        }
-    }
-}
-
-sub psplit {
-    map { /^\(/ ? $_ : split }
-        Text::Balanced::extract_multiple(shift,
-            [ sub { Text::Balanced::extract_bracketed($_[0],"()") } ] );
-}
-
-sub mk_iface_stream {
-    my($file) = @_;
-    open my $fh, "$Config{ghc} --show-iface $file |" or die "open: $file: $!";
-    my $buf;
-    return sub {
-        return undef unless $fh;
-        #die "stream exhausted" unless $fh;
-        while (<$fh>) {
-            if (/^\S/ && $buf) {
-                my $tmp = $buf;      # "return $buf; $buf = $_" :-)
-                $buf = $_;
-                return $tmp;
-            }
-            $buf .= $_;
-        }
-        close $fh or die "close: $file: $!";
-        undef $fh;
-        return $buf;
-    }
-}
-
-
-sub dprint {
-    my(@strs) = @_;
-    for my $str (@strs) {
-        $str =~ y/\n//d;
-        $str =~ s/$_//g for @DEQUALIFY;
-    }
-    $strs[-1] =~ s/\s+$//;
-    print @strs, "\n";
-    #print ">>> ", @strs, "\n";
-}
-
-sub printfunc {
-    my($str) = @_;
-
-    if ($str =~ /\?ref|\{/) {
-        warn "*** Function too funky for us, please add this definition yourself:\n$str";
-        return;
-    }
-    
-    dprint($str);
-}
-
-sub stop {
-    my($word) = @_;
-    do { return 1 if $word =~ $_ } for @STOPWORDS;
-}
-sub ::Y { require YAML; YAML::Dump(@_) }
-sub ::YY { require Carp; Carp::confess(::Y(@_)) }
-
− scripts/hoogle/docs/builddocs.bat
@@ -1,3 +0,0 @@-md haddock
-haddock --html --title=Hoogle --odir=haddock --prologue=haddock.txt ..\src\Hoogle\*.hs
-
− scripts/hoogle/docs/file-format.txt
@@ -1,54 +0,0 @@-.HOO File Format
-================
-
-This document describes the file format for .hoo files
-
-These files are read by Hoogle to find out what functions are available
-
-
-Syntax
-------
-
-The file is a text file. Each line is one entry, there is no way to span a line over multiple lines. Blank lines are ignored. Any line in which the first character is a # is ignored, #'s appearing later on the same line are not comments. There is no indentation, all lines are trimmed before being examined.
-
-
-Module
-------
-
-The first content line of each file must be a module declaration. Once a module declaration is seen, all signatures after that are counted as being in that module. If another module declaration is given, then all subsequent lines are in that new module. This means that multiple hoo files concatentated are a valid hoo file.
-
-
-Declarations
-------------
-
-Some example declarations, if anything isn't clear ask.
-
-module Prelude
-module Data.Char
-
-instance Eq Bool
-instance (Eq a, Eq b) => Eq (a, b)
-
-True :: Bool
-False :: Bool
-
-data [] a
-: :: a -> [a] -> [] a
-[] :: [] a
-
-not :: Bool -> Bool
-+ :: Num a -> a -> a -> a
-
-class Eq
-class Eq a => Ord a
-
-== :: Eq a => a -> a -> Bool
-
-type String = [Char]
-
-
-Generators
-----------
-
-The main way to generate hoo files is using hi2hoo, which requires the module to be built with GHC first. A haddock output format is also being written.
-
− scripts/hoogle/docs/haddock.txt
@@ -1,3 +0,0 @@-This is the hoogle project, which is located at <http://haskell.org/hoogle>, and is (c) Neil Mitchell 2004-2005
-
-This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit <http://creativecommons.org/licenses/by-nc-sa/2.0/> or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
− scripts/hoogle/docs/todo.txt
@@ -1,18 +0,0 @@-Tidy up the parser
-  Remove conflicts
-  Fix the 2 unused rules
-  Check the output of curried functions is correct
-  Parse errors "a[", should give an error message
-
-
-Sort out the proper probabilities
-
-Allow functions to be matched partially
-
-Allow function argument reordering
-
-If no results are returned, state that, instead of no output
-
-I think the unification is wrong in some cases
-
-Class information, i.e. which types belong to which classes
− scripts/hoogle/misc/icons/icons.vsd

binary file changed (20992 → absent bytes)

− scripts/hoogle/misc/logo/hoogle.ppt

binary file changed (29184 → absent bytes)

− scripts/hoogle/misc/logo/hoogle.xar

binary file changed (47076 → absent bytes)

− scripts/hoogle/src/CmdLine.hs
@@ -1,1 +0,0 @@-import CmdLine.Main
− scripts/hoogle/src/CmdLine/Main.hs
@@ -1,181 +0,0 @@-{-
-    This file is part of Hoogle, (c) Neil Mitchell 2004-2005
-    http://www.cs.york.ac.uk/~ndm/hoogle/
-    
-    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License.
-    To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/
-    or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
--}
-
-{- |
-    Provides the 'main' function for the Console version.
-    Handles command line arguments.
--}
-
-module CmdLine.Main where
-
-import Hoogle.Hoogle
-import System.Environment
-import Data.List
-import Data.Maybe
-import Data.Char
-import System.Console.GetOpt
-import System.Directory
-
-
--- | The main function
-main :: IO ()
-main = do 
-        args <- getArgs
-        let newargs = map safeArrow args
-            (flags,query) = parseArgs newargs
-            
-            path = fromPath $ fromMaybe (Path "hoogle.txt") (find isPath flags)
-            verbose = Verbose `elem` flags
-            help = HelpMsg `elem` flags
-            color = Color `elem` flags
-            count = fromCount $ fromMaybe (Count 0) (find isCount flags)
-            
-            query2 = concat $ intersperse " " query
-            query3 = if help then "" else query2
-        
-        if null query3
-            then putStr helpMsg
-            else do
-                path2 <- checkPath path
-                if null path2
-                    then putStrLn $ "Could not find hoogle database, looked for: " ++ path
-                    else hoogle path2 verbose count color query3
-    where
-        safeArrow "-#" = " ->"
-        safeArrow "->" = " ->"
-        safeArrow xs   = map (\x -> if x == '#' then '>' else x) xs
-
-
-test x = hoogle "" True 10 x
-
-
--- | Invoke hoogle.
---   The first argument is the file to use as a data file.
---   The second is a verbose flag.
---   The third is the thing to search for
-hoogle :: FilePath -> Bool -> Int -> Bool -> String -> IO ()
-hoogle _ _ _ _ "" = putStr helpMsg
-hoogle p verbose count color x = 
-        case hoogleParseError search of
-            Just x -> putStrLn $ "Hoogle Error: " ++ x
-            Nothing -> 
-                do
-                    case hoogleSuggest False search of
-                        Just a -> putStrLn $ (if color then showTag else showText) a
-                        Nothing -> return ()
-                    if color
-                        then putStrLn $ "Searching for: " ++ showTag (hoogleSearch search)
-                        else return ()
-                    
-                    res <- if count == 0 then hoogleResults p search else hoogleRange p search 0 count
-                    case res of
-                        [] -> putStrLn "No matches found"
-                        xs -> putStr $ unlines $ map f xs
-    where
-        search = hoogleParse x
-    
-        f res = showResult color res ++
-                if verbose
-                then " @ " ++ show (resultScore res) ++ " " ++ show (resultInfo res)
-                else ""
-
-
-showResult :: Bool -> Result -> String
-showResult color (Result modu name typ _ _ _ _) =
-        (if null fmodu then "" else fmodu ++ ".") ++ f name ++ " :: " ++ f typ
-    where
-        fmodu = f modu
-        f x = if color then showTag x else showText x
-        
-
-showTag :: TagStr -> String
-showTag x = f [] x
-    where
-        f a (Str x) = x
-        f a (Tags xs) = concatMap (f a) xs
-        f a (Tag code x) = case getCode code of
-                            Nothing -> f a x
-                            Just val -> tag (val:a) ++ f (val:a) x ++ tag a
-        
-        getCode "b" = Just "1"
-        getCode "a" = Just "4"
-        getCode "u" = Just "4"
-        getCode [x] | x <= '6' && x >= '1' = Just ['3', x]
-        getCode _ = Nothing
-        
-        tag stack = chr 27 : '[' : (concat $ intersperse ";" $ ("0":reverse stack)) ++ "m"
-
-
--- | A help message to give the user, roughly what you get from hoogle --help
-helpMsg :: String
-helpMsg
-    = unlines $ [
-        "HOOGLE - Haskell API Search",
-        "(C) Neil Mitchell 2004-2006, York University, UK",
-        "",
-        usageInfo ("Usage: hoogle [OPTION...] search") opts,
-        
-        "examples:",
-        "  hoogle map",
-        "  hoogle (a -> b) -> [a] -> [b]",
-        "  hoogle [Char] -> [Bool]",
-        "",
-        "To aid when using certain consoles, -# is a synonym for ->",
-        "Suggestions/comments/bugs to ndm -AT- cs.york.ac.uk",
-        "A web version is available at www.cs.york.ac.uk/~ndm/hoogle/"
-        ]
-
-
-isPath (Path _) = True; isPath _ = False
-isCount (Count _) = True; isCount _ = False
-
-
--- | Data structure representing the falgs
-data Flag = Verbose -- ^ Should verbose info be given, mainly percentage match
-          | Path {fromPath :: FilePath} -- ^ Where to find the data file
-          | HelpMsg -- ^ Show the help message
-          | Count {fromCount :: Int}
-          | Color
-            deriving Eq
-
--- | The options available
-opts :: [OptDescr Flag]
-opts = [ Option ['v'] ["verbose"] (NoArg Verbose) "verbose results"
-       , Option ['n'] ["count"]   ((ReqArg (\n -> Count (read n))) "30") "number of results"
-       , Option ['l'] []          ((ReqArg (\p -> Path p)) "path/hoogle.txt") "path to hoogle.txt"
-       , Option ['h'] ["help"]    (NoArg HelpMsg) "help message"
-       , Option ['c'] ["color"]   (NoArg Color) "show with color"
-       ]
-
--- | Parse the arguments, give out appropriate messages
-parseArgs :: [String] -> ([Flag], [String])
-parseArgs argv = case getOpt Permute opts argv of
-        (flags,query,[]) -> (flags,query)
-        (_,_,err)        -> error $ concat err ++ helpMsg
-
-
-
--- | If a path is given check that it exists
---   If not then try relative to yourself
-checkPath :: FilePath -> IO FilePath
-checkPath file = do
-    b <- doesFileExist file
-    if b then return file else do
-        prog <- getProgName
-        path <- findExecutable prog
-        case path of
-            Nothing -> return ""
-            Just path -> do
-                file <- return $ setFileName path file
-                b <- doesFileExist file
-                if b then return file else return ""
-
-                    
-setFileName :: FilePath -> String -> FilePath
-setFileName path file = (reverse $ dropWhile (not . (`elem` "\\/")) $ reverse path) ++ file
− scripts/hoogle/src/Doc.hs
@@ -1,1 +0,0 @@-import Doc.Main
− scripts/hoogle/src/Doc/Main.hs
@@ -1,73 +0,0 @@-{-
-    This file is part of Hoogle, (c) Neil Mitchell 2004-2005
-    http://www.cs.york.ac.uk/~ndm/hoogle/
-    
-    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License.
-    To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/
-    or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
--}
-
-{- |
-    The Web interface, expects to be run as a CGI script.
-    This does not require Haskell CGI etc, it just dumps HTML to the console
--}
-
-module Doc.Main where
-
-import Web.CGI
-import Data.Maybe
-import Data.Char
-import Data.List
-
-
-main = do x <- cgiArgs
-          let modu = lookup "module" x
-              mode = lookup "mode" x
-
-              name = case lookup "name" x of
-                        Nothing -> ""
-                        Just ('(':xs) -> init xs
-                        Just x -> x
-          
-          page <- hoodoc mode modu name
-          putStr $ "Location: " ++ page ++ "\n\n"
-
-
-hoodoc :: Maybe String -> Maybe String -> String -> IO String
-
--- keywords are special
-hoodoc (Just "keyword") _ name = return $ "http://www.haskell.org/hawiki/Keywords#" ++ escape name
-
--- if you have no name, just direct them straight at the module page
-hoodoc _ (Just modu) "" = calcPage modu ""
-
--- haddock assigns different prefixes for each type
-hoodoc (Just "func") (Just modu) name = calcPage modu ("#v%3A" ++ escape name)
-hoodoc (Just _     ) (Just modu) name = calcPage modu ("#t%3A" ++ escape name)
-
-hoodoc _ _ _ = return failPage
-
-
-failPage = "nodocs.htm"
-haddockPrefix = "http://haskell.org/ghc/docs/latest/html/libraries/"
-wikiPrefix = "http://www.haskell.org/hawiki/LibraryDocumentation/"
-
-
-calcPage :: String -> String -> IO String
-calcPage modu suffix =
-    do x <- readFile "res/documentation.txt"
-       let xs = mapMaybe f $ lines x
-       return $ case lookup modu xs of
-           Just "wiki" -> wikiPrefix ++ modu ++ suffix
-           Just a -> haddockLoc a ++ map g modu ++ ".html" ++ suffix
-           Nothing -> failPage
-    where
-        f ys = case break (== '\t') ys of
-                   (a, [] ) -> Nothing
-                   (a, b) -> Just (a, dropWhile isSpace b)
-        
-        haddockLoc "gtk" = "http://haskell.org/gtk2hs/docs/gtk2hs-docs-0.9.10/"
-        haddockLoc a = haddockPrefix ++ a ++ "/"
-        
-        g '.' = '-'
-        g x   = x
− scripts/hoogle/src/Doc/res/documentation.txt
@@ -1,540 +0,0 @@-Control.Arrow		base-Control.Concurrent		base-Control.Concurrent.Chan		base-Control.Concurrent.MVar		base-Control.Concurrent.QSem		base-Control.Concurrent.QSemN		base-Control.Concurrent.STM		stm-Control.Concurrent.STM.TChan		stm-Control.Concurrent.STM.TMVar		stm-Control.Concurrent.STM.TVar		stm-Control.Concurrent.SampleVar		base-Control.Exception		base-Control.Monad		base-Control.Monad.Cont		mtl-Control.Monad.Error		mtl-Control.Monad.Fix		base-Control.Monad.Identity		mtl-Control.Monad.List		mtl-Control.Monad.RWS		mtl-Control.Monad.Reader		mtl-Control.Monad.ST		base-Control.Monad.ST.Lazy		base-Control.Monad.ST.Strict		base-Control.Monad.State		mtl-Control.Monad.Trans		mtl-Control.Monad.Writer		mtl-Control.Parallel		base-Control.Parallel.Strategies		base-Data.Array		base-Data.Array.Diff		base-Data.Array.IArray		base-Data.Array.IO		base-Data.Array.MArray		base-Data.Array.ST		base-Data.Array.Storable		base-Data.Array.Unboxed		base-Data.Bits		base-Data.Bool		base-Data.Char		base-Data.Complex		base-Data.Dynamic		base-Data.Either		base-Data.FiniteMap		base-Data.FunctorM		base-Data.Generics		base-Data.Generics.Aliases		base-Data.Generics.Basics		base-Data.Generics.Instances		base-Data.Generics.Schemes		base-Data.Generics.Text		base-Data.Generics.Twins		base-Data.Graph		base-Data.Graph.Inductive		fgl-Data.Graph.Inductive.Basic		fgl-Data.Graph.Inductive.Example		fgl-Data.Graph.Inductive.Graph		fgl-Data.Graph.Inductive.Graphviz		fgl-Data.Graph.Inductive.Internal.FiniteMap		fgl-Data.Graph.Inductive.Internal.Heap		fgl-Data.Graph.Inductive.Internal.Queue		fgl-Data.Graph.Inductive.Internal.RootPath		fgl-Data.Graph.Inductive.Internal.Thread		fgl-Data.Graph.Inductive.Monad		fgl-Data.Graph.Inductive.Monad.IOArray		fgl-Data.Graph.Inductive.NodeMap		fgl-Data.Graph.Inductive.Query		fgl-Data.Graph.Inductive.Query.ArtPoint		fgl-Data.Graph.Inductive.Query.BCC		fgl-Data.Graph.Inductive.Query.BFS		fgl-Data.Graph.Inductive.Query.DFS		fgl-Data.Graph.Inductive.Query.Dominators		fgl-Data.Graph.Inductive.Query.GVD		fgl-Data.Graph.Inductive.Query.Indep		fgl-Data.Graph.Inductive.Query.MST		fgl-Data.Graph.Inductive.Query.MaxFlow		fgl-Data.Graph.Inductive.Query.MaxFlow2		fgl-Data.Graph.Inductive.Query.Monad		fgl-Data.Graph.Inductive.Query.SP		fgl-Data.Graph.Inductive.Query.TransClos		fgl-Data.Graph.Inductive.Tree		fgl-Data.HashTable		base-Data.IORef		base-Data.Int		base-Data.IntMap		base-Data.IntSet		base-Data.Ix		base-Data.List		base-Data.Map		base-Data.Maybe		base-Data.Monoid		base-Data.PackedString		base-Data.Queue		base-Data.Ratio		base-Data.STRef		base-Data.STRef.Lazy		base-Data.STRef.Strict		base-Data.Set		base-Data.Tree		base-Data.Tuple		base-Data.Typeable		base-Data.Unique		base-Data.Version		base-Data.Word		base-Debug.QuickCheck		QuickCheck-Debug.QuickCheck.Batch		QuickCheck-Debug.QuickCheck.Poly		QuickCheck-Debug.QuickCheck.Utils		QuickCheck-Debug.Trace		base-Distribution.Compat.Directory		Cabal-Distribution.Compat.Exception		Cabal-Distribution.Compat.FilePath		Cabal-Distribution.Compat.RawSystem		Cabal-Distribution.Compat.ReadP		Cabal-Distribution.Extension		Cabal-Distribution.GetOpt		Cabal-Distribution.InstalledPackageInfo		Cabal-Distribution.License		Cabal-Distribution.Make		Cabal-Distribution.Package		Cabal-Distribution.PackageDescription		Cabal-Distribution.PreProcess		Cabal-Distribution.PreProcess.Unlit		Cabal-Distribution.Setup		Cabal-Distribution.Simple		Cabal-Distribution.Simple.Build		Cabal-Distribution.Simple.Configure		Cabal-Distribution.Simple.GHCPackageConfig		Cabal-Distribution.Simple.Install		Cabal-Distribution.Simple.LocalBuildInfo		Cabal-Distribution.Simple.Register		Cabal-Distribution.Simple.SrcDist		Cabal-Distribution.Simple.Utils		Cabal-Distribution.Version		Cabal-Foreign		base-Foreign.C		base-Foreign.C.Error		base-Foreign.C.String		base-Foreign.C.Types		base-Foreign.Concurrent		base-Foreign.ForeignPtr		base-Foreign.Marshal		base-Foreign.Marshal.Alloc		base-Foreign.Marshal.Array		base-Foreign.Marshal.Error		base-Foreign.Marshal.Pool		base-Foreign.Marshal.Utils		base-Foreign.Ptr		base-Foreign.StablePtr		base-Foreign.Storable		base-GHC.Conc		base-GHC.ConsoleHandler		base-GHC.Dotnet		base-GHC.Exts		base-GHC.Unicode		base-Graphics.HGL		HGL-Graphics.HGL.Core		HGL-Graphics.HGL.Draw		HGL-Graphics.HGL.Draw.Brush		HGL-Graphics.HGL.Draw.Font		HGL-Graphics.HGL.Draw.Monad		HGL-Graphics.HGL.Draw.Pen		HGL-Graphics.HGL.Draw.Picture		HGL-Graphics.HGL.Draw.Region		HGL-Graphics.HGL.Draw.Text		HGL-Graphics.HGL.Key		HGL-Graphics.HGL.Run		HGL-Graphics.HGL.Units		HGL-Graphics.HGL.Utils		HGL-Graphics.HGL.Window		HGL-Graphics.Rendering.OpenGL		OpenGL-Graphics.Rendering.OpenGL.GL		OpenGL-Graphics.Rendering.OpenGL.GL.Antialiasing		OpenGL-Graphics.Rendering.OpenGL.GL.BasicTypes		OpenGL-Graphics.Rendering.OpenGL.GL.BeginEnd		OpenGL-Graphics.Rendering.OpenGL.GL.Bitmaps		OpenGL-Graphics.Rendering.OpenGL.GL.BufferObjects		OpenGL-Graphics.Rendering.OpenGL.GL.Clipping		OpenGL-Graphics.Rendering.OpenGL.GL.ColorSum		OpenGL-Graphics.Rendering.OpenGL.GL.Colors		OpenGL-Graphics.Rendering.OpenGL.GL.CoordTrans		OpenGL-Graphics.Rendering.OpenGL.GL.DisplayLists		OpenGL-Graphics.Rendering.OpenGL.GL.Evaluators		OpenGL-Graphics.Rendering.OpenGL.GL.Feedback		OpenGL-Graphics.Rendering.OpenGL.GL.FlushFinish		OpenGL-Graphics.Rendering.OpenGL.GL.Fog		OpenGL-Graphics.Rendering.OpenGL.GL.Framebuffer		OpenGL-Graphics.Rendering.OpenGL.GL.Hints		OpenGL-Graphics.Rendering.OpenGL.GL.LineSegments		OpenGL-Graphics.Rendering.OpenGL.GL.PerFragment		OpenGL-Graphics.Rendering.OpenGL.GL.PixelRectangles		OpenGL-Graphics.Rendering.OpenGL.GL.PixelRectangles.ColorTable		OpenGL-Graphics.Rendering.OpenGL.GL.PixelRectangles.Convolution		OpenGL-Graphics.Rendering.OpenGL.GL.PixelRectangles.Histogram		OpenGL-Graphics.Rendering.OpenGL.GL.PixelRectangles.Minmax		OpenGL-Graphics.Rendering.OpenGL.GL.PixelRectangles.PixelMap		OpenGL-Graphics.Rendering.OpenGL.GL.PixelRectangles.PixelStorage		OpenGL-Graphics.Rendering.OpenGL.GL.PixelRectangles.PixelTransfer		OpenGL-Graphics.Rendering.OpenGL.GL.PixelRectangles.Rasterization		OpenGL-Graphics.Rendering.OpenGL.GL.Points		OpenGL-Graphics.Rendering.OpenGL.GL.Polygons		OpenGL-Graphics.Rendering.OpenGL.GL.RasterPos		OpenGL-Graphics.Rendering.OpenGL.GL.ReadCopyPixels		OpenGL-Graphics.Rendering.OpenGL.GL.Rectangles		OpenGL-Graphics.Rendering.OpenGL.GL.SavingState		OpenGL-Graphics.Rendering.OpenGL.GL.Selection		OpenGL-Graphics.Rendering.OpenGL.GL.StateVar		OpenGL-Graphics.Rendering.OpenGL.GL.StringQueries		OpenGL-Graphics.Rendering.OpenGL.GL.Texturing		OpenGL-Graphics.Rendering.OpenGL.GL.Texturing.Application		OpenGL-Graphics.Rendering.OpenGL.GL.Texturing.Environments		OpenGL-Graphics.Rendering.OpenGL.GL.Texturing.Objects		OpenGL-Graphics.Rendering.OpenGL.GL.Texturing.Parameters		OpenGL-Graphics.Rendering.OpenGL.GL.Texturing.Queries		OpenGL-Graphics.Rendering.OpenGL.GL.Texturing.Specification		OpenGL-Graphics.Rendering.OpenGL.GL.VertexArrays		OpenGL-Graphics.Rendering.OpenGL.GL.VertexSpec		OpenGL-Graphics.Rendering.OpenGL.GLU		OpenGL-Graphics.Rendering.OpenGL.GLU.Errors		OpenGL-Graphics.Rendering.OpenGL.GLU.Initialization		OpenGL-Graphics.Rendering.OpenGL.GLU.Matrix		OpenGL-Graphics.Rendering.OpenGL.GLU.Mipmapping		OpenGL-Graphics.Rendering.OpenGL.GLU.NURBS		OpenGL-Graphics.Rendering.OpenGL.GLU.Quadrics		OpenGL-Graphics.Rendering.OpenGL.GLU.Tessellation		OpenGL-Graphics.SOE		HGL-Graphics.UI.GLUT		GLUT-Graphics.UI.GLUT.Begin		GLUT-Graphics.UI.GLUT.Callbacks		GLUT-Graphics.UI.GLUT.Callbacks.Global		GLUT-Graphics.UI.GLUT.Callbacks.Window		GLUT-Graphics.UI.GLUT.Colormap		GLUT-Graphics.UI.GLUT.Debugging		GLUT-Graphics.UI.GLUT.DeviceControl		GLUT-Graphics.UI.GLUT.Fonts		GLUT-Graphics.UI.GLUT.GameMode		GLUT-Graphics.UI.GLUT.Initialization		GLUT-Graphics.UI.GLUT.Menu		GLUT-Graphics.UI.GLUT.Objects		GLUT-Graphics.UI.GLUT.Overlay		GLUT-Graphics.UI.GLUT.State		GLUT-Graphics.UI.GLUT.Window		GLUT-Graphics.X11.Types		X11-Graphics.X11.Xlib		X11-Graphics.X11.Xlib.Atom		X11-Graphics.X11.Xlib.Color		X11-Graphics.X11.Xlib.Context		X11-Graphics.X11.Xlib.Display		X11-Graphics.X11.Xlib.Event		X11-Graphics.X11.Xlib.Font		X11-Graphics.X11.Xlib.Misc		X11-Graphics.X11.Xlib.Region		X11-Graphics.X11.Xlib.Screen		X11-Graphics.X11.Xlib.Types		X11-Graphics.X11.Xlib.Window		X11-Language.Haskell.Parser		haskell-src-Language.Haskell.Pretty		haskell-src-Language.Haskell.Syntax		haskell-src-Language.Haskell.TH		template-haskell-Language.Haskell.TH.Lib		template-haskell-Language.Haskell.TH.Ppr		template-haskell-Language.Haskell.TH.PprLib		template-haskell-Language.Haskell.TH.Syntax		template-haskell-Network		network-Network.BSD		network-Network.CGI		network-Network.Socket		network-Network.URI		network-Numeric		base-Prelude		base-System.CPUTime		base-System.Cmd		base-System.Console.GetOpt		base-System.Console.Readline		readline-System.Console.SimpleLineEditor		readline-System.Directory		base-System.Environment		base-System.Exit		base-System.IO		base-System.IO.Error		base-System.IO.Unsafe		base-System.Info		base-System.Locale		base-System.Mem		base-System.Mem.StableName		base-System.Mem.Weak		base-System.Posix		unix-System.Posix.Directory		unix-System.Posix.DynamicLinker		unix-System.Posix.DynamicLinker.Module		unix-System.Posix.DynamicLinker.Prim		unix-System.Posix.Env		unix-System.Posix.Error		unix-System.Posix.Files		unix-System.Posix.IO		unix-System.Posix.Process		unix-System.Posix.Resource		unix-System.Posix.Signals		base-System.Posix.Signals.Exts		unix-System.Posix.Temp		unix-System.Posix.Terminal		unix-System.Posix.Time		unix-System.Posix.Types		base-System.Posix.Unistd		unix-System.Posix.User		unix-System.Process		base-System.Random		base-System.Time		base-Test.HUnit		HUnit-Test.HUnit.Base		HUnit-Test.HUnit.Lang		HUnit-Test.HUnit.Terminal		HUnit-Test.HUnit.Text		HUnit-Test.QuickCheck		QuickCheck-Test.QuickCheck.Batch		QuickCheck-Test.QuickCheck.Poly		QuickCheck-Test.QuickCheck.Utils		QuickCheck-Text.Html		base-Text.Html.BlockTable		base-Text.ParserCombinators.Parsec		parsec-Text.ParserCombinators.Parsec.Char		parsec-Text.ParserCombinators.Parsec.Combinator		parsec-Text.ParserCombinators.Parsec.Error		parsec-Text.ParserCombinators.Parsec.Expr		parsec-Text.ParserCombinators.Parsec.Language		parsec-Text.ParserCombinators.Parsec.Perm		parsec-Text.ParserCombinators.Parsec.Pos		parsec-Text.ParserCombinators.Parsec.Prim		parsec-Text.ParserCombinators.Parsec.Token		parsec-Text.ParserCombinators.ReadP		base-Text.ParserCombinators.ReadPrec		base-Text.PrettyPrint		base-Text.PrettyPrint.HughesPJ		base-Text.Printf		base-Text.Read		base-Text.Read.Lex		base-Text.Regex		base-Text.Regex.Posix		base-Text.Show		base-Text.Show.Functions		base-Ix	wiki-List	haskell98-Numeric	haskell98-IO	haskell98-System	haskell98-CPUTime	wiki-Random	haskell98-Array	haskell98-Time	haskell98-Locale	haskell98-Complex	haskell98-Monad	haskell98-Directory	haskell98-Char	haskell98-Ratio	haskell98-Maybe	haskell98-Graphics.Rendering.Cairo	gtk-Graphics.Rendering.Cairo.Matrix	gtk-Graphics.UI.Gtk	gtk-Graphics.UI.Gtk.Abstract.Bin	gtk-Graphics.UI.Gtk.Abstract.Box	gtk-Graphics.UI.Gtk.Abstract.ButtonBox	gtk-Graphics.UI.Gtk.Abstract.Container	gtk-Graphics.UI.Gtk.Abstract.Misc	gtk-Graphics.UI.Gtk.Abstract.Object	gtk-Graphics.UI.Gtk.Abstract.Paned	gtk-Graphics.UI.Gtk.Abstract.Range	gtk-Graphics.UI.Gtk.Abstract.Scale	gtk-Graphics.UI.Gtk.Abstract.Scrollbar	gtk-Graphics.UI.Gtk.Abstract.Separator	gtk-Graphics.UI.Gtk.Abstract.Widget	gtk-Graphics.UI.Gtk.ActionMenuToolbar.Action	gtk-Graphics.UI.Gtk.ActionMenuToolbar.ActionGroup	gtk-Graphics.UI.Gtk.ActionMenuToolbar.RadioAction	gtk-Graphics.UI.Gtk.ActionMenuToolbar.ToggleAction	gtk-Graphics.UI.Gtk.ActionMenuToolbar.UIManager	gtk-Graphics.UI.Gtk.Buttons.Button	gtk-Graphics.UI.Gtk.Buttons.CheckButton	gtk-Graphics.UI.Gtk.Buttons.RadioButton	gtk-Graphics.UI.Gtk.Buttons.ToggleButton	gtk-Graphics.UI.Gtk.Cairo	gtk-Graphics.UI.Gtk.Display.AccelLabel	gtk-Graphics.UI.Gtk.Display.Image	gtk-Graphics.UI.Gtk.Display.Label	gtk-Graphics.UI.Gtk.Display.ProgressBar	gtk-Graphics.UI.Gtk.Display.Statusbar	gtk-Graphics.UI.Gtk.Embedding.Embedding	gtk-Graphics.UI.Gtk.Embedding.Plug	gtk-Graphics.UI.Gtk.Embedding.Socket	gtk-Graphics.UI.Gtk.Entry.Editable	gtk-Graphics.UI.Gtk.Entry.Entry	gtk-Graphics.UI.Gtk.Entry.EntryCompletion	gtk-Graphics.UI.Gtk.Entry.HScale	gtk-Graphics.UI.Gtk.Entry.SpinButton	gtk-Graphics.UI.Gtk.Entry.VScale	gtk-Graphics.UI.Gtk.Gdk.DrawWindow	gtk-Graphics.UI.Gtk.Gdk.Drawable	gtk-Graphics.UI.Gtk.Gdk.Enums	gtk-Graphics.UI.Gtk.Gdk.Events	gtk-Graphics.UI.Gtk.Gdk.GC	gtk-Graphics.UI.Gtk.Gdk.Gdk	gtk-Graphics.UI.Gtk.Gdk.Keys	gtk-Graphics.UI.Gtk.Gdk.Pixbuf	gtk-Graphics.UI.Gtk.Gdk.Pixmap	gtk-Graphics.UI.Gtk.Gdk.Region	gtk-Graphics.UI.Gtk.General.Enums	gtk-Graphics.UI.Gtk.General.General	gtk-Graphics.UI.Gtk.General.IconFactory	gtk-Graphics.UI.Gtk.General.StockItems	gtk-Graphics.UI.Gtk.General.Structs	gtk-Graphics.UI.Gtk.General.Style	gtk-Graphics.UI.Gtk.Glade	gtk-Graphics.UI.Gtk.Layout.Alignment	gtk-Graphics.UI.Gtk.Layout.AspectFrame	gtk-Graphics.UI.Gtk.Layout.Expander	gtk-Graphics.UI.Gtk.Layout.Fixed	gtk-Graphics.UI.Gtk.Layout.HBox	gtk-Graphics.UI.Gtk.Layout.HButtonBox	gtk-Graphics.UI.Gtk.Layout.HPaned	gtk-Graphics.UI.Gtk.Layout.Layout	gtk-Graphics.UI.Gtk.Layout.Notebook	gtk-Graphics.UI.Gtk.Layout.Table	gtk-Graphics.UI.Gtk.Layout.VBox	gtk-Graphics.UI.Gtk.Layout.VButtonBox	gtk-Graphics.UI.Gtk.Layout.VPaned	gtk-Graphics.UI.Gtk.MenuComboToolbar.CheckMenuItem	gtk-Graphics.UI.Gtk.MenuComboToolbar.Combo	gtk-Graphics.UI.Gtk.MenuComboToolbar.ComboBox	gtk-Graphics.UI.Gtk.MenuComboToolbar.ComboBoxEntry	gtk-Graphics.UI.Gtk.MenuComboToolbar.ImageMenuItem	gtk-Graphics.UI.Gtk.MenuComboToolbar.Menu	gtk-Graphics.UI.Gtk.MenuComboToolbar.MenuBar	gtk-Graphics.UI.Gtk.MenuComboToolbar.MenuItem	gtk-Graphics.UI.Gtk.MenuComboToolbar.MenuShell	gtk-Graphics.UI.Gtk.MenuComboToolbar.MenuToolButton	gtk-Graphics.UI.Gtk.MenuComboToolbar.OptionMenu	gtk-Graphics.UI.Gtk.MenuComboToolbar.RadioMenuItem	gtk-Graphics.UI.Gtk.MenuComboToolbar.RadioToolButton	gtk-Graphics.UI.Gtk.MenuComboToolbar.SeparatorMenuItem	gtk-Graphics.UI.Gtk.MenuComboToolbar.SeparatorToolItem	gtk-Graphics.UI.Gtk.MenuComboToolbar.TearoffMenuItem	gtk-Graphics.UI.Gtk.MenuComboToolbar.ToggleToolButton	gtk-Graphics.UI.Gtk.MenuComboToolbar.ToolButton	gtk-Graphics.UI.Gtk.MenuComboToolbar.ToolItem	gtk-Graphics.UI.Gtk.MenuComboToolbar.Toolbar	gtk-Graphics.UI.Gtk.Misc.Adjustment	gtk-Graphics.UI.Gtk.Misc.Arrow	gtk-Graphics.UI.Gtk.Misc.Calendar	gtk-Graphics.UI.Gtk.Misc.DrawingArea	gtk-Graphics.UI.Gtk.Misc.EventBox	gtk-Graphics.UI.Gtk.Misc.HandleBox	gtk-Graphics.UI.Gtk.Misc.SizeGroup	gtk-Graphics.UI.Gtk.Misc.Tooltips	gtk-Graphics.UI.Gtk.Misc.Viewport	gtk-Graphics.UI.Gtk.Mogul	gtk-Graphics.UI.Gtk.Mogul.GetWidget	gtk-Graphics.UI.Gtk.Mogul.MDialog	gtk-Graphics.UI.Gtk.Mogul.NewWidget	gtk-Graphics.UI.Gtk.Mogul.TreeList	gtk-Graphics.UI.Gtk.Mogul.WidgetTable	gtk-Graphics.UI.Gtk.MozEmbed	gtk-Graphics.UI.Gtk.Multiline.TextBuffer	gtk-Graphics.UI.Gtk.Multiline.TextIter	gtk-Graphics.UI.Gtk.Multiline.TextMark	gtk-Graphics.UI.Gtk.Multiline.TextTag	gtk-Graphics.UI.Gtk.Multiline.TextTagTable	gtk-Graphics.UI.Gtk.Multiline.TextView	gtk-Graphics.UI.Gtk.Ornaments.Frame	gtk-Graphics.UI.Gtk.Ornaments.HSeparator	gtk-Graphics.UI.Gtk.Ornaments.VSeparator	gtk-Graphics.UI.Gtk.Pango.Context	gtk-Graphics.UI.Gtk.Pango.Enums	gtk-Graphics.UI.Gtk.Pango.Font	gtk-Graphics.UI.Gtk.Pango.Layout	gtk-Graphics.UI.Gtk.Pango.Markup	gtk-Graphics.UI.Gtk.Pango.Rendering	gtk-Graphics.UI.Gtk.Scrolling.HScrollbar	gtk-Graphics.UI.Gtk.Scrolling.ScrolledWindow	gtk-Graphics.UI.Gtk.Scrolling.VScrollbar	gtk-Graphics.UI.Gtk.Selectors.ColorButton	gtk-Graphics.UI.Gtk.Selectors.ColorSelection	gtk-Graphics.UI.Gtk.Selectors.ColorSelectionDialog	gtk-Graphics.UI.Gtk.Selectors.FileChooser	gtk-Graphics.UI.Gtk.Selectors.FileChooserButton	gtk-Graphics.UI.Gtk.Selectors.FileChooserDialog	gtk-Graphics.UI.Gtk.Selectors.FileChooserWidget	gtk-Graphics.UI.Gtk.Selectors.FileFilter	gtk-Graphics.UI.Gtk.Selectors.FileSelection	gtk-Graphics.UI.Gtk.Selectors.FontButton	gtk-Graphics.UI.Gtk.Selectors.FontSelection	gtk-Graphics.UI.Gtk.Selectors.FontSelectionDialog	gtk-Graphics.UI.Gtk.SourceView	gtk-Graphics.UI.Gtk.SourceView.SourceBuffer	gtk-Graphics.UI.Gtk.SourceView.SourceIter	gtk-Graphics.UI.Gtk.SourceView.SourceLanguage	gtk-Graphics.UI.Gtk.SourceView.SourceLanguagesManager	gtk-Graphics.UI.Gtk.SourceView.SourceMarker	gtk-Graphics.UI.Gtk.SourceView.SourceStyleScheme	gtk-Graphics.UI.Gtk.SourceView.SourceTag	gtk-Graphics.UI.Gtk.SourceView.SourceTagStyle	gtk-Graphics.UI.Gtk.SourceView.SourceTagTable	gtk-Graphics.UI.Gtk.SourceView.SourceView	gtk-Graphics.UI.Gtk.TreeList.CellRenderer	gtk-Graphics.UI.Gtk.TreeList.CellRendererPixbuf	gtk-Graphics.UI.Gtk.TreeList.CellRendererText	gtk-Graphics.UI.Gtk.TreeList.CellRendererToggle	gtk-Graphics.UI.Gtk.TreeList.CellView	gtk-Graphics.UI.Gtk.TreeList.IconView	gtk-Graphics.UI.Gtk.TreeList.ListStore	gtk-Graphics.UI.Gtk.TreeList.TreeIter	gtk-Graphics.UI.Gtk.TreeList.TreeModel	gtk-Graphics.UI.Gtk.TreeList.TreeModelSort	gtk-Graphics.UI.Gtk.TreeList.TreeSelection	gtk-Graphics.UI.Gtk.TreeList.TreeStore	gtk-Graphics.UI.Gtk.TreeList.TreeView	gtk-Graphics.UI.Gtk.TreeList.TreeViewColumn	gtk-Graphics.UI.Gtk.Windows.AboutDialog	gtk-Graphics.UI.Gtk.Windows.Dialog	gtk-Graphics.UI.Gtk.Windows.Window	gtk-Graphics.UI.Gtk.Windows.WindowGroup	gtk-System.Glib	gtk-System.Glib.Attributes	gtk-System.Glib.FFI	gtk-System.Glib.Flags	gtk-System.Glib.GError	gtk-System.Glib.GList	gtk-System.Glib.GObject	gtk-System.Glib.GParameter	gtk-System.Glib.GType	gtk-System.Glib.GTypeConstants	gtk-System.Glib.GValue	gtk-System.Glib.GValueTypes	gtk-System.Glib.MainLoop	gtk-System.Glib.Properties	gtk-System.Glib.Signals	gtk-System.Glib.StoreValue	gtk-System.Glib.Types	gtk-System.Glib.UTFString	gtk-System.Gnome.GConf	gtk-System.Gnome.GConf.GConfClient	gtk-System.Gnome.GConf.GConfValue	gtk
− scripts/hoogle/src/Hoogle/Database.hs
@@ -1,74 +0,0 @@-{-
-    This file is part of Hoogle, (c) Neil Mitchell 2004-2005
-    http://www.cs.york.ac.uk/~ndm/hoogle/
-    
-    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License.
-    To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/
-    or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
--}
-
-module Hoogle.Database(
-    Database(..), 
-    loadDatabase
-    ) where
-
-import Data.Maybe
-import Data.List
-
-import Hoogle.TypeSig
-import Hoogle.Parser
-import Hoogle.Lexer
-import Hoogle.General
-
-import Hoogle.MatchName
-import Hoogle.MatchType
-import Hoogle.TypeAlias
-import Hoogle.MatchClass
-
-
--- | An abstract data type
-data Database = Database
-    {
-        aliases :: AliasTable,
-        names :: NameTable,
-        types :: TypeTable,
-        classes :: ClassTable
-    }
-    deriving Show
-    
-
--- | load a text file into a 'Database'
-loadTextfile :: String -> Database
-loadTextfile x = Database {
-        aliases = buildAlias $ filter isTypeAlias items,
-        names = buildName $ map ((,) []) modules ++ modnamed,
-        types = buildType $ filter (isFunc . snd) modnamed,
-        classes = buildClass $ filter isInstance items
-        }
-    where
-        -- all the items in the file
-        items = catLefts $ map parser $ filter validLine $ lines x
-        
-        (instances, namedItems) = partition isInstance items
-        (modules, modnamed) = modulify namedItems
-        
-
--- take a list of items, and return those which are modules
--- and tag every other item with its module
-modulify :: [Item] -> ([Item], [(ModuleName, Item)])
-modulify xs = f [] xs
-    where
-        f _ (Module x:xs) = (Module x:a, b)
-            where (a,b) = f x xs
-            
-        f m (x:xs) = (a, (m,x):b)
-            where (a,b) = f m xs
-        
-        f _ [] = ([], [])
-
-
--- | Load a database from a file
---   perform all cache'ing requried
-loadDatabase :: String -> IO Database
-loadDatabase file = do x <- readFile file
-                       return $ loadTextfile x
− scripts/hoogle/src/Hoogle/General.hs
@@ -1,68 +0,0 @@-{-
-    This file is part of Hoogle, (c) Neil Mitchell 2004-2005
-    http://www.cs.york.ac.uk/~ndm/hoogle/
-    
-    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License.
-    To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/
-    or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
--}
-
-{-|
-    General utilities
--}
-module Hoogle.General where
-
-import Data.List
-
--- | If anyone of them returns Nothing, the whole thing does
-mapMaybeAll :: (a -> Maybe b) -> [a] -> Maybe [b]
-mapMaybeAll f xs = g [] xs
-    where
-        g acc [] = Just (reverse acc)
-        g acc (x:xs) = case f x of
-                           Just a -> g (a:acc) xs
-                           Nothing -> Nothing
-
-
-concatMapMaybeAll :: (a -> Maybe [b]) -> [a] -> Maybe [b]
-concatMapMaybeAll f xs = case mapMaybeAll f xs of
-                             Just a -> Just $ concat a
-                             Nothing -> Nothing
-
-
-idMaybeAll = mapMaybeAll id
-concatIdMaybeAll = concatMapMaybeAll id
-
-
-
--- | pick all subsets (maintaining order) with a length of n
---   n must be greater or equal to the length of the list passed in
-selection :: Int -> [a] -> [[a]]
-selection n xs = remove (len-n) len [] xs
-    where
-        len = length xs
-        
-        remove lrem lxs done todo =
-                if lrem == lxs then [reverse done]
-                else if null todo then []
-                else remove lrem (lxs-1) (t:done) odo ++ remove (lrem-1) (lxs-1) done odo
-            where (t:odo) = todo
-
-
-
--- | all permutations of a list
-permute :: [a] -> [[a]]
-permute [] = [[]]
-permute (x:xs) = concat $ map (\a -> zipWith f (inits a) (tails a)) (permute xs)
-    where
-        f a b = a ++ [x] ++ b
-
-
-
-catLefts :: [Either a b] -> [a]
-catLefts (Left x:xs) = x : catLefts xs
-catLefts (_:xs) = catLefts xs
-catLefts [] = []
-
-
-fromLeft (Left x) = x
− scripts/hoogle/src/Hoogle/Hoogle.hs
@@ -1,77 +0,0 @@-
-module Hoogle.Hoogle(
-    hoogleParse, hoogleParseError, hoogleSearch, hoogleSuggest, hoogleResults, hoogleRange,
-    Search, module Hoogle.Result
-    ) where
-
-import Hoogle.Search
-import Hoogle.Result
-import Hoogle.Match
-import Hoogle.TypeSig
-
-import Data.List
-import Data.Char
-
-
-hoogleParse :: String -> Search
-hoogleParse = parseSearch
-
-
-hoogleParseError :: Search -> Maybe String
-hoogleParseError (Search _ (SearchError x)) = Just x
-hoogleParseError _ = Nothing
-
-
-hoogleSearch :: Search -> TagStr
-hoogleSearch (Search _ (SearchType x)) = showTypeTags x [1..]
-hoogleSearch (Search _ (SearchName x)) = Tag "b" $ Str x
-hoogleSearch (Search x _) = Str x
-
-
-
-hoogleSuggest :: Bool -> Search -> Maybe TagStr
-
-hoogleSuggest _ (Search _ (SearchType (c,t))) |
-        any dubiousVar (allTVar t) = Just $ Tags
-        [Str "Did you mean: ", Tag "a" (Tags $ f $ showConType (c, mapUnbound safeVar t))]
-    where
-        dubiousVar x = length x > 1
-        safeVar x | dubiousVar x = TLit $ '{' : toUpper (head x) : tail x ++ "}"
-                  | otherwise = TVar x
-        
-        f xs = Str a : (if null b then [] else Tag "b" (Str c) : f (safeTail d))
-            where
-                (a,b) = break (== '{') xs
-                (c,d) = break (== '}') (tail b)
-                
-                safeTail [] = []
-                safeTail (x:xs) = xs
-        
-{-
-hoogleSuggest True (SearchName xs@(_:_:_)) = Just $ Tags
-        ["Tip: To search for a type, do "
-        ,Tag "a" (Str $ ":: " ++ concat (intersperse " " xs))]
--}
-
-hoogleSuggest _ (Search _ (SearchName (x:xs))) | isDigit x =
-        Just $ Str "Remember, I have no notion of numbers"
-
-hoogleSuggest _ (Search _ (SearchName x)) | '\"' `elem` x =
-        Just $ Str "Remember, I have no notion of quotes"
-
-hoogleSuggest True (Search _ (SearchName xs)) | xs == "google" =
-        Just $ Tags [Tag "a" (Str "http://www.google.com/"), Str " rocks!"]
-
-hoogleSuggest True (Search _ (SearchName (x:xs))) | xs == "oogle" =
-        Just $ Str "Can't think of anything more interesting to search for?"
-
-hoogleSuggest _ _ = Nothing
-
-
-
-
-hoogleResults :: FilePath -> Search -> IO [Result]
-hoogleResults p (Search _ x) = matchOrdered p x
-
-hoogleRange :: FilePath -> Search -> Int -> Int -> IO [Result]
-hoogleRange p (Search _ x) = matchRange p x
− scripts/hoogle/src/Hoogle/Lexer.hs
@@ -1,97 +0,0 @@-{-
-    This file is part of Hoogle, (c) Neil Mitchell 2004-2005
-    http://www.cs.york.ac.uk/~ndm/hoogle/
-    
-    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License.
-    To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/
-    or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
--}
-
-{- |
-    A very basic lexer, splits things up into various 'Lexeme' pieces.
-    Uses the underlying Haskell lex function.
--}
-
-module Hoogle.Lexer (
-    Lexeme(..),
-    lexer
-    ) where
-
-import Prelude
-import Data.Char
-
--- | The data structure for a lexeme
-data Lexeme = OpenSquare  -- ^ \[
-            | ShutSquare  -- ^ \]
-            | OpenRound   -- ^ \(
-            | ShutRound   -- ^ \)
-            | Comma       -- ^ \,
-            | LineArrow   -- ^ \->
-            | EqArrow     -- ^ \=>
-            | EqSymbol    -- ^ \=
-            | TypeColon   -- ^ \::
-            | ExSymbol    -- ^ \!
-            | TypeName String -- ^ Ctor
-            | VarName String  -- ^ func
-            deriving (Eq)
-
-
-instance Show Lexeme where
-    show OpenSquare  = "["
-    show ShutSquare  = "]"
-    show OpenRound   = "("
-    show ShutRound   = ")"
-    show Comma       = ","
-    show LineArrow   = "->"
-    show EqArrow     = "=>"
-    show EqSymbol    = "="
-    show TypeColon   = "::"
-    show ExSymbol    = "!"
-    show (TypeName x) = x
-    show (VarName  x) = x
-
-
--- | The main lexer
-lexer :: String -> Either [Lexeme] String
-lexer ('(':xs) | all isSymbolChar a = 
-        if null bs then Right "Parse Error: Missing closing bracket ')'"
-        else case lexRest [] (tail bs) of
-                  Left x -> Left $ VarName ('(':a++")") : x
-                  Right x -> Right x
-    where (a,bs) = break (== ')') xs
-    
-lexer x = lexRest [] x
-
-
-isSymbolChar x = not (isSpace x) &&
-                 not (x == ',') &&
-                 not (isAlphaNum x) &&
-                 not (x == '_')
-
-
-lexRest :: [Lexeme] -> String -> Either [Lexeme] String
-lexRest acc (' ':xs) = lexRest acc xs
-lexRest acc ('(':')':xs) = lexRest (TypeName "()":acc) xs
-lexRest acc ('-':'>':xs) = lexRest (LineArrow  :acc) xs
-lexRest acc ('=':'>':xs) = lexRest (EqArrow    :acc) xs
-lexRest acc (':':':':xs) = lexRest (TypeColon  :acc) xs
-lexRest acc ('=':xs)     = lexRest (EqSymbol   :acc) xs
-lexRest acc ('!':xs)     = lexRest (ExSymbol   :acc) xs
-lexRest acc ('[':xs)     = lexRest (OpenSquare :acc) xs
-lexRest acc (']':xs)     = lexRest (ShutSquare :acc) xs
-lexRest acc ('(':xs)     = lexRest (OpenRound  :acc) xs
-lexRest acc (')':xs)     = lexRest (ShutRound  :acc) xs
-lexRest acc (',':xs)     = lexRest (Comma      :acc) xs
-lexRest acc (x:xs) | x == '_'      || (x >= 'a' && x <= 'z') = lexRest (VarName  a:acc) b
-                   | x `elem` "#?" || (x >= 'A' && x <= 'Z') = lexRest (TypeName a:acc) b
-                   where (a, b) = lexWord [x] xs
-lexRest acc (x:xs) = Right $ "Parse Error: Unexpected character '" ++ take 10 (x:xs) ++ "'"
-lexRest acc [] = Left $ reverse acc
-
-
-lexWord :: String -> String -> (String, String)
-lexWord acc [] = (reverse acc, "")
-lexWord acc (x:xs) | isDigit x || isAlpha x || x `elem` "_.'#?" = lexWord (x:acc) xs
-                   | otherwise = (reverse acc, x:xs)
-                   
-
− scripts/hoogle/src/Hoogle/Match.hs
@@ -1,61 +0,0 @@-{-
-    This file is part of Hoogle, (c) Neil Mitchell 2004-2005
-    http://www.cs.york.ac.uk/~ndm/hoogle/
-    
-    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License.
-    To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/
-    or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
--}
-
-{- |
-    The main driver module, all the associated interfaces call into this
--}
-
-module Hoogle.Match(matchUnordered, matchOrdered, matchRange) where
-
-import Hoogle.Result
-import Hoogle.Database
-import Hoogle.Search
-
-import Hoogle.MatchName
-import Hoogle.MatchType
-
-import Data.List
-
-
----------------------------------------------------------------------
--- DRIVER
-
-
-
--- | The main drivers for hoogle
-matchUnordered
-    :: FilePath -- ^ The full path to the hoogle file, if null then a default is used
-    -> SearchMode -- ^ The string to search for, unparsed
-    -> IO [Result] -- ^ A list of Results, from best to worst
-matchUnordered path find =
-    do 
-        let file = if null path then "hoogle.txt" else path
-        database <- loadDatabase file
-        return $ case find of
-            SearchName x -> lookupName (names database) x
-            SearchType x -> lookupType (classes database) (types database) x
-
-
--- | 
-matchOrdered :: FilePath -> SearchMode -> IO [Result]
-matchOrdered path find =
-    do res <- matchUnordered path find
-       return $ sort res
-
-
-
-matchRange :: FilePath -> SearchMode -> Int -> Int -> IO [Result]
-matchRange path find 0 count =
-    do res <- matchOrdered path find
-       return $ take count res
-
-
-matchRange path find from count = 
-    do res <- matchRange path find 0 (from+count)
-       return $ drop from res
− scripts/hoogle/src/Hoogle/MatchClass.hs
@@ -1,85 +0,0 @@-{-
-    This file is part of Hoogle, (c) Neil Mitchell 2004-2005
-    http://www.cs.york.ac.uk/~ndm/hoogle/
-    
-    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License.
-    To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/
-    or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
--}
-
-module Hoogle.MatchClass(
-    ClassTable,
-    buildClass,
-    lookupClass
-    ) where
-
-import Hoogle.Result
-import Hoogle.TypeSig
-import Hoogle.General
-
-import Data.Maybe
-import qualified Data.Map as Map
-
-
-data ClassTable = ClassTable (Map.Map String [TypeMatch])
-                  deriving Show
-
-
-data TypeMatch = TypeMatch [Type] Constraint
-                 deriving Show
-
-
--- item should only be instances
-buildClass :: [Item] -> ClassTable
-buildClass xs = ClassTable $ foldr add Map.empty (map f xs)
-    where
-        f (Instance (con, TList (TLit name:typs))) = (name, TypeMatch (f typs) (f con))
-            where
-                free = zip (allTVar (TList typs)) [0..]
-                f = map (mapUnbound g)
-                g x = TNum $ fromJust $ lookup x free
-        
-        add (name, value) mp = case Map.lookup name mp of
-                                   Just x -> Map.insert name (value:x) mp
-                                   Nothing -> Map.insert name [value] mp
-
-
-
--- return ClassMinor if something is minorly wrong, i.e. no Show for a
--- return ClassMajor for bigger errors, no FooBar for a
-lookupClass :: ClassTable -> Constraint -> String -> [Type] -> Maybe [MatchAmount]
-lookupClass ct given check xs | all isTVar xs =
-    if any (== TList (TLit check : xs)) given then Just []
-    else if check `elem` ["Eq","Show","Ord"] then Just [ClassMinor]
-    else Just [ClassMajor]
-
--- either reduce or perish!
-lookupClass c@(ClassTable ct) given check typ =
-        case mapMaybe f res of
-            [] -> Just [ClassMajor]
-            (x:xs) -> Just x
-    where
-        ltyp = length typ
-        res = Map.findWithDefault [] check ct
-        
-        f (TypeMatch typ2 con)
-                | length typ2 == ltyp && isJust unifs && isJust res
-                = Just $ fromJust res
-            where 
-                unifs = concatIdMaybeAll $ zipWith g typ2 typ
-                cons2 = map (mapNumber (\x -> fromJust $ lookup x (fromJust unifs))) con
-                res = concatMapMaybeAll ren cons2
-                
-                ren (TList (TLit x:xs)) = lookupClass c given x xs
-                
-        
-        f _ = Nothing
-        
-        -- type on the left must have the numbers in
-        g :: Type -> Type -> Maybe [(Int, Type)]
-        g (TNum x) y = Just [(x, y)]
-        g (TLit x) (TLit y) | x == y = Just []
-        g (TList x) (TList y) | length x == length y = concatIdMaybeAll $ zipWith g x y
-        g _ _ = Nothing
-        
-        
− scripts/hoogle/src/Hoogle/MatchName.hs
@@ -1,112 +0,0 @@-{-
-    This file is part of Hoogle, (c) Neil Mitchell 2004-2005
-    http://www.cs.york.ac.uk/~ndm/hoogle/
-    
-    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License.
-    To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/
-    or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
--}
-
-module Hoogle.MatchName(
-    NameTable,
-    buildName, -- build a name table
-    lookupName -- lookup a name
-    ) where
-
-
-import Hoogle.Result
-import Hoogle.TypeSig
-
-import Data.Char
-import Data.List
-import Data.Maybe
-
-
--- | The abstract data type
-data NameTable = NameTable [(String, String, Result, Bool)]
-                 deriving Show
-
--- | build a 'NameTable'
-buildName :: [(ModuleName, Item)] -> NameTable
-buildName xs = NameTable $ map f xs
-    where
-        lcase = map toLower
-    
-        f (_, Module x) = (lcase name, name,
-            Result (Str $ showModuleName (init x)) (Str $ last x)
-                   (Tag "u" $ Str "module") "module" [] 0 0,
-            False)
-            where name = last x
-                   
-        
-        f (modu, x) = (lcase name, name,
-            Result (Str $ showModuleName modu) (Str $ getName x)
-                   (getType x) (getMode x) [] 0 (0 - length modu),
-            head (asString x) == '(')
-            where name = getName x
-
-
-        getName x = noBracket $ asString x
-        
-        getType (Func _ x) = Str $ showConType x
-        getType (Keyword x) = Tag "u" $ Str "keyword"
-        getType (Class x) =
-            Tags [Tag "u" $ Str "class", Str $ " " ++ showConType x]
-        getType (TypeAlias name args _) =
-            Tags [Tag "u" $ Str "type", Str $ concatMap (' ':) (name:args)]
-        getType (Data b x) = 
-            Tags [Tag "u" $ Str (if b then "newtype" else "data"), Str $ " " ++ showConType x]
-        
-        getMode (Func{}) = "func"
-        getMode (Keyword{}) = "keyword"
-        getMode (Class{}) = "class"
-        getMode (TypeAlias{}) = "type"
-        getMode (Data b x) = if b then "newtype" else "data"
-
-
-
-noBracket ('(':xs) = init xs
-noBracket x = x
-
-
--- | lookup an entry in a 'NameTable'
-lookupName :: NameTable -> String -> [Result]
-lookupName (NameTable xs) find = catMaybes $ map f xs
-    where
-        findc = noBracket find
-        find2 = map toLower findc
-    
-        f (fnd, orig, res, b) =
-            do (reason, pos) <- getMatch fnd orig
-               return $ res{
-                   resultName = brack b $ h pos (length find) (fromStr (resultName res)),
-                   resultInfo = [ReasonText reason],
-                   resultScore = score [ReasonText reason]
-                 }
-                            
-        fromStr (Str x) = x
-
-        getMatch :: String -> String -> Maybe (TextAmount, Int)
-        getMatch fnd orig
-            | findc == orig = Just (TextFullCase, 0)
-            | find2 == fnd  = Just (TextFull, 0)
-            | findc `isPrefixOf` orig = Just (TextPrefixCase, 0)
-            | find2 `isPrefixOf` fnd  = Just (TextPrefix, 0)
-            | find2 `isSuffixOf` fnd  = Just (TextSuffix, length fnd - length find2)
-            | otherwise = g fnd 0
-                     
-              
-        g [] n = Nothing
-        g xs n | find2 `isPrefixOf` xs = Just (TextSome, n)
-               | otherwise = g (tail xs) (n+1)
-                   
-                   
-        h pos len xs = Tags $ [
-                Str $ take pos2 xs,
-                Tag "b" $ Str $ take len $ drop pos2 xs,
-                Str $ drop (len+pos2) xs]
-            where pos2 = pos + (if head xs == '(' then 1 else 0)
-
-
-        brack True x = Tags [Str "(", x, Str ")"]
-        brack _ x = x
− scripts/hoogle/src/Hoogle/MatchType.hs
@@ -1,204 +0,0 @@-{-
-    This file is part of Hoogle, (c) Neil Mitchell 2004-2005
-    http://www.cs.york.ac.uk/~ndm/hoogle/
-    
-    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License.
-    To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/
-    or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
--}
-
-
-module Hoogle.MatchType(
-    TypeTable,
-    buildType,
-    lookupType,
-    compareTypes
-    ) where
-
-
-import Hoogle.TypeSig
-import Hoogle.Result
-import Hoogle.Parser
-import Hoogle.Lexer
-import Hoogle.MatchClass
-import Hoogle.General
-
-import Data.Maybe
-import Data.List
-
-
-data TypeTable = TypeTable [(ModuleName, Item, TypeCode)]
-                 deriving Show
-
-
-data TypeCode = TypeCode Int [Rule]
-                deriving Show
-
-
-data Rule = FreeSet [Var]
-          | DataBind String Var
-          | ClassBind String [Var]
-
-
-data Var = Var Int [Int]
-
-
-instance Show Var where
-    show (Var n xs) = "@" ++ show n ++ concatMap (\x -> '.':show x) xs
-
-
-instance Show Rule where
-    show (FreeSet x) = "{" ++ (concat $ intersperse " " $ map show x) ++ "}"
-    show (DataBind x y) = x ++ "=" ++ show y
-    show (ClassBind x y) = x ++ "=>" ++ show y
-
-           
-
-buildType :: [(ModuleName, Item)] -> TypeTable
-buildType x = TypeTable $ map f x
-    where f (a, b) = (a, b, buildTypeCode $ typ b)
-
-
-unpackSpine :: ConType -> (Constraint, [Type])
-unpackSpine (c, TList (TLit "->":xs)) = (c, xs)
-unpackSpine (c, x) = (c, [x])
-
-
-buildTypeCode :: ConType -> TypeCode
-buildTypeCode (con,typ) = TypeCode (length args) $ map asBound bound ++ concatMap asFree frees
-    where
-        frees = groupBy eqVar $ sortBy cmpVar free
-        (free, bound) = partition (isTVar . snd) binds
-        binds = concat $ zipWith f (map (\x -> Var x []) [0..]) (last args : init args)
-        
-        asBound (var, TLit x) = DataBind x var
-        
-        -- TODO: Multiparameter type classes
-        asFree x = FreeSet items : [ClassBind c [i] | i <- items, c <- classes]
-            where
-                items = map fst x
-                ((_,TVar var):_) = x
-                classes = [r | TList [TLit r,TVar v] <- con, v == var]
-        
-        f :: Var -> Type -> [(Var, Type)]
-        f var@(Var v vs) (TList (x:xs)) = (var, x) : (concat $ zipWith g [1..] xs)
-            where g n x = f (Var v (vs ++ [n])) x
-            
-        f var x = [(var, x)]
-    
-        args = snd $ unpackSpine (con,typ)
-        
-        eqVar  (_, TVar a) (_, TVar b) = a == b
-        cmpVar (_, TVar a) (_, TVar b) = compare a b
-
-
-compareTypes :: ClassTable -> ConType -> ConType -> [[Reason]]
-compareTypes classes left right = [a ++ b | a <- as, b <- bs]
-    where
-        as = map (map ReasonLeft  . thd3) $ checkType classes cleft right
-        bs = map (map ReasonRight . thd3) $ checkType classes cright left
-        thd3 (_,_,x) = x
-    
-        cleft = buildTypeCode left
-        cright = buildTypeCode right
-
-
-lookupType :: ClassTable -> TypeTable -> ConType -> [Result]
-lookupType classes (TypeTable types) find = mapMaybe f types
-    where
-        findCode = buildTypeCode find
-        
-        f (modu, item, code) = do (order, a) <- checkTypeOne classes code find
-                                  (_,     b) <- checkTypeOne classes findCode (typ item)
-                                  let reasons = map ReasonLeft a ++ map ReasonRight b
-                                  return $ Result
-                                      (Str $ showModuleName modu)
-                                      (Str $ name item)
-                                      (showTypeTags (typ item) order)
-                                      "func"
-                                      reasons
-                                      (score reasons)
-                                      (0 - length modu)
-
-
-checkTypeOne :: ClassTable -> TypeCode -> ConType -> Maybe ([Int], [MatchAmount])
-checkTypeOne ct tc typ = if null res then Nothing else Just (b, c)
-    where
-        (a,b,c) = maximumBy f res
-        res = checkType ct tc typ
-        
-        f (a,_,_) (b,_,_) = compare a b
-
-
-checkType :: ClassTable -> TypeCode -> ConType -> [(Score, [Int], [MatchAmount])]
-checkType classes code@(TypeCode n xs) typ = if abs posExtraArgs > 2 then [] else res
-    where
-        extraArgs = n - length types
-        posExtraArgs = abs extraArgs
-        badArgs = replicate extraArgs ArgExtra
-    
-        f (x:xs) = xs ++ [x]
-        
-        res = [(score reasons, f $ map fst arg, badArgs ++ reasons) | arg <- args,
-               Just reasons <- [applyType classes code cons (map snd arg)]]
-    
-        (cons, types) = unpackSpine typ
-        types2 = zip [1..] types
-        lastType = last types2
-        initType = init types2
-        addTypes = initType ++ replicate extraArgs (0, TVar "_")
-        
-        args = map (lastType:) $ concatMap permute $ selection (n-1) addTypes
-
-        
-
-applyType :: ClassTable -> TypeCode -> Constraint -> [Type] -> Maybe [MatchAmount]
-applyType classes (TypeCode n xs) cons types = if any isNothing res then Nothing
-                                       else Just (concatMap fromJust res)
-    where
-        res = map f xs
-
-        f :: Rule -> Maybe [MatchAmount]
-        f (ClassBind x y) = do items <- mapMaybeAll getElement y
-                               lookupClass classes cons x items
-        
-        f (DataBind x y) = case rootCtor y of
-                               Nothing -> Nothing
-                               Just "" -> Just [DataTooFree]
-                               Just z -> if x == z then Just [] else Nothing
-                               
-        f (FreeSet x) = if Nothing `elem` roots || length roots > 2
-                        then Nothing
-                        else Just $ concat [tooSpecific, tooDifferent]
-            where
-                tooSpecific = if length roots == 2 then [DataTooSpecific] else []
-                tooDifferent = replicate (length items - 1) FreeDifferent
-            
-                roots = nub $ Just "" : map rootCtor x
-                items = nub $ mapMaybe f x
-                
-                f x = case fromJust (getElement x) of
-                          TVar "_" -> Nothing
-                          TVar x -> Just x
-                          _ -> Nothing
-        
-        
-        -- empty string means a free variable, i.e no explicit root
-        -- Nothing means impossible
-        rootCtor :: Var -> Maybe String
-        rootCtor var = case getElement var of
-                            Nothing -> Nothing
-                            Just (TLit x) -> Just x
-                            Just (TList (TLit x:xs)) -> Just x
-                            x -> Just ""
-
-        
-        getElement :: Var -> Maybe Type
-        getElement (Var n xs) = f xs (types !! n)
-            where
-                f [] x = Just x
-                f (n:ns) (TList xs) | n < length xs = f ns (xs !! n)
-                f (n:ns) (TVar x) = Just $ TVar "_"
-                f _ _ = Nothing
-        
-        
− scripts/hoogle/src/Hoogle/Parser.hs
@@ -1,133 +0,0 @@-{-
-    This file is part of Hoogle, (c) Neil Mitchell 2004-2005
-    http://www.cs.york.ac.uk/~ndm/hoogle/
-    
-    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License.
-    To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/
-    or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
--}
-
-module Hoogle.Parser (
-    parser,
-    parseConType,
-    validLine
-    ) where
-
-import Hoogle.Lexer
-import Hoogle.TypeSig
-
-
-
--- | Is this line a content based line
-validLine :: String -> Bool
-validLine "" = False
-validLine ('-':'-':_) = False
-validLine _ = True
-
-
--- | Parse one line of Lexemes at a time and convert it to an item, or raise a parse error
-parser :: String -> Either Item String
-parser x = case lexer x of
-               Left x -> parse x
-               Right x -> Right x
-
-parse :: [Lexeme] -> Either Item String
-parse (VarName "module":TypeName x:[]) = Left $ Module (splitOn '.' x)
-
-parse (VarName "class":x) = Left $ Class (readConType x)
-
-parse (VarName "instance":x) = Left $ Instance (readConType x)
-
-parse (VarName "keyword":xs) = Left $ Keyword $ concatMap show xs
-
-parse (VarName "newtype":x) = Left $ Data True  (readConType x)
-parse (VarName "data"   :x) = Left $ Data False (readConType x)
-
-parse (VarName "type":x) = Left $ TypeAlias name (map (\(VarName a) -> a) args) (readConType b)
-    where (TypeName name:args,_:b) = break (== EqSymbol) x
-
-parse (TypeName x:TypeColon:typ) = Left $ Func x (readConType typ)
-parse (VarName  x:TypeColon:typ) = Left $ Func x (readConType typ)
-
--- a data value produced by Haddock being foolish
-parse [VarName  x] = Right ""
-parse [TypeName x] = Right ""
-
-
-parse [] = Right "Parse error: unexpected empty line"
-parse (x:xs) = Right $ "Parse error: doesn't start with a keyword, or have a type annotation, " ++ show x
-
-
-parseConType :: String -> Either ConType String
-parseConType xs = case lexer xs of
-                      Left x -> Left (readConType x)
-                      Right x -> Right x
-
-
-splitOn :: Eq a => a -> [a] -> [[a]]
-splitOn e xs = if null b then [a] else a : splitOn e (tail b)
-    where (a,b) = break (== e) xs
-
-
-readConType :: [Lexeme] -> (Constraint, Type)
-readConType xs = (con, readType res)
-    where (con, res) = readConstraint xs
-
-
-readConstraint :: [Lexeme] -> (Constraint, [Lexeme])
-readConstraint x = if not (EqArrow `elem` x) then ([],x)
-                   else (f (readType a) ++ con, lexe)
-    where
-        (a,b) = break (== EqArrow) x
-        (con,lexe) = readConstraint (tail b)
-        
-        f (TList (TLit ",":xs)) = xs
-        f x = [x]
-
-
-
-readType :: [Lexeme] -> Type
-readType x = f $ bracket $ filter (/= ExSymbol) x
-    where
-        f :: [Bracket Lexeme] -> Type
-        f xs = if not (singleton tups) then TList (TLit ",":map f tups)
-               else if not (singleton func) then TList (TLit "->":map f func)
-               else if singleton xs then g (head xs)
-               else if null xs then TVar "_"
-               else TList (map g xs)
-            where
-                tups = splitOn (BItem Comma    ) xs
-                func = splitOn (BItem LineArrow) xs
-        
-        g (Bracket OpenRound  x) = f x
-        g (Bracket OpenSquare []) = TLit "[]"
-        g (Bracket OpenSquare x) = TList [TLit "[]", f x]
-        g (BItem (TypeName x)) = TLit x
-        g (BItem (VarName  x)) = TVar x
-        g y = error $ "Hoogle.Parser.readType: " ++ show (x,y)
-    
-
-singleton [x] = True
-singleton _ = False
-
-
-data Bracket x = Bracket x [Bracket x]
-               | BItem x
-               deriving (Eq, Show)
-
-
-isOpen x = x `elem` [OpenRound, OpenSquare]
-isShut x = x `elem` [ShutRound, ShutSquare]
-
-bracket :: [Lexeme] -> [Bracket Lexeme]
-bracket xs = let (a,[]) = g xs in a
-    where
-        f :: [Lexeme] -> (Bracket Lexeme, [Lexeme])
-        f (x:xs) | isOpen x = let (a,b) = g xs in (Bracket x a, b)
-        f (x:xs) = (BItem x, xs)
-        
-        
-        g :: [Lexeme] -> ([Bracket Lexeme], [Lexeme])
-        g (x:xs) | isShut x = ([], xs)
-        g [] = ([], [])
-        g xs = let (a,b) = f xs ; (c,d) = g b in (a:c,d)
− scripts/hoogle/src/Hoogle/Result.hs
@@ -1,164 +0,0 @@-{-
-    This file is part of Hoogle, (c) Neil Mitchell 2004-2005
-    http://www.cs.york.ac.uk/~ndm/hoogle/
-    
-    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License.
-    To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/
-    or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
--}
-
-module Hoogle.Result where
-
-import Hoogle.TypeSig
-import Data.List
-
-
-type Score = Int
-
-data Result = Result {
-                  resultModule :: TagStr,
-                  resultName :: TagStr,
-                  resultType :: TagStr,
-                  resultMode :: String,
-                  resultInfo :: [Reason],
-                  resultScore :: Score,
-                  resultPriority :: Int
-                  }
-                  deriving Show
-
-
-instance Eq Result where
-    a == b = resultScore a == resultScore b && resultPriority a == resultPriority b
-
-instance Ord Result where
-    compare a b = compare (resultScore b, resultPriority b) (resultScore a, resultPriority a)
-
-
--- some typical tags
---  a, hyperlink
---  b, bold
---  u, underline
---  1-6, color 1-6
-
-
-data TagStr = Str String
-            | Tag String TagStr
-            | Tags [TagStr]
-              deriving Show
-
-
-data Reason = ReasonText TextAmount
-            | ReasonLeft MatchAmount
-            | ReasonRight MatchAmount
-            
-            
-
-
-instance Show Reason where
-    show (ReasonText x) = show x
-    show (ReasonLeft x) = 'L' : show x
-    show (ReasonRight x) = 'R' : show x
-    
-    showList [ReasonText x] = showString $ show x
-    showList xs = showString $ f 'L' left ++ g left right ++ f 'R' right
-        where
-            (left, right) = partition isLeft xs
-            
-            f pre [] = ""
-            f pre xs = pre : concatMap (tail . show) xs
-            
-            g (_:_) (_:_) = "."
-            g _ _ = ""
-            
-            isLeft (ReasonLeft _) = True
-            isLeft _ = False
-
-
-data TextAmount = TextFullCase
-                | TextFull
-                | TextPrefixCase
-                | TextPrefix
-                | TextSuffix
-                | TextSome
-                  deriving Show
-
-data MatchAmount = DataTooFree
-                 | DataTooSpecific
-                 | FreeDifferent
-                 | ClassMinor
-                 | ClassMajor
-                 | ArgExtra
-                 deriving (Bounded, Eq, Enum)
-
-instance Show MatchAmount where
-    show DataTooFree = "?"
-    show DataTooSpecific = "!"
-    show FreeDifferent = "*"
-    show ArgExtra = "#"
-    show ClassMinor = "c"
-    show ClassMajor = "C"
-
-
-showText :: TagStr -> String
-showText (Str x) = x
-showText (Tag n x) = showText x
-showText (Tags xs) = concatMap showText xs
-
-
-
-
-class Scoreable a where
-    score :: a -> Score
-
-instance Scoreable a => Scoreable [a] where
-    score xs = sum (map score xs)
-
-instance Scoreable Reason where
-    score (ReasonText  x) = score x
-    score x = 0 - scoreGenerated x
-    --score (ReasonLeft  x) = score x
-    --score (ReasonRight x) = score x
-    
-instance Scoreable TextAmount where
-    score TextFullCase = 6
-    score TextFull = 5
-    score TextPrefixCase = 4
-    score TextPrefix = 3
-    score TextSuffix = 2
-    score TextSome = 1
-
-instance Scoreable MatchAmount where
-    score FreeDifferent = -1
-    score ArgExtra = -2
-    score ClassMinor = -1
-    score ClassMajor = -10
-    score _ = -5
-
-
--- this function is based on data generated by Score
-scoreGenerated :: Reason -> Score
-scoreGenerated (ReasonLeft  DataTooFree    ) = 1
-scoreGenerated (ReasonLeft  DataTooSpecific) = 5
-scoreGenerated (ReasonLeft  FreeDifferent  ) = 9
-scoreGenerated (ReasonLeft  ClassMinor     ) = 2
-scoreGenerated (ReasonLeft  ClassMajor     ) = 9
-scoreGenerated (ReasonLeft  ArgExtra       ) = 2
-scoreGenerated (ReasonRight DataTooFree    ) = 6
-scoreGenerated (ReasonRight DataTooSpecific) = 16
-scoreGenerated (ReasonRight FreeDifferent  ) = 1
-scoreGenerated (ReasonRight ClassMinor     ) = 3
-scoreGenerated (ReasonRight ClassMajor     ) = 1
-scoreGenerated (ReasonRight ArgExtra       ) = 16
-
-
-showTypeTags :: ConType -> [Int] -> TagStr
-showTypeTags (con, typ) tags = Tags $ Str (showCon con) : f typ
-    where
-        f (TList (TLit "->":xs)) = intersperse (Str " -> ") $ zipWith g tags xs
-        f x = [Str $ showType typ]
-        
-        g 0 typ = Str $ showTypePrec 1 typ
-        g n typ = Tag (show n) (g 0 typ)
-
-
-
− scripts/hoogle/src/Hoogle/Search.hs
@@ -1,35 +0,0 @@-
-module Hoogle.Search(Search(..), SearchMode(..), parseSearch) where
-
-
-import Hoogle.TypeSig
-import Hoogle.TextUtil
-import Hoogle.Parser
-import Data.Char
-
-
-data Search = Search String SearchMode
-              deriving Show
-
-
-data SearchMode = SearchName String
-                | SearchType ConType
-                | SearchError String
-                deriving Show
-
-
-parseSearch :: String -> Search
-parseSearch x = Search x $
-                if isHaskellName x2
-                then SearchName x2
-                else case parseConType x2 of
-                         Right x -> SearchError x
-                         Left x -> SearchType x
-    where
-        x2 = trim x
-
-
-isHaskellName :: String -> Bool
-isHaskellName (x:xs) | isAlpha x && all (\a -> isAlphaNum a || a `elem` "_'") xs = True
-isHaskellName xs = all (`elem` "!#$%&*+./<>=?@/^|-~") xs
-isHaskellName _ = False
− scripts/hoogle/src/Hoogle/TextUtil.hs
@@ -1,121 +0,0 @@-{-
-    This file is part of Hoogle, (c) Neil Mitchell 2004-2005
-    http://www.cs.york.ac.uk/~ndm/hoogle/
-    
-    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License.
-    To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/
-    or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
--}
-
-{-|
-    General text utility functions
--}
-
-module Hoogle.TextUtil where
-
-import Prelude
-import Data.Maybe
-import Data.Char
-import Data.List
-
-
-trim :: String -> String
-trim = trimLeft . trimRight
-trimLeft = dropWhile isSpace
-trimRight = reverse . trimLeft . reverse
-
-
-isSubstrOf :: Eq a => [a] -> [a] -> Bool
-isSubstrOf find list = any (isPrefixOf find) (tails list)
-
-
-splitList :: Eq a => [a] -> [a] -> [[a]]
-splitList find str = if isJust q then a : splitList find b else [str]
-    where
-        q = splitPair find str
-        Just (a, b) = q
-
-
-splitPair :: Eq a => [a] -> [a] -> Maybe ([a], [a])
-splitPair find str = f str
-    where
-        f [] = Nothing
-        f x  | isPrefixOf find x = Just ([], drop (length find) x)
-             | otherwise = if isJust q then Just (head x:a, b) else Nothing
-                where
-                    q = f (tail x)
-                    Just (a, b) = q
-
-
-indexOf find str = length $ takeWhile (not . isPrefixOf (lcase find)) (tails (lcase str))
-
-
-lcase = map toLower
-ucase = map toUpper
-
-
-replace find with [] = []
-replace find with str | find `isPrefixOf` str = with ++ replace find with (drop (length find) str)
-                      | otherwise = head str : replace find with (tail str)
-
-
-
-
--- 0 based return
-findNext :: Eq a => [[a]] -> [a] -> Maybe Int
-findNext finds str = if null maxs then Nothing else Just (fst (head (sortBy compSnd maxs)))
-    where
-        maxs = mapMaybe f (zip [0..] finds)
-        
-        f (id, find) = if isJust q then Just (id, length (fst (fromJust q))) else Nothing
-            where q = splitPair find str
-        
-        compSnd (_, a) (_, b) = compare a b
-
-
--- bracketing...
-
-data Bracket = Bracket (Char, Char) [Bracket]
-             | UnBracket String
-             deriving (Show)
-
-data PartBracket = PBracket [PartBracket]
-                 | PUnBracket Char
-                 deriving (Show)
-
-
-bracketWith :: Char -> Char -> Bracket -> Bracket
-bracketWith strt stop (Bracket x y) = Bracket x (map (bracketWith strt stop) y)
-bracketWith strt stop (UnBracket x) = bracketString strt stop x
-
-
-bracketString :: Char -> Char -> String -> Bracket
-bracketString strt stop y = Bracket (strt, stop) (g "" res)
-    where
-        (a, b) = bracketPartial strt stop y
-        res = a ++ (map PUnBracket b)
-        
-        g c (PBracket x:xs  ) = deal c ++ Bracket (strt, stop) (g "" x) : g "" xs
-        g c (PUnBracket x:xs) = g (x:c) xs
-        g c []                = deal c
-        
-        deal [] = []
-        deal x  = [UnBracket (reverse x)]
-        
-
-
-bracketPartial :: Char -> Char -> String -> ([PartBracket], String)
-bracketPartial strt stop y = f y
-    where
-        
-        f [] = ([], "")
-        
-        f (x:xs) | x == strt = (PBracket a : c, d)
-                                 where
-                                    (a, b) = bracketPartial strt stop xs
-                                    (c, d) = f b
-
-        f (x:xs) | x == stop = ([], xs)
-        
-        f (x:xs) | otherwise = (PUnBracket x : a, b)
-                                  where (a, b) = f xs
− scripts/hoogle/src/Hoogle/TypeAlias.hs
@@ -1,75 +0,0 @@-{-
-    This file is part of Hoogle, (c) Neil Mitchell 2004-2005
-    http://www.cs.york.ac.uk/~ndm/hoogle/
-    
-    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License.
-    To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/
-    or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
--}
-
-{-|
-    Deal with type aliases, i.e. type String = [Char]
--}
-
-module Hoogle.TypeAlias(
-    AliasTable,
-    buildAlias,
-    lookupAlias,
-    showAliasTable
-    ) where
-
-import Hoogle.TypeSig
-
-import qualified Data.Map as Map
-import Data.Maybe
-
-
--- | Alias is a string, being the name of the constructor
---   the number of arguments it takes, and the resulting type
---   TNum is used for replacement positions
-data AliasTable = AliasTable (Map.Map String (Int, Type))
-                  deriving Show
-
-
--- | Given a list of aliases, build an alias table
---   All members of Item must be TypeAlias
-buildAlias :: [Item] -> AliasTable
-buildAlias xs = {- AliasTable $ Map.fromList $ -} fixpAlias $ map f xs
-    where
-        f (TypeAlias name args ([], typ)) =
-            (name, (length args, mapUnbound (g (zip args [0..])) typ))
-
-        g lst name = case lookup name lst of
-                        Just n -> TNum n
-                        Nothing -> TVar name
-
-
--- yay for circular programming
--- boo for possible non-termination
-fixpAlias :: [(String, (Int, Type))] -> AliasTable
-fixpAlias x = map2
-    where
-        map2 = AliasTable $ Map.map (\(a,b) -> (a, lookupAlias map2 b)) map1
-        map1 = Map.fromList x
-
-
--- | Given a type, follow all aliases to find the ultimate one
-lookupAlias :: AliasTable -> Type -> Type
-lookupAlias (AliasTable table) (TLit x) = typ
-    where (0, typ) = Map.findWithDefault (0, TLit x) x table
-    
-lookupAlias a@(AliasTable table) (TList (TLit x:xs)) = if isJust res then some else none
-    where
-        res = Map.lookup x table
-        none = TList (TLit x : map (lookupAlias a) xs)
-        Just (n, typ) = res
-        some = if n == length xs
-               then mapNumber (xs !!) typ
-               else error "lookupAlias: mismatch"
-
-lookupAlias _ x = x
-
-showAliasTable :: AliasTable -> String
-showAliasTable (AliasTable x) = unlines $ map showAlias (Map.toList x)
-
-showAlias (name, (args, typ)) = "type " ++ name ++ "[" ++ show args ++ "] = " ++ show typ
− scripts/hoogle/src/Hoogle/TypeSig.hs
@@ -1,131 +0,0 @@-{-
-    This file is part of Hoogle, (c) Neil Mitchell 2004-2005
-    http://www.cs.york.ac.uk/~ndm/hoogle/
-    
-    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License.
-    To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/
-    or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
--}
-
-{-|
-    Data structures for each of the type signatures
--}
-
-module Hoogle.TypeSig where
-
-import Data.List
-
-
-
-type ModuleName = [String]
-
-data Item = Module ModuleName
-          | Class {typ :: ConType}
-          | Func {name :: String, typ :: ConType}
-          | TypeAlias {name :: String, args :: [String], typ :: ConType}
-          | Data {new :: Bool, typ :: ConType}
-          | Instance {typ :: ConType}
-          | Keyword {name :: String}
-
-
-instance Show Item where
-    show (Module x) = "module " ++ concat (intersperse "." x)
-    show (Class typ) = "class " ++ showConType typ
-    show (Func name typ) = name ++ " :: " ++ showConType typ
-    show (TypeAlias name args typ) = name ++ concatMap (' ':) args ++ " = " ++ showConType typ
-    show (Data new typ) = (if new then "newtype" else "data") ++ " " ++ showConType typ
-    show (Instance typ) = "instance " ++ showConType typ
-          
-
-
-isTypeAlias (TypeAlias{}) = True; isTypeAlias _ = False
-isInstance  (Instance {}) = True; isInstance  _ = False
-isFunc      (Func     {}) = True; isFunc      _ = False
-
-
-asString :: Item -> String
-asString (Module x) = concat $ intersperse "." x
-asString (Func {name=x}) = x
-asString (TypeAlias {name=x}) = x
-asString (Data {typ=(_,x)}) = typeName x
-asString (Class {typ=(_,x)}) = typeName x
-asString (Keyword {name=x}) = x
-
-
-asType :: Item -> String
-asType (Module x) = "module"
-asType x = showConType $ typ x
-
-
-typeName :: Type -> String
-typeName (TList (x:xs)) = typeName x
-typeName (TLit x) = x
-
-
-type ConType = (Constraint, Type)
-
-
-type Constraint = [Type]
-
-
-data Type = TList [Type] -- a list of types, first one being the constructor
-          | TLit String -- bound variables, Maybe, ":", "," (tuple), "->" (function)
-          | TVar String -- unbound variables, "a"
-          | TNum Int -- a point to a number
-          deriving (Show, Eq)
-          
-
-isTVar (TVar _) = True
-isTVar _ = False
-
-
-allTVar :: Type -> [String]
-allTVar x = nub $ f x
-    where
-        f (TList xs) = concatMap f xs
-        f (TVar  xs) = [xs]
-        f _          = []
-
-          
-mapUnbound :: (String -> Type) -> Type -> Type
-mapUnbound f (TList xs) = TList (map (mapUnbound f) xs)
-mapUnbound f (TVar  x ) = f x
-mapUnbound f x          = x
-
-mapNumber :: (Int -> Type) -> Type -> Type
-mapNumber f (TList xs) = TList (map (mapNumber f) xs)
-mapNumber f (TNum  x ) = f x
-mapNumber f x          = x
-
-
-showCon :: Constraint -> String
-showCon []  = ""
-showCon [c] = showType c ++ " => "
-showCon cs  = "(" ++ concat (intersperse ", " (map showType cs)) ++ ") => "
-
-
-showConType :: ConType -> String
-showConType (c, x) = showCon c ++ showType x
-
-
-showModuleName :: ModuleName -> String
-showModuleName x = concat $ intersperse "." x
-
-
-showType :: Type -> String
-showType = showTypePrec 0
-
-showTypePrec :: Int -> Type -> String
-showTypePrec _ (TLit x) = x
-showTypePrec _ (TVar x) = x
-showTypePrec _ (TNum x) = show x
-showTypePrec p (TList (x:xs)) = case x of
-        TLit "[]" -> "[" ++ showTypePrec 0 (head xs) ++ "]"
-        TLit ","  -> showTypeList True  ", "   0 xs
-        TLit "->" -> showTypeList (p>0) " -> " 1 xs
-        _         -> showTypeList (p>1) " "    2 (x:xs)
-    where
-        showTypeList p mid nxt xs = parens p $ concat $ intersperse mid $ map (showTypePrec nxt) xs
-        parens True  x = "(" ++ x ++ ")"
-        parens False x = x
-
− scripts/hoogle/src/Score.hs
@@ -1,1 +0,0 @@-import Score.Main
− scripts/hoogle/src/Score/Main.hs
@@ -1,139 +0,0 @@-
-
-
-module Score.Main where
-
-
-import Hoogle.Database
-import Hoogle.MatchType
-import Hoogle.Parser
-import Hoogle.MatchClass
-import Hoogle.Result
-import Hoogle.TypeSig
-import Hoogle.General
-
-import System.Environment
-import Data.Maybe
-import Data.List
-import Data.Char
-
-
-type Phrase = [[Char]]
-
-type Tag = (Int, Int)
-
-type Knowledge = [(Phrase, Phrase, Tag)]
-type Know = [(String, String, Tag)]
-
-
-reasons :: [MatchAmount]
-reasons = [minBound..maxBound]
-
-codes = length reasons * 2
-
-reasonToCode :: Reason -> Char
-reasonToCode (ReasonLeft x) = fromJust $ lookup x $ zip reasons ['a'..]
-reasonToCode (ReasonRight x) = chr $ length reasons + ord (reasonToCode (ReasonLeft x))
-
-
-codeToReason :: Char -> Reason
-codeToReason x = fromJust $ lookup x $ zip ['a'..] $ map ReasonLeft reasons ++ map ReasonRight reasons
-
-
-main = do x <- return ["examples.txt"] -- getArgs
-          db <- loadDatabase "classes.txt"
-          y <- mapM (loadExample (classes db)) x
-          let knowledge = simpAll $ concatMap simpKnow $ concat y
-              res = "test"
-          writeFile "score.ecl" (eclipse knowledge)
-          putStr $ showKnowledge knowledge
-
-
-simpAll xs = map fst $ filter f $ pickOne $ nub xs
-    where
-        f (x, xs) = not $ any (less x) xs
-        
-        -- is the first one completely subsumed by the second
-        -- i.e. the first can be deleted
-        -- only if there is more on the lefts, and less on the right
-        less (a1,a2,a3) (b1,b2,b3) = null (a1 \\ b1) && null (b2 \\ a2)
-
-
-
-simpKnow (a,b,c) = if null aa then [] else [(aa,bb,c)]
-    where
-        (aa, bb) = simpPair (sa, sb)
-        ([sa], [sb]) = (simp a, simp b)
-
-
-
-pickOne :: [a] -> [(a, [a])]
-pickOne xs = init $ zipWith f (inits xs) (tails xs)
-    where f a (b:bs) = (b, a ++ bs)
-    
-
-simp x = map fst $ filter f $ pickOne $ nub $ map sort x
-    where
-        f (x, xs) = not $ any (less x) xs
-        less a b = let (_, res) = simpPair (a,b) in null res
-
-
-
-simpPair :: (String, String) -> (String, String)
-simpPair (a,b) = f (sort a) (sort b)
-    where
-        f (x:xs) (y:ys) | x == y = f xs ys
-                        | x <  y = let (a,b) = f xs (y:ys) in (x:a,b)
-                        | x >  y = let (a,b) = f (x:xs) ys in (a,y:b)
-        f xs ys = (xs, ys)
-
-
-showKnowledge :: Know -> String
-showKnowledge xs = unlines $ map f xs
-    where
-        f (a,b,(a1,b1)) = g a ++ " < " ++ g b ++ " [" ++ show a1 ++ "<" ++ show b1 ++ "]"
-        g xs = xs -- show $ map codeToReason xs
-
-
-loadExample :: ClassTable -> String -> IO Knowledge
-loadExample ct file = do x <- readFile file
-                         return $ concatMap (trans . order) $ bundle
-                                $ filter (validLine . snd) $ zip [1..] $ lines x
-    where
-        bundle []     = []
-        bundle (x:xs) = ((fst x, tail (snd x)):a) : bundle b
-            where (a, b) = break (\x -> head (snd x) == '@') xs
-
-        order ((n,x):xs) = map (\(a,b) -> (,) a $ map (map reasonToCode) $ compareTypes ct (f b) (f x)) xs
-                    
-        f = fromLeft . parseConType
-        
-        trans [] = []
-        trans ((n,x):xs) = map (\(a,b) -> (x,b,(n,a))) xs ++ trans xs
-
-
-
--- Make Alan Frish happy
-eclipse :: Know -> String
-eclipse xs = unlines $ header ++ map f xs ++ footer
-    where
-        f (a,b,(a1,b1)) = "    " ++ g a ++ " #< " ++ g b ++ ","
-        g xs = intersperse '+' (map toUpper xs)
-
-        header = [
-            "% Generated by Hoogle Score",
-            ":- lib(fd).",
-            "same(X,X).",
-            "range([]).",
-            "range([X|Xs]) :-",
-            "    X :: [1..100],",
-            "    range(Xs).",
-            "solver(Xs) :-",
-            "    same(Xs, [" ++ intersperse ',' (take codes ['A'..'Z']) ++ "]),",
-            "    range(Xs),"]
-            
-        footer = [
-            "    labeling(Xs)."]
-            
-
-
− scripts/hoogle/src/Score/classes.txt
− scripts/hoogle/src/Score/examples.txt
@@ -1,69 +0,0 @@--- a list of examples
--- used to generate a scoring system
-
-@ Ord a => [a] -> [a]
-Ord a => a -> [a] -> [a]
-[a] -> [a]
-a -> [a] -> [a]
-[a] -> [a] -> [a]
-
-@ Ord a => [a] -> [a]
-[a] -> [a]
-Int -> [a] -> [a]
-
-@ Ord a => [a] -> [a]
-[a] -> [a]
-a -> [a]
-
-@ [a] -> [b]
-(a -> b) -> [a] -> [b]
-[a] -> [a]
-Eq a => [a] -> [a]
-
-
-@ Int -> Bool
-a -> Int -> Bool
-a -> Bool
-Bool
-
-@ a -> b
-a -> b
-a -> b -> a
-a -> a
-Int -> a
-a
-
-@ a -> [(a,b)] -> b
-
-a -> [(a, b)] -> Maybe b
-[(k, a)] -> a
-a -> a -> a
-
-@ [a] -> a
-[a] -> Int -> a
-Ord a => [a] -> a
-[a] -> Bool
-Foo a => [a] -> a
-
-@ a -> b -> c
-a -> b -> c -> d
-Int -> b -> c
-a -> a -> a
-Ord a => a -> a -> a
-a -> a
-Bool -> a -> a
-
-@ (a, b) -> a
-(a, b) -> b
-a -> a
-a
-
-@ (a -> b) -> [a] -> [b]
-(a -> [b]) -> [a] -> [b]
-(a -> a -> Bool) -> a -> [a] -> [a]
-
-
-@ Ix a => i -> Array a b
-a -> a
-Ix a => (a, a) -> [b] -> Array a b
-
− scripts/hoogle/src/Test/Test.hs
@@ -1,37 +0,0 @@-
-module Test where
-
-import Debug.QuickCheck
-import Data.List
-import Data.Char
-
-import Hoogle.Parser
-
-
-data LineStr = LineStr String
-     deriving Show
-
-
-instance Arbitrary Char where
-    arbitrary = oneof $ map return (spaces ++ validChars)
-        where
-            spaces = replicate 10 ' '
-            validChars = ['a'..'z'] ++ ['A'..'Z'] ++ ['0'..'9'] ++ "[](),->=:!"
-            anyChars = map chr [0x20..0x70]
-
-    
-instance Arbitrary LineStr where
-    arbitrary = do x <- vector 25
-                   return $ LineStr x
-
-
-prop_NoParseErrors :: LineStr -> Bool
-prop_NoParseErrors (LineStr x) =
-    case parser x of
-         Left _ -> True
-         Right _ -> True
-         
-
-
-
-test1 = quickCheck prop_NoParseErrors
− scripts/hoogle/src/Web.hs
@@ -1,1 +0,0 @@-import Web.Main
− scripts/hoogle/src/Web/CGI.hs
@@ -1,74 +0,0 @@-{-
-    This file is part of Hoogle, (c) Neil Mitchell 2004-2005
-    http://www.cs.york.ac.uk/~ndm/hoogle/
-    
-    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License.
-    To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/
-    or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
--}
-
-{- |
-    Parse the CGI arguments
--}
-
-
-module Web.CGI(cgiArgs, escape, asCgi) where
-
-import Hoogle.TextUtil
-import System.Environment
-import Data.Maybe
-import Data.Char
-import Numeric
-import Data.List
-
-
-cgiVariable :: IO String
-cgiVariable = catch (getEnv "QUERY_STRING")
-                    (\ _ -> do x <- getArgs
-                               return $ concat $ intersperse " " x)
-
-
-cgiArgs :: IO [(String, String)]
-cgiArgs = do x <- cgiVariable
-             let args = if '=' `elem` x then x else "q=" ++ x
-             return $ parseArgs args
-
-asCgi :: [(String, String)] -> String
-asCgi x = concat $ intersperse "&" $ map f x
-    where
-        f (a,b) = a ++ "=" ++ escape b
-
-
-parseArgs :: String -> [(String, String)]
-parseArgs xs = mapMaybe (parseArg . splitPair "=") $ splitList "&" xs
-
-parseArg Nothing = Nothing
-parseArg (Just (a,b)) = Just (unescape a, unescape b)
-
-
--- | Take an escape encoded string, and return the original
-unescape :: String -> String
-unescape ('+':xs) = ' ' : unescape xs
-unescape ('%':a:b:xs) = unescapeChar a b : unescape xs
-unescape (x:xs) = x : unescape xs
-unescape [] = []
-
-
--- | Takes two hex digits and returns the char
-unescapeChar :: Char -> Char -> Char
-unescapeChar a b = chr $ (f a * 16) + f b
-    where
-        f x | isDigit x = ord x - ord '0'
-            | otherwise = ord (toLower x) - ord 'a' + 10
-
-
-escape :: String -> String
-escape (x:xs) | isAlphaNum x = x : escape xs
-              | otherwise    = '%' : escapeChar x ++ escape xs
-escape [] = []
-
-
-escapeChar :: Char -> String
-escapeChar x = case showHex (ord x) "" of
-                  [x] -> ['0',x]
-                  x   -> x
− scripts/hoogle/src/Web/Lambdabot.hs
@@ -1,28 +0,0 @@-
-module Web.Lambdabot(query) where
-
-import Data.List
-import Data.Char
-
-query :: String -> IO (Maybe String)
-query x = do d <- readDatabase
-             return $ case filter ((==) (prepSearch x) . fst) d of
-                (x:xs) -> Just $ formatRes (snd x)
-                [] -> Nothing
-
-
-prepSearch = map toLower . reverse . dropWhile isSpace . reverse . dropWhile isSpace 
-
-formatRes = unwords . map linky . words
-
-linky x | "http://" `isPrefixOf` x = "<a href='" ++ x ++ "'>" ++ x ++ "</a>"
-        | otherwise = x
-
-
-readDatabase :: IO [(String, String)]
-readDatabase = do x <- readFile "res/lambdabot.txt"
-                  return $ f (lines x)
-    where
-        f (key:val:xs) = (key,val) : f xs
-        f _ = []
-
− scripts/hoogle/src/Web/Main.hs
@@ -1,277 +0,0 @@-{-
-    This file is part of Hoogle, (c) Neil Mitchell 2004-2005
-    http://www.cs.york.ac.uk/~ndm/hoogle/
-    
-    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License.
-    To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/
-    or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
--}
-
-{- |
-    The Web interface, expects to be run as a CGI script.
-    This does not require Haskell CGI etc, it just dumps HTML to the console
--}
-
-module Web.Main where
-
-import Hoogle.Hoogle
-import Hoogle.TextUtil
-
-import Web.CGI
-import Web.Lambdabot
-
-import Data.Char
-import System.Environment
-import Data.List
-import Data.Maybe
-import System.Directory
-
-
--- | Should the output be sent to the console and a file.
---   If true then both, the file is 'debugFile'.
---   Useful mainly for debugging.
-debugOut = False
-
-fakeArgs :: IO [(String, String)]
-fakeArgs = return $ [("q","map"), ("format","sherlock")]
-
-
--- | The main function
-main :: IO ()
-main = do args <- if debugOut then fakeArgs else cgiArgs
-          putStr "Content-type: text/html\n\n"
-          appendFile "log.txt" (show args ++ "\n")
-          let input = lookupDef "" "q" args
-          if null input then hoogleBlank args
-           else do let p = hoogleParse input
-                   case hoogleParseError p of
-                        Just x -> showError input x
-                        Nothing -> showResults p args
-
-
-lookupDef :: Eq key => val -> key -> [(key, val)] -> val
-lookupDef def key list = case lookup key list of
-                             Nothing -> def
-                             Just x -> x
-
-lookupDefInt :: Eq key => Int -> key -> [(key, String)] -> Int
-lookupDefInt def key list = case lookup key list of
-                              Nothing -> def
-                              Just x -> case reads x of
-                                           [(x,"")] -> x
-                                           _ -> def
-
-
--- | Show the search box
-hoogleBlank :: [(String,String)] -> IO ()
-hoogleBlank args = do
-    debugInit
-    outputFile (if ("package","gtk") `elem` args then "front_gtk" else "front")
-
-
--- | Replace all occurances of $ with the parameter
-outputFileParam :: FilePath -> String -> IO ()
-outputFileParam x param = do src <- readFile ("res/" ++ x ++ ".inc")
-                             putLine (f src)
-    where
-        f ('$':xs) = param ++ f xs
-        f (x:xs) = x : f xs
-        f [] = []
-
-outputFile :: FilePath -> IO ()
-outputFile x = do src <- readFile ("res/" ++ x ++ ".inc")
-                  putLine src
-
-
-showError :: String -> String -> IO ()
-showError input err =
-    do
-        debugInit
-        outputFileParam "prefix" input
-        outputFileParam "error" err
-        outputFileParam "suffix" input
-        
-
-
--- | Perform a search, dump the results using 'putLine'
-showResults :: Search -> [(String, String)] -> IO ()
-showResults input args =
-    do
-        let useGtk = ("package","gtk") `elem` args
-        res <- hoogleResults (if useGtk then "res/gtk.txt" else "res/hoogle.txt") input
-        let lres = length res
-            search = hoogleSearch input
-            tSearch = showText search
-            useres = take num $ drop start res
-
-        debugInit
-        outputFileParam (if useGtk then "prefix_gtk" else "prefix") tSearch
-
-        putLine $ 
-            "<table id='heading'><tr><td>" ++
-            "Searched for " ++ showTags search ++
-            "</td><td id='count'>" ++
-            (if lres == 0 then "No results found" else f lres) ++
-            "</td></tr></table>"
-        
-        case hoogleSuggest True input of
-            Nothing -> return ()
-            Just x -> putLine $ "<p id='suggest'><span class='name'>Hoogle says:</span> " ++
-                                showTags x ++ "</p>"
-
-        lam <- Web.Lambdabot.query (lookupDef "" "q" args)
-        case lam of
-            Nothing -> return ()
-            Just x -> putLine $ "<p id='lambdabot'><span class='name'>" ++
-                "<a href='http://www.cse.unsw.edu.au/~dons/lambdabot.html'>Lambdabot</a> says:</span> "
-                ++ x ++ "</p>"
-
-        if null res then outputFileParam "noresults" tSearch
-         else putLine $ "<table id='results'>" ++ concatMap showResult useres ++ "</table>"
-        
-        putLine $ g lres
-        
-        putLine $ if format == "sherlock" then sherlock useres else ""
-
-        outputFileParam "suffix" tSearch
-    where
-        start = lookupDefInt 0 "start" args
-        num   = lookupDefInt 25 "num"  args
-        format = lookupDef "" "format" args
-        nostart = filter ((/=) "start" . fst) args
-        
-        showPrev len pos = if start <= 0 then "" else
-            "<a href='?" ++ asCgi (("start",show (max 0 (start-num))):nostart) ++ "'><img src='res/" ++ pos ++ "_left.png' /></a> "
-        
-        showNext len pos = if start+num >= len then "" else
-            " <a href='?" ++ asCgi (("start",show (start+num)):nostart) ++ "'><img src='res/" ++ pos ++ "_right.png' /></a>"
-        
-    
-        f len =
-            showPrev len "top" ++
-            "Results <b>" ++ show (start+1) ++ "</b> - <b>" ++ show (min (start+num) len) ++ "</b> of <b>" ++ show len ++ "</b>" ++
-            showNext len "top"
-        
-        g len = if start == 0 && len <= num then "" else
-            "<div id='select'>" ++
-                showPrev len "bot" ++
-                concat (zipWith h [1..10] [0,num..len]) ++
-                showNext len "bot" ++
-            "</div>"
-
-        h num start2 = " <a " ++ (if start==start2 then "class='active' " else "") ++ "href='?" ++ asCgi (("start",show start2):nostart) ++ "'>" ++ show num ++ "</a> "
-        
-        
-
-sherlock :: [Result] -> String
-sherlock xs = "\n<!--\n<sherlock>\n" ++ concatMap f xs ++ "</sherlock>\n-->\n"
-    where
-        f res@(Result modu name typ _ _ _ _) =
-            "<item>" ++ hoodoc res True ++
-            "<abbr title='" ++ escapeHTML (showText typ) ++ "'>" ++ 
-            showTags name ++ "</abbr> " ++
-            "<span style='font-size:small;'>(" ++ showText modu ++ ")</span></a>" ++
-            "</item>\n"
-
-
-                 
-showTags :: TagStr -> String
-showTags (Str x) = x
-showTags (Tag "b" x) = "<b>" ++ showTags x ++ "</b>"
-showTags (Tag "u" x) = "<i>" ++ showTags x ++ "</i>"
-showTags (Tag "a" x) = "<a href='" ++ url ++ "'>" ++ showTags x ++ "</a>"
-    where
-        url = if "http://" `isPrefixOf` txt then txt else "?q=" ++ escape txt
-        txt = showText x
-        
-showTags (Tag [n] x) | n >= '1' && n <= '6' = 
-    "<span class='c" ++ n : "'>" ++ showTags x ++ "</span>"
-showTags (Tag n x) = showTags x
-showTags (Tags xs) = concatMap showTags xs
-
-
-showTagsLimit :: Int -> TagStr -> String
-showTagsLimit n x = if length s > n then take (n-2) s ++ ".." else s
-    where
-        s = showText x
-
-
-showResult :: Result -> String
-showResult res@(Result modu name typ _ _ _ _) = 
-    "<tr>" ++
-        "<td class='mod'>" ++
-            hoodoc res False ++ showTagsLimit 20 modu ++ "</a>" ++
-            (if null (showTags modu) then "" else ".") ++
-        "</td><td class='fun'>"
-            ++ openA ++ showTags name ++ "</a>" ++
-        "</td><td class='typ'>"
-            ++ openA ++ ":: " ++ showTags typ ++ "</a>" ++
-        "</td>" ++
-    "</tr>\n"
-        where
-           openA = hoodoc res True
-
-
-hoodoc :: Result -> Bool -> String
-hoodoc res full = f $
-        if not full
-            then modu ++ "&amp;mode=module"
-        else if resultMode res == "module"
-            then modu ++ (if null modu then "" else ".") ++ showText (resultName res) ++ "&amp;mode=module"
-        else showText (resultModule res) ++
-             "&amp;name=" ++ escape (showText (resultName res)) ++
-             "&amp;mode=" ++ resultMode res
-    where
-        modu = showText (resultModule res)
-        f x = "<a href='hoodoc.cgi?module=" ++ x ++ "'>"
-
-
--- | The file to output to if 'debugOut' is True
-debugFile = "temp.htm"
-
-
--- | Clear the debugging file
-debugInit = if debugOut then writeFile debugFile "" else return ()
-
--- | Write out a line, to console and optional to a debugging file
-putLine :: String -> IO ()
-putLine x = do putStrLn x
-               if debugOut then appendFile debugFile x else return ()
-
-
--- | Read the hit count, increment it, return the new value.
---   Hit count is stored in hits.txt
-hitCount :: IO Integer
-hitCount = do x <- readHitCount
-              -- HUGS SCREWS THIS UP WITHOUT `seq`
-              -- this should not be needed, but it is
-              -- (we think)
-              x `seq` writeHitCount (x+1)
-              return (x+1)
-    where
-        hitFile = "hits.txt"
-        
-        readHitCount :: IO Integer
-        readHitCount =
-            do exists <- doesFileExist hitFile
-               if exists
-                   then do src <- readFile hitFile
-                           return (parseHitCount src)
-                   else return 0
-        
-        writeHitCount :: Integer -> IO ()
-        writeHitCount x = writeFile hitFile (show x)
-        
-        parseHitCount = read . head . lines
-              
-
--- | Take a piece of text and escape all the HTML special bits
-escapeHTML :: String -> String
-escapeHTML = concatMap f
-    where
-        f :: Char -> String
-        f '<' = "&lt;"
-        f '>' = "&gt;"
-        f '&' = "&amp;"
-        f  x  = x:[]
-
− scripts/hoogle/src/Web/res/error.inc
@@ -1,14 +0,0 @@-<table id='heading'>
-	<tr>
-		<td>Invalid Search</td>
-		<td id='count'>No results found</td>
-	</tr>
-</table>
-
-<div id="failure">
-	Error, your search was invalid:<br/>
-	$
-	<ul>
-		<li>This is probably a parse error, check for matching brackets etc.</li>
-	</ul>
-</div>
− scripts/hoogle/src/Web/res/front.inc
@@ -1,83 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-		<title>Hoogle</title>
-		<link type="text/css" rel="stylesheet" href="res/hoogle.css" />
-
-		<script type="text/javascript">
-function addHoogle()
-{
-	addEngine('hoogle','png','Programming','4691');
-}
-
-function addEngine(name,ext,cat,pid)
-{
-  if ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) {
-    window.sidebar.addSearchEngine(
-      "http://mycroft.mozdev.org/install.php/" + pid + "/" + name + ".src",
-      "http://mycroft.mozdev.org/install.php/" + pid + "/" + name + "."+ ext, name, cat );
-  } else {
-    alert("You will need a browser which supports Sherlock to install this plugin.");
-  }
-}
-
-function on_load()
-{
-	document.getElementById('txt').focus();
-}
-		</script>
-	</head>
-	<body onload="on_load()" id="front">
-
-
-<table id="header">
-	<tr>
-		<td style="text-align:left;">
-			<a href="http://www.haskell.org/">haskell.org</a>
-		</td>
-		<td style="text-align:right;">
-			<!--[if IE]>
-			<div style="display:none;">
-			<![endif]-->
-			<a href="javascript:addHoogle()">Firefox plugin</a> |
-			<!--[if IE]>
-			</div>
-			<![endif]-->
-			<a href="http://www.haskell.org/haskellwiki/Hoogle/Tutorial">Tutorial</a> |
-			<a href="http://www.haskell.org/haskellwiki/Hoogle">Manual</a>
-		</td>
-</table>
-
-<div style="width:100%;margin-top:30px;margin-bottom:30px;text-align:center;">
-	<img style="vertical-align:top;" src="res/hoogle_large.png" alt="Hoogle" />
-	<sup style="font-family:serif;font-weight:bold;font-size:16pt;">3
-		<span style="color:#b00;">[&beta;]</span>
-	</sup><br/>
-	<i>The Haskell API Search Engine</i><br/>
-	<form id="input" action="?" method="get"
-		style="text-align:center;padding-top:20px;display:block;">
-		<div>
-			<input name="q" id="txt" type="text" style="width:300px;margin-right:5px;" />
-			<input style="padding-left:15px;padding-right:15px;" type="submit" value="Search" />
-		</div>
-	</form>
-
-	<div style="margin:auto;margin-top:40px;padding:3px;width:300px;border:2px solid #cc0;background-color:#ffc;font-size:10pt;text-align:left;">
-		Example searches:<br/>
-		&nbsp; <a href="?q=map">map</a><br/>
-		&nbsp; <a href="?q=(a%20-%3E%20b)%20-%3E%20[a]%20-%3E%20[b]">(a -&gt; b) -&gt; [a] -&gt; [b]</a><br/>
-		&nbsp; <a href="?q=Ord%20a%20%3D%3E%20[a]%20-%3E%20[a]">Ord a =&gt; [a] -&gt; [a]</a>
-	</div>
-</div>
-
-<p style="text-align:center;font-size:10pt;font-style:italic;margin-bottom:3px;">
-	"Roses are red. Violets are blue. <a href="http://www.google.com/">Google</a> rocks. Homage to you."
-</p>
-<p id="footer" style="margin-top:3px;">
-	&copy; <a href="http://www.cs.york.ac.uk/~ndm/">Neil Mitchell</a> 2004-2006
-</p>
-
-
-	</body>
-</html>
− scripts/hoogle/src/Web/res/front_gtk.inc
@@ -1,87 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-		<title>Hoogle</title>
-		<link type="text/css" rel="stylesheet" href="res/hoogle.css" />
-
-		<script type="text/javascript">
-function addHoogle()
-{
-	addEngine('hoogle','png','Programming','4691');
-}
-
-function addEngine(name,ext,cat,pid)
-{
-  if ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) {
-    window.sidebar.addSearchEngine(
-      "http://mycroft.mozdev.org/install.php/" + pid + "/" + name + ".src",
-      "http://mycroft.mozdev.org/install.php/" + pid + "/" + name + "."+ ext, name, cat );
-  } else {
-    alert("You will need a browser which supports Sherlock to install this plugin.");
-  }
-}
-
-function on_load()
-{
-	document.getElementById('txt').focus();
-}
-		</script>
-	</head>
-	<body onload="on_load()" id="front">
-
-
-<table id="header">
-	<tr>
-		<td style="text-align:left;">
-			<a href="http://www.haskell.org/">haskell.org</a>
-		</td>
-		<td style="text-align:right;">
-			<!--[if IE]>
-			<div style="display:none;">
-			<![endif]-->
-			<a href="javascript:addHoogle()">Firefox plugin</a> |
-			<!--[if IE]>
-			</div>
-			<![endif]-->
-			<a href="http://www.haskell.org/haskellwiki/Hoogle/Tutorial">Tutorial</a> |
-			<a href="http://www.haskell.org/haskellwiki/Hoogle">Manual</a>
-		</td>
-</table>
-
-<img style="float:left;" src="http://gtk.org/images/gtk-logo-rgb.gif" alt="Gtk" />
-
-<div style="width:100%;margin-top:30px;margin-bottom:30px;text-align:center;">
-	<img style="vertical-align:top;" src="res/hoogle_large.png" alt="Hoogle" />
-	<sup style="font-family:serif;font-weight:bold;font-size:16pt;">3
-		<span style="color:#b00;">[&beta;]</span>
-	</sup>
-	<br/>
-	<i>The Haskell API Search Engine</i> - <a href="http://haskell.org/gtk2hs/">Gtk2Hs</a> edition<br/>
-	<form id="input" action="?" method="get"
-		style="text-align:center;padding-top:20px;display:block;">
-		<div>
-			<input type="hidden" name="package" value="gtk" />
-			<input name="q" id="txt" type="text" style="width:300px;margin-right:5px;" />
-			<input style="padding-left:15px;padding-right:15px;" type="submit" value="Search" />
-		</div>
-	</form>
-
-	<div style="margin:auto;margin-top:40px;padding:3px;width:300px;border:2px solid #cc0;background-color:#ffc;font-size:10pt;text-align:left;">
-		Example searches:<br/>
-		&nbsp; <a href="?q=map">map</a><br/>
-		&nbsp; <a href="?q=(a%20-%3E%20b)%20-%3E%20[a]%20-%3E%20[b]">(a -&gt; b) -&gt; [a] -&gt; [b]</a><br/>
-		&nbsp; <a href="?q=Ord%20a%20%3D%3E%20[a]%20-%3E%20[a]">Ord a =&gt; [a] -&gt; [a]</a>
-	</div>
-</div>
-
-<p style="text-align:center;font-size:10pt;font-style:italic;margin-bottom:3px;">
-	"Roses are red. Violets are blue. <a href="http://www.google.com/">Google</a> rocks. Homage to you."
-</p>
-<p id="footer" style="margin-top:3px;">
-	&copy; <a href="http://www.cs.york.ac.uk/~ndm/">Neil Mitchell</a> 2004-2006
-</p>
-
-
-	</body>
-</html>
− scripts/hoogle/src/Web/res/gtk.txt
@@ -1,7529 +0,0 @@--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--module System.Glib.Types-newtype GObject-GObject :: ForeignPtr GObject -> GObject-instance GObjectClass GObject-class GObjectClass o-instance GObjectClass AboutDialog-instance GObjectClass AccelGroup-instance GObjectClass AccelLabel-instance GObjectClass AccelMap-instance GObjectClass Action-instance GObjectClass ActionGroup-instance GObjectClass Adjustment-instance GObjectClass Alignment-instance GObjectClass Arrow-instance GObjectClass AspectFrame-instance GObjectClass Bin-instance GObjectClass Box-instance GObjectClass Button-instance GObjectClass ButtonBox-instance GObjectClass CList-instance GObjectClass CTree-instance GObjectClass Calendar-instance GObjectClass CellRenderer-instance GObjectClass CellRendererPixbuf-instance GObjectClass CellRendererText-instance GObjectClass CellRendererToggle-instance GObjectClass CellView-instance GObjectClass CheckButton-instance GObjectClass CheckMenuItem-instance GObjectClass Clipboard-instance GObjectClass ColorButton-instance GObjectClass ColorSelection-instance GObjectClass ColorSelectionDialog-instance GObjectClass Colormap-instance GObjectClass Combo-instance GObjectClass ComboBox-instance GObjectClass ComboBoxEntry-instance GObjectClass Container-instance GObjectClass Curve-instance GObjectClass Dialog-instance GObjectClass Display-instance GObjectClass DragContext-instance GObjectClass DrawWindow-instance GObjectClass Drawable-instance GObjectClass DrawingArea-instance GObjectClass Editable-instance GObjectClass Entry-instance GObjectClass EntryCompletion-instance GObjectClass EventBox-instance GObjectClass Expander-instance GObjectClass FileChooser-instance GObjectClass FileChooserButton-instance GObjectClass FileChooserDialog-instance GObjectClass FileChooserWidget-instance GObjectClass FileFilter-instance GObjectClass FileSelection-instance GObjectClass Fixed-instance GObjectClass Font-instance GObjectClass FontButton-instance GObjectClass FontFace-instance GObjectClass FontFamily-instance GObjectClass FontMap-instance GObjectClass FontSelection-instance GObjectClass FontSelectionDialog-instance GObjectClass FontSet-instance GObjectClass Frame-instance GObjectClass GC-instance GObjectClass GConf-instance GObjectClass GObject-instance GObjectClass GammaCurve-instance GObjectClass GladeXML-instance GObjectClass HBox-instance GObjectClass HButtonBox-instance GObjectClass HPaned-instance GObjectClass HRuler-instance GObjectClass HScale-instance GObjectClass HScrollbar-instance GObjectClass HSeparator-instance GObjectClass HandleBox-instance GObjectClass IMContext-instance GObjectClass IMMulticontext-instance GObjectClass IconFactory-instance GObjectClass IconView-instance GObjectClass Image-instance GObjectClass ImageMenuItem-instance GObjectClass InputDialog-instance GObjectClass Invisible-instance GObjectClass Item-instance GObjectClass ItemFactory-instance GObjectClass Label-instance GObjectClass Layout-instance GObjectClass List-instance GObjectClass ListItem-instance GObjectClass ListStore-instance GObjectClass Menu-instance GObjectClass MenuBar-instance GObjectClass MenuItem-instance GObjectClass MenuShell-instance GObjectClass MenuToolButton-instance GObjectClass MessageDialog-instance GObjectClass Misc-instance GObjectClass MozEmbed-instance GObjectClass Notebook-instance GObjectClass Object-instance GObjectClass OptionMenu-instance GObjectClass Paned-instance GObjectClass PangoContext-instance GObjectClass PangoLayoutRaw-instance GObjectClass Pixbuf-instance GObjectClass Pixmap-instance GObjectClass Plug-instance GObjectClass Preview-instance GObjectClass ProgressBar-instance GObjectClass RadioAction-instance GObjectClass RadioButton-instance GObjectClass RadioMenuItem-instance GObjectClass RadioToolButton-instance GObjectClass Range-instance GObjectClass RcStyle-instance GObjectClass Ruler-instance GObjectClass Scale-instance GObjectClass Screen-instance GObjectClass Scrollbar-instance GObjectClass ScrolledWindow-instance GObjectClass Separator-instance GObjectClass SeparatorMenuItem-instance GObjectClass SeparatorToolItem-instance GObjectClass Settings-instance GObjectClass SizeGroup-instance GObjectClass Socket-instance GObjectClass SourceBuffer-instance GObjectClass SourceLanguage-instance GObjectClass SourceLanguagesManager-instance GObjectClass SourceMarker-instance GObjectClass SourceStyleScheme-instance GObjectClass SourceTag-instance GObjectClass SourceTagTable-instance GObjectClass SourceView-instance GObjectClass SpinButton-instance GObjectClass Statusbar-instance GObjectClass Style-instance GObjectClass Table-instance GObjectClass TearoffMenuItem-instance GObjectClass TextBuffer-instance GObjectClass TextChildAnchor-instance GObjectClass TextMark-instance GObjectClass TextTag-instance GObjectClass TextTagTable-instance GObjectClass TextView-instance GObjectClass TipsQuery-instance GObjectClass ToggleAction-instance GObjectClass ToggleButton-instance GObjectClass ToggleToolButton-instance GObjectClass ToolButton-instance GObjectClass ToolItem-instance GObjectClass Toolbar-instance GObjectClass Tooltips-instance GObjectClass TreeModel-instance GObjectClass TreeModelSort-instance GObjectClass TreeSelection-instance GObjectClass TreeStore-instance GObjectClass TreeView-instance GObjectClass TreeViewColumn-instance GObjectClass UIManager-instance GObjectClass VBox-instance GObjectClass VButtonBox-instance GObjectClass VPaned-instance GObjectClass VRuler-instance GObjectClass VScale-instance GObjectClass VScrollbar-instance GObjectClass VSeparator-instance GObjectClass Viewport-instance GObjectClass Widget-instance GObjectClass Window-instance GObjectClass WindowGroup-toGObject :: GObjectClass o => o -> GObject-fromGObject :: GObjectClass o => GObject -> o-castToGObject :: GObjectClass obj => obj -> obj--module System.Glib.GList-type GList = Ptr ()-readGList :: GList -> IO [Ptr a]-fromGList :: GList -> IO [Ptr a]-toGList :: [Ptr a] -> IO GList-type GSList = Ptr ()-readGSList :: GSList -> IO [Ptr a]-fromGSList :: GSList -> IO [Ptr a]-fromGSListRev :: GSList -> IO [Ptr a]-toGSList :: [Ptr a] -> IO GSList--module System.Glib.Flags-class (Enum a, Bounded a) => Flags a-instance Flags AccelFlags-instance Flags AttachOptions-instance Flags CalendarDisplayOptions-instance Flags EventMask-instance Flags ExtensionMode-instance Flags FileFilterFlags-instance Flags FontMask-instance Flags IOCondition-instance Flags InputCondition-instance Flags Modifier-instance Flags SourceSearchFlags-instance Flags TextSearchFlags-instance Flags TreeModelFlags-instance Flags UIManagerItemType-instance Flags WindowState-fromFlags :: Flags a => [a] -> Int-toFlags :: Flags a => Int -> [a]--module System.Glib.FFI-with :: Storable a => a -> (Ptr a -> IO b) -> IO b-nullForeignPtr :: ForeignPtr a-maybeNull :: (IO (Ptr a) -> IO a) -> IO (Ptr a) -> IO (Maybe a)-withForeignPtrs :: [ForeignPtr a] -> ([Ptr a] -> IO b) -> IO b-withArrayLen :: Storable a => [a] -> (Int -> Ptr a -> IO b) -> IO b--module System.Glib.GType-type GType = CULong-typeInstanceIsA :: Ptr () -> GType -> Bool--module System.Glib.GTypeConstants-invalid :: GType-uint :: GType-int :: GType-uchar :: GType-char :: GType-bool :: GType-enum :: GType-flags :: GType-pointer :: GType-float :: GType-double :: GType-string :: GType-object :: GType-boxed :: GType--module System.Glib.GValue-newtype GValue-GValue :: Ptr GValue -> GValue-valueInit :: GValue -> GType -> IO ()-valueUnset :: GValue -> IO ()-valueGetType :: GValue -> IO GType-allocaGValue :: (GValue -> IO b) -> IO b--module System.Glib.GParameter-newtype GParameter-GParameter :: (String, GValue) -> GParameter-instance Storable GParameter--module System.Glib.GObject-objectNew :: GType -> [(String, GValue)] -> IO (Ptr GObject)-objectRef :: GObjectClass obj => Ptr obj -> IO ()-objectUnref :: Ptr a -> FinalizerPtr a-makeNewGObject :: GObjectClass obj => (ForeignPtr obj -> obj) -> IO (Ptr obj) -> IO obj-type DestroyNotify = FunPtr (Ptr () -> IO ())-mkFunPtrDestroyNotify :: FunPtr a -> IO DestroyNotify-type GWeakNotify = FunPtr (Ptr () -> Ptr GObject -> IO ())-objectWeakref :: GObjectClass o => o -> IO () -> IO GWeakNotify-objectWeakunref :: GObjectClass o => o -> GWeakNotify -> IO ()--module System.Glib.MainLoop-type HandlerId = CUInt-timeoutAdd :: IO Bool -> Int -> IO HandlerId-timeoutAddFull :: IO Bool -> Priority -> Int -> IO HandlerId-timeoutRemove :: HandlerId -> IO ()-idleAdd :: IO Bool -> Priority -> IO HandlerId-idleRemove :: HandlerId -> IO ()-data IOCondition-instance Bounded IOCondition-instance Enum IOCondition-instance Eq IOCondition-instance Flags IOCondition-inputAdd :: FD -> [IOCondition] -> Priority -> IO Bool -> IO HandlerId-inputRemove :: HandlerId -> IO ()-type Priority = Int-priorityLow :: Int-priorityDefaultIdle :: Int-priorityHighIdle :: Int-priorityDefault :: Int-priorityHigh :: Int--module System.Glib.UTFString-withUTFString :: String -> (CString -> IO a) -> IO a-withUTFStringLen :: String -> (CStringLen -> IO a) -> IO a-newUTFString :: String -> IO CString-newUTFStringLen :: String -> IO CStringLen-peekUTFString :: CString -> IO String-peekUTFStringLen :: CStringLen -> IO String-readUTFString :: CString -> IO String-readCString :: CString -> IO String-withUTFStrings :: [String] -> ([CString] -> IO a) -> IO a-withUTFStringArray :: [String] -> (Ptr CString -> IO a) -> IO a-withUTFStringArray0 :: [String] -> (Ptr CString -> IO a) -> IO a-peekUTFStringArray :: Int -> Ptr CString -> IO [String]-peekUTFStringArray0 :: Ptr CString -> IO [String]-data UTFCorrection-instance Show UTFCorrection-genUTFOfs :: String -> UTFCorrection-ofsToUTF :: Int -> UTFCorrection -> Int-ofsFromUTF :: Int -> UTFCorrection -> Int--module System.Glib.GError-data GError-GError :: GErrorDomain -> GErrorCode -> GErrorMessage -> GError-instance Storable GError-instance Typeable GError-type GErrorDomain = GQuark-type GErrorCode = Int-type GErrorMessage = String-catchGError :: IO a -> (GError -> IO a) -> IO a-catchGErrorJust :: GErrorClass err => err -> IO a -> (GErrorMessage -> IO a) -> IO a-catchGErrorJustDomain :: GErrorClass err => IO a -> (err -> GErrorMessage -> IO a) -> IO a-handleGError :: (GError -> IO a) -> IO a -> IO a-handleGErrorJust :: GErrorClass err => err -> (GErrorMessage -> IO a) -> IO a -> IO a-handleGErrorJustDomain :: GErrorClass err => (err -> GErrorMessage -> IO a) -> IO a -> IO a-failOnGError :: IO a -> IO a-throwGError :: GError -> IO a-class Enum err => GErrorClass err-gerrorDomain :: GErrorClass err => err -> GErrorDomain-instance GErrorClass FileChooserError-instance GErrorClass GConfError-instance GErrorClass PixbufError-propagateGError :: (Ptr (Ptr ()) -> IO a) -> IO a-checkGError :: (Ptr (Ptr ()) -> IO a) -> (GError -> IO a) -> IO a-checkGErrorWithCont :: (Ptr (Ptr ()) -> IO b) -> (GError -> IO a) -> (b -> IO a) -> IO a--module System.Glib.GValueTypes-valueSetUInt :: GValue -> Word -> IO ()-valueGetUInt :: GValue -> IO Word-valueSetInt :: GValue -> Int -> IO ()-valueGetInt :: GValue -> IO Int-valueSetBool :: GValue -> Bool -> IO ()-valueGetBool :: GValue -> IO Bool-valueSetPointer :: GValue -> Ptr () -> IO ()-valueGetPointer :: GValue -> IO (Ptr ())-valueSetFloat :: GValue -> Float -> IO ()-valueGetFloat :: GValue -> IO Float-valueSetDouble :: GValue -> Double -> IO ()-valueGetDouble :: GValue -> IO Double-valueSetEnum :: Enum enum => GValue -> enum -> IO ()-valueGetEnum :: Enum enum => GValue -> IO enum-valueSetFlags :: Flags flag => GValue -> [flag] -> IO ()-valueGetFlags :: Flags flag => GValue -> IO [flag]-valueSetString :: GValue -> String -> IO ()-valueGetString :: GValue -> IO String-valueSetMaybeString :: GValue -> Maybe String -> IO ()-valueGetMaybeString :: GValue -> IO (Maybe String)-valueSetGObject :: GObjectClass gobj => GValue -> gobj -> IO ()-valueGetGObject :: GObjectClass gobj => GValue -> IO gobj--module System.Glib.Signals-data ConnectId o-ConnectId :: CULong -> o -> ConnectId o-disconnect :: GObjectClass obj => ConnectId obj -> IO ()--module System.Gnome.GConf.GConfValue-class GConfValueClass value => GConfPrimitiveValueClass value-instance GConfPrimitiveValueClass Bool-instance GConfPrimitiveValueClass Double-instance GConfPrimitiveValueClass Int-instance GConfPrimitiveValueClass String-class GConfValueClass value-marshalFromGConfValue :: GConfValueClass value => GConfValue -> IO value-marshalToGConfValue :: GConfValueClass value => value -> IO GConfValue-instance GConfValueClass Bool-instance GConfValueClass Double-instance GConfValueClass GConfValueDyn-instance GConfValueClass Int-instance GConfValueClass String-instance (GConfPrimitiveValueClass a, GConfPrimitiveValueClass b) => GConfValueClass (a, b)-instance GConfValueClass value => GConfValueClass Maybe value-instance GConfPrimitiveValueClass a => GConfValueClass [a]-marshalFromGConfValue :: GConfValueClass value => GConfValue -> IO value-marshalToGConfValue :: GConfValueClass value => value -> IO GConfValue-newtype GConfValue-GConfValue :: Ptr GConfValue -> GConfValue-data GConfValueDyn-GConfValueString :: String -> GConfValueDyn-GConfValueInt :: Int -> GConfValueDyn-GConfValueFloat :: Double -> GConfValueDyn-GConfValueBool :: Bool -> GConfValueDyn-GConfValueSchema :: GConfValueDyn-GConfValueList :: [GConfValueDyn] -> GConfValueDyn-GConfValuePair :: (GConfValueDyn, GConfValueDyn) -> GConfValueDyn-instance GConfValueClass GConfValueDyn--module System.Gnome.GConf.GConfClient-data GConf-instance GConfClass GConf-instance GObjectClass GConf-data GConfPreloadType-instance Enum GConfPreloadType-data GConfError-instance Enum GConfError-instance GErrorClass GConfError-gconfGetDefault :: IO GConf-gconfAddDir :: GConf -> String -> IO ()-gconfRemoveDir :: GConf -> String -> IO ()-gconfNotifyAdd :: GConfValueClass value => GConf -> String -> (String -> value -> IO ()) -> IO GConfConnectId-gconfNotifyRemove :: GConf -> GConfConnectId -> IO ()-onValueChanged :: GConf -> (String -> Maybe GConfValueDyn -> IO ()) -> IO (ConnectId GConf)-afterValueChanged :: GConf -> (String -> Maybe GConfValueDyn -> IO ()) -> IO (ConnectId GConf)-gconfGet :: GConfValueClass value => GConf -> String -> IO value-gconfSet :: GConfValueClass value => GConf -> String -> value -> IO ()-gconfGetWithoutDefault :: GConfValueClass value => GConf -> String -> IO value-gconfGetDefaultFromSchema :: GConfValueClass value => GConf -> String -> IO value-gconfUnset :: GConf -> String -> IO ()-gconfClearCache :: GConf -> IO ()-gconfPreload :: GConf -> String -> GConfPreloadType -> IO ()-gconfSuggestSync :: GConf -> IO ()-gconfAllEntries :: GConf -> String -> IO [(String, GConfValueDyn)]-gconfAllDirs :: GConf -> String -> IO [String]-gconfDirExists :: GConf -> String -> IO Bool-class GConfValueClass value-instance GConfValueClass Bool-instance GConfValueClass Double-instance GConfValueClass GConfValueDyn-instance GConfValueClass Int-instance GConfValueClass String-instance (GConfPrimitiveValueClass a, GConfPrimitiveValueClass b) => GConfValueClass (a, b)-instance GConfValueClass value => GConfValueClass Maybe value-instance GConfPrimitiveValueClass a => GConfValueClass [a]-class GConfValueClass value => GConfPrimitiveValueClass value-instance GConfPrimitiveValueClass Bool-instance GConfPrimitiveValueClass Double-instance GConfPrimitiveValueClass Int-instance GConfPrimitiveValueClass String-data GConfValue-data GConfValueDyn-GConfValueString :: String -> GConfValueDyn-GConfValueInt :: Int -> GConfValueDyn-GConfValueFloat :: Double -> GConfValueDyn-GConfValueBool :: Bool -> GConfValueDyn-GConfValueSchema :: GConfValueDyn-GConfValueList :: [GConfValueDyn] -> GConfValueDyn-GConfValuePair :: (GConfValueDyn, GConfValueDyn) -> GConfValueDyn-instance GConfValueClass GConfValueDyn--module System.Gnome.GConf--module System.Glib.Attributes-type Attr o a = ReadWriteAttr o a a-type ReadAttr o a = ReadWriteAttr o a ()-type WriteAttr o b = ReadWriteAttr o () b-data ReadWriteAttr o a b-data AttrOp o-:= :: ReadWriteAttr o a b -> b -> AttrOp o-:~ :: ReadWriteAttr o a b -> (a -> b) -> AttrOp o-:=> :: ReadWriteAttr o a b -> IO b -> AttrOp o-:~> :: ReadWriteAttr o a b -> (a -> IO b) -> AttrOp o-::= :: ReadWriteAttr o a b -> (o -> b) -> AttrOp o-::~ :: ReadWriteAttr o a b -> (o -> a -> b) -> AttrOp o-get :: o -> ReadWriteAttr o a b -> IO a-set :: o -> [AttrOp o] -> IO ()-newAttr :: (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b-readAttr :: (o -> IO a) -> ReadAttr o a-writeAttr :: (o -> b -> IO ()) -> WriteAttr o b--module System.Glib.Properties-objectSetPropertyInt :: GObjectClass gobj => String -> gobj -> Int -> IO ()-objectGetPropertyInt :: GObjectClass gobj => String -> gobj -> IO Int-objectSetPropertyUInt :: GObjectClass gobj => String -> gobj -> Int -> IO ()-objectGetPropertyUInt :: GObjectClass gobj => String -> gobj -> IO Int-objectSetPropertyBool :: GObjectClass gobj => String -> gobj -> Bool -> IO ()-objectGetPropertyBool :: GObjectClass gobj => String -> gobj -> IO Bool-objectSetPropertyEnum :: (GObjectClass gobj, Enum enum) => GType -> String -> gobj -> enum -> IO ()-objectGetPropertyEnum :: (GObjectClass gobj, Enum enum) => GType -> String -> gobj -> IO enum-objectSetPropertyFlags :: (GObjectClass gobj, Flags flag) => String -> gobj -> [flag] -> IO ()-objectGetPropertyFlags :: (GObjectClass gobj, Flags flag) => String -> gobj -> IO [flag]-objectSetPropertyFloat :: GObjectClass gobj => String -> gobj -> Float -> IO ()-objectGetPropertyFloat :: GObjectClass gobj => String -> gobj -> IO Float-objectSetPropertyDouble :: GObjectClass gobj => String -> gobj -> Double -> IO ()-objectGetPropertyDouble :: GObjectClass gobj => String -> gobj -> IO Double-objectSetPropertyString :: GObjectClass gobj => String -> gobj -> String -> IO ()-objectGetPropertyString :: GObjectClass gobj => String -> gobj -> IO String-objectSetPropertyMaybeString :: GObjectClass gobj => String -> gobj -> Maybe String -> IO ()-objectGetPropertyMaybeString :: GObjectClass gobj => String -> gobj -> IO (Maybe String)-objectSetPropertyGObject :: (GObjectClass gobj, GObjectClass gobj') => GType -> String -> gobj -> gobj' -> IO ()-objectGetPropertyGObject :: (GObjectClass gobj, GObjectClass gobj') => GType -> String -> gobj -> IO gobj'-objectSetPropertyInternal :: GObjectClass gobj => GType -> (GValue -> a -> IO ()) -> String -> gobj -> a -> IO ()-objectGetPropertyInternal :: GObjectClass gobj => GType -> (GValue -> IO a) -> String -> gobj -> IO a-newAttrFromIntProperty :: GObjectClass gobj => String -> Attr gobj Int-readAttrFromIntProperty :: GObjectClass gobj => String -> ReadAttr gobj Int-newAttrFromUIntProperty :: GObjectClass gobj => String -> Attr gobj Int-writeAttrFromUIntProperty :: GObjectClass gobj => String -> WriteAttr gobj Int-newAttrFromBoolProperty :: GObjectClass gobj => String -> Attr gobj Bool-newAttrFromFloatProperty :: GObjectClass gobj => String -> Attr gobj Float-newAttrFromDoubleProperty :: GObjectClass gobj => String -> Attr gobj Double-newAttrFromEnumProperty :: (GObjectClass gobj, Enum enum) => String -> GType -> Attr gobj enum-readAttrFromEnumProperty :: (GObjectClass gobj, Enum enum) => String -> GType -> ReadAttr gobj enum-newAttrFromFlagsProperty :: (GObjectClass gobj, Flags flag) => String -> Attr gobj [flag]-newAttrFromStringProperty :: GObjectClass gobj => String -> Attr gobj String-readAttrFromStringProperty :: GObjectClass gobj => String -> ReadAttr gobj String-writeAttrFromStringProperty :: GObjectClass gobj => String -> WriteAttr gobj String-newAttrFromMaybeStringProperty :: GObjectClass gobj => String -> Attr gobj (Maybe String)-newAttrFromObjectProperty :: (GObjectClass gobj, GObjectClass gobj', GObjectClass gobj'') => String -> GType -> ReadWriteAttr gobj gobj' gobj''-writeAttrFromObjectProperty :: (GObjectClass gobj, GObjectClass gobj') => String -> GType -> WriteAttr gobj gobj'--module System.Glib.StoreValue-data TMType-TMinvalid :: TMType-TMuint :: TMType-TMint :: TMType-TMboolean :: TMType-TMenum :: TMType-TMflags :: TMType-TMfloat :: TMType-TMdouble :: TMType-TMstring :: TMType-TMobject :: TMType-instance Enum TMType-data GenericValue-GVuint :: Word -> GenericValue-GVint :: Int -> GenericValue-GVboolean :: Bool -> GenericValue-GVenum :: Int -> GenericValue-GVflags :: Int -> GenericValue-GVfloat :: Float -> GenericValue-GVdouble :: Double -> GenericValue-GVstring :: Maybe String -> GenericValue-GVobject :: GObject -> GenericValue-valueSetGenericValue :: GValue -> GenericValue -> IO ()-valueGetGenericValue :: GValue -> IO GenericValue--module System.Glib--module Graphics.UI.Gtk.Windows.WindowGroup-data WindowGroup-instance GObjectClass WindowGroup-instance WindowGroupClass WindowGroup-class GObjectClass o => WindowGroupClass o-instance WindowGroupClass WindowGroup-castToWindowGroup :: GObjectClass obj => obj -> WindowGroup-toWindowGroup :: WindowGroupClass o => o -> WindowGroup-windowGroupNew :: IO WindowGroup-windowGroupAddWindow :: (WindowGroupClass self, WindowClass window) => self -> window -> IO ()-windowGroupRemoveWindow :: (WindowGroupClass self, WindowClass window) => self -> window -> IO ()--module Graphics.UI.Gtk.TreeList.CellRenderer-data CellRenderer-instance CellRendererClass CellRenderer-instance GObjectClass CellRenderer-instance ObjectClass CellRenderer-class ObjectClass o => CellRendererClass o-instance CellRendererClass CellRenderer-instance CellRendererClass CellRendererPixbuf-instance CellRendererClass CellRendererText-instance CellRendererClass CellRendererToggle-castToCellRenderer :: GObjectClass obj => obj -> CellRenderer-toCellRenderer :: CellRendererClass o => o -> CellRenderer-data Attribute cr a-Attribute :: [String] -> [TMType] -> (a -> IO [GenericValue]) -> ([GenericValue] -> IO a) -> Attribute cr a-cellRendererSet :: CellRendererClass cr => cr -> Attribute cr val -> val -> IO ()-cellRendererGet :: CellRendererClass cr => cr -> Attribute cr val -> IO val--module Graphics.UI.Gtk.SourceView.SourceMarker-data SourceMarker-instance GObjectClass SourceMarker-instance SourceMarkerClass SourceMarker-instance TextMarkClass SourceMarker-castToSourceMarker :: GObjectClass obj => obj -> SourceMarker-sourceMarkerSetMarkerType :: SourceMarker -> String -> IO ()-sourceMarkerGetMarkerType :: SourceMarker -> IO String-sourceMarkerGetLine :: SourceMarker -> IO Int-sourceMarkerGetName :: SourceMarker -> IO String-sourceMarkerGetBuffer :: SourceMarker -> IO SourceBuffer-sourceMarkerNext :: SourceMarker -> IO SourceMarker-sourceMarkerPrev :: SourceMarker -> IO SourceMarker--module Graphics.UI.Gtk.SourceView.SourceLanguagesManager-data SourceLanguagesManager-instance GObjectClass SourceLanguagesManager-instance SourceLanguagesManagerClass SourceLanguagesManager-castToSourceLanguagesManager :: GObjectClass obj => obj -> SourceLanguagesManager-sourceLanguagesManagerNew :: IO SourceLanguagesManager-sourceLanguagesManagerGetAvailableLanguages :: SourceLanguagesManager -> IO [SourceLanguage]-sourceLanguagesManagerGetLanguageFromMimeType :: SourceLanguagesManager -> String -> IO (Maybe SourceLanguage)-sourceLanguagesManagerGetLangFilesDirs :: SourceLanguagesManager -> IO [FilePath]--module Graphics.UI.Gtk.Pango.Enums-data FontStyle-StyleNormal :: FontStyle-StyleOblique :: FontStyle-StyleItalic :: FontStyle-instance Enum FontStyle-instance Eq FontStyle-instance Show FontStyle-data Weight-WeightUltralight :: Weight-WeightLight :: Weight-WeightNormal :: Weight-WeightSemibold :: Weight-WeightBold :: Weight-WeightUltrabold :: Weight-WeightHeavy :: Weight-instance Enum Weight-instance Eq Weight-instance Show Weight-data Variant-VariantNormal :: Variant-VariantSmallCaps :: Variant-instance Enum Variant-instance Eq Variant-instance Show Variant-data Stretch-StretchUltraCondensed :: Stretch-StretchExtraCondensed :: Stretch-StretchCondensed :: Stretch-StretchSemiCondensed :: Stretch-StretchNormal :: Stretch-StretchSemiExpanded :: Stretch-StretchExpanded :: Stretch-StretchExtraExpanded :: Stretch-StretchUltraExpanded :: Stretch-instance Enum Stretch-instance Eq Stretch-instance Show Stretch-data Underline-UnderlineNone :: Underline-UnderlineSingle :: Underline-UnderlineDouble :: Underline-UnderlineLow :: Underline-UnderlineError :: Underline-instance Enum Underline-instance Eq Underline-instance Show Underline-data EllipsizeMode-EllipsizeNone :: EllipsizeMode-EllipsizeStart :: EllipsizeMode-EllipsizeMiddle :: EllipsizeMode-EllipsizeEnd :: EllipsizeMode-instance Enum EllipsizeMode-instance Eq EllipsizeMode--module Graphics.UI.Gtk.Multiline.TextTagTable-data TextTagTable-instance GObjectClass TextTagTable-instance TextTagTableClass TextTagTable-class GObjectClass o => TextTagTableClass o-instance TextTagTableClass SourceTagTable-instance TextTagTableClass TextTagTable-castToTextTagTable :: GObjectClass obj => obj -> TextTagTable-toTextTagTable :: TextTagTableClass o => o -> TextTagTable-textTagTableNew :: IO TextTagTable-textTagTableAdd :: (TextTagTableClass self, TextTagClass tag) => self -> tag -> IO ()-textTagTableRemove :: (TextTagTableClass self, TextTagClass tag) => self -> tag -> IO ()-textTagTableLookup :: TextTagTableClass self => self -> String -> IO (Maybe TextTag)-textTagTableForeach :: TextTagTableClass self => self -> (TextTag -> IO ()) -> IO ()-textTagTableGetSize :: TextTagTableClass self => self -> IO Int--module Graphics.UI.Gtk.Multiline.TextMark-data TextMark-instance GObjectClass TextMark-instance TextMarkClass TextMark-class GObjectClass o => TextMarkClass o-instance TextMarkClass SourceMarker-instance TextMarkClass TextMark-castToTextMark :: GObjectClass obj => obj -> TextMark-toTextMark :: TextMarkClass o => o -> TextMark-type MarkName = String-textMarkSetVisible :: TextMarkClass self => self -> Bool -> IO ()-textMarkGetVisible :: TextMarkClass self => self -> IO Bool-textMarkGetDeleted :: TextMarkClass self => self -> IO Bool-textMarkGetName :: TextMarkClass self => self -> IO (Maybe MarkName)-textMarkGetBuffer :: TextMarkClass self => self -> IO (Maybe TextBuffer)-textMarkGetLeftGravity :: TextMarkClass self => self -> IO Bool-textMarkVisible :: TextMarkClass self => Attr self Bool--module Graphics.UI.Gtk.Misc.SizeGroup-data SizeGroup-instance GObjectClass SizeGroup-instance SizeGroupClass SizeGroup-class GObjectClass o => SizeGroupClass o-instance SizeGroupClass SizeGroup-castToSizeGroup :: GObjectClass obj => obj -> SizeGroup-toSizeGroup :: SizeGroupClass o => o -> SizeGroup-sizeGroupNew :: SizeGroupMode -> IO SizeGroup-data SizeGroupMode-SizeGroupNone :: SizeGroupMode-SizeGroupHorizontal :: SizeGroupMode-SizeGroupVertical :: SizeGroupMode-SizeGroupBoth :: SizeGroupMode-instance Enum SizeGroupMode-sizeGroupSetMode :: SizeGroupClass self => self -> SizeGroupMode -> IO ()-sizeGroupGetMode :: SizeGroupClass self => self -> IO SizeGroupMode-sizeGroupAddWidget :: (SizeGroupClass self, WidgetClass widget) => self -> widget -> IO ()-sizeGroupRemoveWidget :: (SizeGroupClass self, WidgetClass widget) => self -> widget -> IO ()-sizeGroupSetIgnoreHidden :: SizeGroupClass self => self -> Bool -> IO ()-sizeGroupGetIgnoreHidden :: SizeGroupClass self => self -> IO Bool-sizeGroupMode :: SizeGroupClass self => Attr self SizeGroupMode-sizeGroupIgnoreHidden :: SizeGroupClass self => Attr self Bool--module Graphics.UI.Gtk.Gdk.Keys-type KeyVal = Word32-keyvalName :: KeyVal -> IO String-keyvalFromName :: String -> IO KeyVal-keyvalToChar :: KeyVal -> IO (Maybe Char)--module Graphics.UI.Gtk.Gdk.Gdk-beep :: IO ()-flush :: IO ()--module Graphics.UI.Gtk.Gdk.Enums-data CapStyle-CapNotLast :: CapStyle-CapButt :: CapStyle-CapRound :: CapStyle-CapProjecting :: CapStyle-instance Enum CapStyle-data CrossingMode-CrossingNormal :: CrossingMode-CrossingGrab :: CrossingMode-CrossingUngrab :: CrossingMode-instance Enum CrossingMode-data Dither-RgbDitherNone :: Dither-RgbDitherNormal :: Dither-RgbDitherMax :: Dither-instance Enum Dither-data EventMask-ExposureMask :: EventMask-PointerMotionMask :: EventMask-PointerMotionHintMask :: EventMask-ButtonMotionMask :: EventMask-Button1MotionMask :: EventMask-Button2MotionMask :: EventMask-Button3MotionMask :: EventMask-ButtonPressMask :: EventMask-ButtonReleaseMask :: EventMask-KeyPressMask :: EventMask-KeyReleaseMask :: EventMask-EnterNotifyMask :: EventMask-LeaveNotifyMask :: EventMask-FocusChangeMask :: EventMask-StructureMask :: EventMask-PropertyChangeMask :: EventMask-VisibilityNotifyMask :: EventMask-ProximityInMask :: EventMask-ProximityOutMask :: EventMask-SubstructureMask :: EventMask-ScrollMask :: EventMask-AllEventsMask :: EventMask-instance Bounded EventMask-instance Enum EventMask-instance Flags EventMask-data ExtensionMode-ExtensionEventsNone :: ExtensionMode-ExtensionEventsAll :: ExtensionMode-ExtensionEventsCursor :: ExtensionMode-instance Bounded ExtensionMode-instance Enum ExtensionMode-instance Flags ExtensionMode-data Fill-Solid :: Fill-Tiled :: Fill-Stippled :: Fill-OpaqueStippled :: Fill-instance Enum Fill-data FillRule-EvenOddRule :: FillRule-WindingRule :: FillRule-instance Enum FillRule-data Function-Copy :: Function-Invert :: Function-Xor :: Function-Clear :: Function-And :: Function-AndReverse :: Function-AndInvert :: Function-Noop :: Function-Or :: Function-Equiv :: Function-OrReverse :: Function-CopyInvert :: Function-OrInvert :: Function-Nand :: Function-Nor :: Function-Set :: Function-instance Enum Function-data InputCondition-InputRead :: InputCondition-InputWrite :: InputCondition-InputException :: InputCondition-instance Bounded InputCondition-instance Enum InputCondition-instance Flags InputCondition-data JoinStyle-JoinMiter :: JoinStyle-JoinRound :: JoinStyle-JoinBevel :: JoinStyle-instance Enum JoinStyle-data LineStyle-LineSolid :: LineStyle-LineOnOffDash :: LineStyle-LineDoubleDash :: LineStyle-instance Enum LineStyle-data NotifyType-NotifyAncestor :: NotifyType-NotifyVirtual :: NotifyType-NotifyInferior :: NotifyType-NotifyNonlinear :: NotifyType-NotifyNonlinearVirtual :: NotifyType-NotifyUnknown :: NotifyType-instance Enum NotifyType-data OverlapType-OverlapRectangleIn :: OverlapType-OverlapRectangleOut :: OverlapType-OverlapRectanglePart :: OverlapType-instance Enum OverlapType-data ScrollDirection-ScrollUp :: ScrollDirection-ScrollDown :: ScrollDirection-ScrollLeft :: ScrollDirection-ScrollRight :: ScrollDirection-instance Enum ScrollDirection-data SubwindowMode-ClipByChildren :: SubwindowMode-IncludeInferiors :: SubwindowMode-instance Enum SubwindowMode-data VisibilityState-VisibilityUnobscured :: VisibilityState-VisibilityPartialObscured :: VisibilityState-VisibilityFullyObscured :: VisibilityState-instance Enum VisibilityState-data WindowState-WindowStateWithdrawn :: WindowState-WindowStateIconified :: WindowState-WindowStateMaximized :: WindowState-WindowStateSticky :: WindowState-WindowStateFullscreen :: WindowState-WindowStateAbove :: WindowState-WindowStateBelow :: WindowState-instance Bounded WindowState-instance Enum WindowState-instance Flags WindowState-data WindowEdge-WindowEdgeNorthWest :: WindowEdge-WindowEdgeNorth :: WindowEdge-WindowEdgeNorthEast :: WindowEdge-WindowEdgeWest :: WindowEdge-WindowEdgeEast :: WindowEdge-WindowEdgeSouthWest :: WindowEdge-WindowEdgeSouth :: WindowEdge-WindowEdgeSouthEast :: WindowEdge-instance Enum WindowEdge-data WindowTypeHint-WindowTypeHintNormal :: WindowTypeHint-WindowTypeHintDialog :: WindowTypeHint-WindowTypeHintMenu :: WindowTypeHint-WindowTypeHintToolbar :: WindowTypeHint-WindowTypeHintSplashscreen :: WindowTypeHint-WindowTypeHintUtility :: WindowTypeHint-WindowTypeHintDock :: WindowTypeHint-WindowTypeHintDesktop :: WindowTypeHint-instance Enum WindowTypeHint-data Gravity-GravityNorthWest :: Gravity-GravityNorth :: Gravity-GravityNorthEast :: Gravity-GravityWest :: Gravity-GravityCenter :: Gravity-GravityEast :: Gravity-GravitySouthWest :: Gravity-GravitySouth :: Gravity-GravitySouthEast :: Gravity-GravityStatic :: Gravity-instance Enum Gravity--module Graphics.UI.Gtk.General.Enums-data AccelFlags-AccelVisible :: AccelFlags-AccelLocked :: AccelFlags-AccelMask :: AccelFlags-instance Bounded AccelFlags-instance Enum AccelFlags-instance Eq AccelFlags-instance Flags AccelFlags-data ArrowType-ArrowUp :: ArrowType-ArrowDown :: ArrowType-ArrowLeft :: ArrowType-ArrowRight :: ArrowType-instance Enum ArrowType-instance Eq ArrowType-data AttachOptions-Expand :: AttachOptions-Shrink :: AttachOptions-Fill :: AttachOptions-instance Bounded AttachOptions-instance Enum AttachOptions-instance Eq AttachOptions-instance Flags AttachOptions-data MouseButton-LeftButton :: MouseButton-MiddleButton :: MouseButton-RightButton :: MouseButton-instance Enum MouseButton-instance Eq MouseButton-instance Show MouseButton-data ButtonBoxStyle-ButtonboxDefaultStyle :: ButtonBoxStyle-ButtonboxSpread :: ButtonBoxStyle-ButtonboxEdge :: ButtonBoxStyle-ButtonboxStart :: ButtonBoxStyle-ButtonboxEnd :: ButtonBoxStyle-instance Enum ButtonBoxStyle-instance Eq ButtonBoxStyle-data CalendarDisplayOptions-CalendarShowHeading :: CalendarDisplayOptions-CalendarShowDayNames :: CalendarDisplayOptions-CalendarNoMonthChange :: CalendarDisplayOptions-CalendarShowWeekNumbers :: CalendarDisplayOptions-CalendarWeekStartMonday :: CalendarDisplayOptions-instance Bounded CalendarDisplayOptions-instance Enum CalendarDisplayOptions-instance Eq CalendarDisplayOptions-instance Flags CalendarDisplayOptions-data Click-SingleClick :: Click-DoubleClick :: Click-TripleClick :: Click-ReleaseClick :: Click-data CornerType-CornerTopLeft :: CornerType-CornerBottomLeft :: CornerType-CornerTopRight :: CornerType-CornerBottomRight :: CornerType-instance Enum CornerType-instance Eq CornerType-data CurveType-CurveTypeLinear :: CurveType-CurveTypeSpline :: CurveType-CurveTypeFree :: CurveType-instance Enum CurveType-instance Eq CurveType-data DeleteType-DeleteChars :: DeleteType-DeleteWordEnds :: DeleteType-DeleteWords :: DeleteType-DeleteDisplayLines :: DeleteType-DeleteDisplayLineEnds :: DeleteType-DeleteParagraphEnds :: DeleteType-DeleteParagraphs :: DeleteType-DeleteWhitespace :: DeleteType-instance Enum DeleteType-instance Eq DeleteType-data DirectionType-DirTabForward :: DirectionType-DirTabBackward :: DirectionType-DirUp :: DirectionType-DirDown :: DirectionType-DirLeft :: DirectionType-DirRight :: DirectionType-instance Enum DirectionType-instance Eq DirectionType-data Justification-JustifyLeft :: Justification-JustifyRight :: Justification-JustifyCenter :: Justification-JustifyFill :: Justification-instance Enum Justification-instance Eq Justification-data MatchType-MatchAll :: MatchType-MatchAllTail :: MatchType-MatchHead :: MatchType-MatchTail :: MatchType-MatchExact :: MatchType-MatchLast :: MatchType-instance Enum MatchType-instance Eq MatchType-data MenuDirectionType-MenuDirParent :: MenuDirectionType-MenuDirChild :: MenuDirectionType-MenuDirNext :: MenuDirectionType-MenuDirPrev :: MenuDirectionType-instance Enum MenuDirectionType-instance Eq MenuDirectionType-data MetricType-Pixels :: MetricType-Inches :: MetricType-Centimeters :: MetricType-instance Enum MetricType-instance Eq MetricType-data MovementStep-MovementLogicalPositions :: MovementStep-MovementVisualPositions :: MovementStep-MovementWords :: MovementStep-MovementDisplayLines :: MovementStep-MovementDisplayLineEnds :: MovementStep-MovementParagraphs :: MovementStep-MovementParagraphEnds :: MovementStep-MovementPages :: MovementStep-MovementBufferEnds :: MovementStep-MovementHorizontalPages :: MovementStep-instance Enum MovementStep-instance Eq MovementStep-data Orientation-OrientationHorizontal :: Orientation-OrientationVertical :: Orientation-instance Enum Orientation-instance Eq Orientation-data Packing-PackRepel :: Packing-PackGrow :: Packing-PackNatural :: Packing-instance Enum Packing-instance Eq Packing-toPacking :: Bool -> Bool -> Packing-fromPacking :: Packing -> (Bool, Bool)-data PackType-PackStart :: PackType-PackEnd :: PackType-instance Enum PackType-instance Eq PackType-data PathPriorityType-PathPrioLowest :: PathPriorityType-PathPrioGtk :: PathPriorityType-PathPrioApplication :: PathPriorityType-PathPrioTheme :: PathPriorityType-PathPrioRc :: PathPriorityType-PathPrioHighest :: PathPriorityType-instance Enum PathPriorityType-instance Eq PathPriorityType-data PathType-PathWidget :: PathType-PathWidgetClass :: PathType-PathClass :: PathType-instance Enum PathType-instance Eq PathType-data PolicyType-PolicyAlways :: PolicyType-PolicyAutomatic :: PolicyType-PolicyNever :: PolicyType-instance Enum PolicyType-instance Eq PolicyType-data PositionType-PosLeft :: PositionType-PosRight :: PositionType-PosTop :: PositionType-PosBottom :: PositionType-instance Enum PositionType-instance Eq PositionType-data ProgressBarOrientation-ProgressLeftToRight :: ProgressBarOrientation-ProgressRightToLeft :: ProgressBarOrientation-ProgressBottomToTop :: ProgressBarOrientation-ProgressTopToBottom :: ProgressBarOrientation-instance Enum ProgressBarOrientation-instance Eq ProgressBarOrientation-data ReliefStyle-ReliefNormal :: ReliefStyle-ReliefHalf :: ReliefStyle-ReliefNone :: ReliefStyle-instance Enum ReliefStyle-instance Eq ReliefStyle-data ResizeMode-ResizeParent :: ResizeMode-ResizeQueue :: ResizeMode-ResizeImmediate :: ResizeMode-instance Enum ResizeMode-instance Eq ResizeMode-data ScrollType-ScrollNone :: ScrollType-ScrollJump :: ScrollType-ScrollStepBackward :: ScrollType-ScrollStepForward :: ScrollType-ScrollPageBackward :: ScrollType-ScrollPageForward :: ScrollType-ScrollStepUp :: ScrollType-ScrollStepDown :: ScrollType-ScrollPageUp :: ScrollType-ScrollPageDown :: ScrollType-ScrollStepLeft :: ScrollType-ScrollStepRight :: ScrollType-ScrollPageLeft :: ScrollType-ScrollPageRight :: ScrollType-ScrollStart :: ScrollType-ScrollEnd :: ScrollType-instance Enum ScrollType-instance Eq ScrollType-data SelectionMode-SelectionNone :: SelectionMode-SelectionSingle :: SelectionMode-SelectionBrowse :: SelectionMode-SelectionMultiple :: SelectionMode-instance Enum SelectionMode-data ShadowType-ShadowNone :: ShadowType-ShadowIn :: ShadowType-ShadowOut :: ShadowType-ShadowEtchedIn :: ShadowType-ShadowEtchedOut :: ShadowType-instance Enum ShadowType-instance Eq ShadowType-data StateType-StateNormal :: StateType-StateActive :: StateType-StatePrelight :: StateType-StateSelected :: StateType-StateInsensitive :: StateType-instance Enum StateType-instance Eq StateType-data SubmenuDirection-DirectionLeft :: SubmenuDirection-DirectionRight :: SubmenuDirection-instance Enum SubmenuDirection-instance Eq SubmenuDirection-data SubmenuPlacement-TopBottom :: SubmenuPlacement-LeftRight :: SubmenuPlacement-instance Enum SubmenuPlacement-instance Eq SubmenuPlacement-data SpinButtonUpdatePolicy-UpdateAlways :: SpinButtonUpdatePolicy-UpdateIfValid :: SpinButtonUpdatePolicy-instance Enum SpinButtonUpdatePolicy-instance Eq SpinButtonUpdatePolicy-data SpinType-SpinStepForward :: SpinType-SpinStepBackward :: SpinType-SpinPageForward :: SpinType-SpinPageBackward :: SpinType-SpinHome :: SpinType-SpinEnd :: SpinType-SpinUserDefined :: SpinType-instance Enum SpinType-instance Eq SpinType-data TextDirection-TextDirNone :: TextDirection-TextDirLtr :: TextDirection-TextDirRtl :: TextDirection-instance Enum TextDirection-instance Eq TextDirection-data TextSearchFlags-TextSearchVisibleOnly :: TextSearchFlags-TextSearchTextOnly :: TextSearchFlags-instance Bounded TextSearchFlags-instance Enum TextSearchFlags-instance Eq TextSearchFlags-instance Flags TextSearchFlags-data TextWindowType-TextWindowPrivate :: TextWindowType-TextWindowWidget :: TextWindowType-TextWindowText :: TextWindowType-TextWindowLeft :: TextWindowType-TextWindowRight :: TextWindowType-TextWindowTop :: TextWindowType-TextWindowBottom :: TextWindowType-instance Enum TextWindowType-instance Eq TextWindowType-data ToolbarStyle-ToolbarIcons :: ToolbarStyle-ToolbarText :: ToolbarStyle-ToolbarBoth :: ToolbarStyle-ToolbarBothHoriz :: ToolbarStyle-instance Enum ToolbarStyle-instance Eq ToolbarStyle-data TreeViewColumnSizing-TreeViewColumnGrowOnly :: TreeViewColumnSizing-TreeViewColumnAutosize :: TreeViewColumnSizing-TreeViewColumnFixed :: TreeViewColumnSizing-instance Enum TreeViewColumnSizing-instance Eq TreeViewColumnSizing-data UpdateType-UpdateContinuous :: UpdateType-UpdateDiscontinuous :: UpdateType-UpdateDelayed :: UpdateType-instance Enum UpdateType-instance Eq UpdateType-data Visibility-VisibilityNone :: Visibility-VisibilityPartial :: Visibility-VisibilityFull :: Visibility-instance Enum Visibility-instance Eq Visibility-data WindowPosition-WinPosNone :: WindowPosition-WinPosCenter :: WindowPosition-WinPosMouse :: WindowPosition-WinPosCenterAlways :: WindowPosition-WinPosCenterOnParent :: WindowPosition-instance Enum WindowPosition-instance Eq WindowPosition-data WindowType-WindowToplevel :: WindowType-WindowPopup :: WindowType-instance Enum WindowType-instance Eq WindowType-data WrapMode-WrapNone :: WrapMode-WrapChar :: WrapMode-WrapWord :: WrapMode-WrapWordChar :: WrapMode-instance Enum WrapMode-instance Eq WrapMode-data SortType-SortAscending :: SortType-SortDescending :: SortType-instance Enum SortType-instance Eq SortType--module Graphics.UI.Gtk.Multiline.TextTag-data TextTag-instance GObjectClass TextTag-instance TextTagClass TextTag-class GObjectClass o => TextTagClass o-instance TextTagClass SourceTag-instance TextTagClass TextTag-castToTextTag :: GObjectClass obj => obj -> TextTag-toTextTag :: TextTagClass o => o -> TextTag-type TagName = String-textTagNew :: TagName -> IO TextTag-textTagSetPriority :: TextTagClass self => self -> Int -> IO ()-textTagGetPriority :: TextTagClass self => self -> IO Int-newtype TextAttributes-TextAttributes :: ForeignPtr TextAttributes -> TextAttributes-textAttributesNew :: IO TextAttributes-makeNewTextAttributes :: Ptr TextAttributes -> IO TextAttributes-textTagName :: TextTagClass self => Attr self (Maybe String)-textTagBackground :: TextTagClass self => WriteAttr self String-textTagBackgroundFullHeight :: TextTagClass self => Attr self Bool-textTagBackgroundStipple :: (TextTagClass self, PixmapClass pixmap) => ReadWriteAttr self Pixmap pixmap-textTagForeground :: TextTagClass self => WriteAttr self String-textTagForegroundStipple :: (TextTagClass self, PixmapClass pixmap) => ReadWriteAttr self Pixmap pixmap-textTagDirection :: TextTagClass self => Attr self TextDirection-textTagEditable :: TextTagClass self => Attr self Bool-textTagFont :: TextTagClass self => Attr self String-textTagFamily :: TextTagClass self => Attr self String-textTagStyle :: TextTagClass self => Attr self FontStyle-textTagVariant :: TextTagClass self => Attr self Variant-textTagWeight :: TextTagClass self => Attr self Int-textTagStretch :: TextTagClass self => Attr self Stretch-textTagSize :: TextTagClass self => Attr self Int-textTagScale :: TextTagClass self => Attr self Double-textTagSizePoints :: TextTagClass self => Attr self Double-textTagJustification :: TextTagClass self => Attr self Justification-textTagLanguage :: TextTagClass self => Attr self String-textTagLeftMargin :: TextTagClass self => Attr self Int-textTagRightMargin :: TextTagClass self => Attr self Int-textTagIndent :: TextTagClass self => Attr self Int-textTagRise :: TextTagClass self => Attr self Int-textTagPixelsAboveLines :: TextTagClass self => Attr self Int-textTagPixelsBelowLines :: TextTagClass self => Attr self Int-textTagPixelsInsideWrap :: TextTagClass self => Attr self Int-textTagStrikethrough :: TextTagClass self => Attr self Bool-textTagUnderline :: TextTagClass self => Attr self Underline-textTagWrapMode :: TextTagClass self => Attr self WrapMode-textTagInvisible :: TextTagClass self => Attr self Bool-textTagParagraphBackground :: TextTagClass self => WriteAttr self String-textTagPriority :: TextTagClass self => Attr self Int--module Graphics.UI.Gtk.Embedding.Embedding-socketHasPlug :: SocketClass s => s -> IO Bool-type NativeWindowId = Word32--module Graphics.UI.Gtk.ActionMenuToolbar.ToggleAction-data ToggleAction-instance ActionClass ToggleAction-instance GObjectClass ToggleAction-instance ToggleActionClass ToggleAction-class ActionClass o => ToggleActionClass o-instance ToggleActionClass RadioAction-instance ToggleActionClass ToggleAction-castToToggleAction :: GObjectClass obj => obj -> ToggleAction-toToggleAction :: ToggleActionClass o => o -> ToggleAction-toggleActionNew :: String -> String -> Maybe String -> Maybe String -> IO ToggleAction-toggleActionToggled :: ToggleActionClass self => self -> IO ()-toggleActionSetActive :: ToggleActionClass self => self -> Bool -> IO ()-toggleActionGetActive :: ToggleActionClass self => self -> IO Bool-toggleActionSetDrawAsRadio :: ToggleActionClass self => self -> Bool -> IO ()-toggleActionGetDrawAsRadio :: ToggleActionClass self => self -> IO Bool-toggleActionDrawAsRadio :: ToggleActionClass self => Attr self Bool-toggleActionActive :: ToggleActionClass self => Attr self Bool-onToggleActionToggled :: ToggleActionClass self => self -> IO () -> IO (ConnectId self)-afterToggleActionToggled :: ToggleActionClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.ActionMenuToolbar.RadioAction-data RadioAction-instance ActionClass RadioAction-instance GObjectClass RadioAction-instance RadioActionClass RadioAction-instance ToggleActionClass RadioAction-class ToggleActionClass o => RadioActionClass o-instance RadioActionClass RadioAction-castToRadioAction :: GObjectClass obj => obj -> RadioAction-toRadioAction :: RadioActionClass o => o -> RadioAction-radioActionNew :: String -> String -> Maybe String -> Maybe String -> Int -> IO RadioAction-radioActionGetGroup :: RadioActionClass self => self -> IO [RadioAction]-radioActionSetGroup :: (RadioActionClass self, RadioActionClass groupMember) => self -> groupMember -> IO ()-radioActionGetCurrentValue :: RadioActionClass self => self -> IO Int-radioActionGroup :: RadioActionClass self => ReadWriteAttr self [RadioAction] RadioAction-onRadioActionChanged :: RadioActionClass self => self -> (RadioAction -> IO ()) -> IO (ConnectId self)-afterRadioActionChanged :: RadioActionClass self => self -> (RadioAction -> IO ()) -> IO (ConnectId self)--module Graphics.UI.Gtk.Abstract.Separator-data Separator-instance GObjectClass Separator-instance ObjectClass Separator-instance SeparatorClass Separator-instance WidgetClass Separator-class WidgetClass o => SeparatorClass o-instance SeparatorClass HSeparator-instance SeparatorClass Separator-instance SeparatorClass VSeparator-castToSeparator :: GObjectClass obj => obj -> Separator-toSeparator :: SeparatorClass o => o -> Separator--module Graphics.UI.Gtk.Abstract.Scrollbar-data Scrollbar-instance GObjectClass Scrollbar-instance ObjectClass Scrollbar-instance RangeClass Scrollbar-instance ScrollbarClass Scrollbar-instance WidgetClass Scrollbar-class RangeClass o => ScrollbarClass o-instance ScrollbarClass HScrollbar-instance ScrollbarClass Scrollbar-instance ScrollbarClass VScrollbar-castToScrollbar :: GObjectClass obj => obj -> Scrollbar-toScrollbar :: ScrollbarClass o => o -> Scrollbar--module Graphics.UI.Gtk.Abstract.Object-data Object-instance GObjectClass Object-instance ObjectClass Object-class GObjectClass o => ObjectClass o-instance ObjectClass AboutDialog-instance ObjectClass AccelLabel-instance ObjectClass Adjustment-instance ObjectClass Alignment-instance ObjectClass Arrow-instance ObjectClass AspectFrame-instance ObjectClass Bin-instance ObjectClass Box-instance ObjectClass Button-instance ObjectClass ButtonBox-instance ObjectClass CList-instance ObjectClass CTree-instance ObjectClass Calendar-instance ObjectClass CellRenderer-instance ObjectClass CellRendererPixbuf-instance ObjectClass CellRendererText-instance ObjectClass CellRendererToggle-instance ObjectClass CellView-instance ObjectClass CheckButton-instance ObjectClass CheckMenuItem-instance ObjectClass ColorButton-instance ObjectClass ColorSelection-instance ObjectClass ColorSelectionDialog-instance ObjectClass Combo-instance ObjectClass ComboBox-instance ObjectClass ComboBoxEntry-instance ObjectClass Container-instance ObjectClass Curve-instance ObjectClass Dialog-instance ObjectClass DrawingArea-instance ObjectClass Entry-instance ObjectClass EventBox-instance ObjectClass Expander-instance ObjectClass FileChooserButton-instance ObjectClass FileChooserDialog-instance ObjectClass FileChooserWidget-instance ObjectClass FileFilter-instance ObjectClass FileSelection-instance ObjectClass Fixed-instance ObjectClass FontButton-instance ObjectClass FontSelection-instance ObjectClass FontSelectionDialog-instance ObjectClass Frame-instance ObjectClass GammaCurve-instance ObjectClass HBox-instance ObjectClass HButtonBox-instance ObjectClass HPaned-instance ObjectClass HRuler-instance ObjectClass HScale-instance ObjectClass HScrollbar-instance ObjectClass HSeparator-instance ObjectClass HandleBox-instance ObjectClass IMContext-instance ObjectClass IMMulticontext-instance ObjectClass IconView-instance ObjectClass Image-instance ObjectClass ImageMenuItem-instance ObjectClass InputDialog-instance ObjectClass Invisible-instance ObjectClass Item-instance ObjectClass ItemFactory-instance ObjectClass Label-instance ObjectClass Layout-instance ObjectClass List-instance ObjectClass ListItem-instance ObjectClass Menu-instance ObjectClass MenuBar-instance ObjectClass MenuItem-instance ObjectClass MenuShell-instance ObjectClass MenuToolButton-instance ObjectClass MessageDialog-instance ObjectClass Misc-instance ObjectClass MozEmbed-instance ObjectClass Notebook-instance ObjectClass Object-instance ObjectClass OptionMenu-instance ObjectClass Paned-instance ObjectClass Plug-instance ObjectClass Preview-instance ObjectClass ProgressBar-instance ObjectClass RadioButton-instance ObjectClass RadioMenuItem-instance ObjectClass RadioToolButton-instance ObjectClass Range-instance ObjectClass Ruler-instance ObjectClass Scale-instance ObjectClass Scrollbar-instance ObjectClass ScrolledWindow-instance ObjectClass Separator-instance ObjectClass SeparatorMenuItem-instance ObjectClass SeparatorToolItem-instance ObjectClass Socket-instance ObjectClass SourceView-instance ObjectClass SpinButton-instance ObjectClass Statusbar-instance ObjectClass Table-instance ObjectClass TearoffMenuItem-instance ObjectClass TextView-instance ObjectClass TipsQuery-instance ObjectClass ToggleButton-instance ObjectClass ToggleToolButton-instance ObjectClass ToolButton-instance ObjectClass ToolItem-instance ObjectClass Toolbar-instance ObjectClass Tooltips-instance ObjectClass TreeView-instance ObjectClass TreeViewColumn-instance ObjectClass VBox-instance ObjectClass VButtonBox-instance ObjectClass VPaned-instance ObjectClass VRuler-instance ObjectClass VScale-instance ObjectClass VScrollbar-instance ObjectClass VSeparator-instance ObjectClass Viewport-instance ObjectClass Widget-instance ObjectClass Window-castToObject :: GObjectClass obj => obj -> Object-toObject :: ObjectClass o => o -> Object-objectSink :: ObjectClass obj => Ptr obj -> IO ()-makeNewObject :: ObjectClass obj => (ForeignPtr obj -> obj) -> IO (Ptr obj) -> IO obj--module Graphics.UI.Gtk.Abstract.Range-data Range-instance GObjectClass Range-instance ObjectClass Range-instance RangeClass Range-instance WidgetClass Range-class WidgetClass o => RangeClass o-instance RangeClass HScale-instance RangeClass HScrollbar-instance RangeClass Range-instance RangeClass Scale-instance RangeClass Scrollbar-instance RangeClass VScale-instance RangeClass VScrollbar-castToRange :: GObjectClass obj => obj -> Range-toRange :: RangeClass o => o -> Range-rangeGetAdjustment :: RangeClass self => self -> IO Adjustment-rangeSetAdjustment :: RangeClass self => self -> Adjustment -> IO ()-data UpdateType-UpdateContinuous :: UpdateType-UpdateDiscontinuous :: UpdateType-UpdateDelayed :: UpdateType-instance Enum UpdateType-instance Eq UpdateType-rangeGetUpdatePolicy :: RangeClass self => self -> IO UpdateType-rangeSetUpdatePolicy :: RangeClass self => self -> UpdateType -> IO ()-rangeGetInverted :: RangeClass self => self -> IO Bool-rangeSetInverted :: RangeClass self => self -> Bool -> IO ()-rangeGetValue :: RangeClass self => self -> IO Double-rangeSetValue :: RangeClass self => self -> Double -> IO ()-rangeSetIncrements :: RangeClass self => self -> Double -> Double -> IO ()-rangeSetRange :: RangeClass self => self -> Double -> Double -> IO ()-data ScrollType-ScrollNone :: ScrollType-ScrollJump :: ScrollType-ScrollStepBackward :: ScrollType-ScrollStepForward :: ScrollType-ScrollPageBackward :: ScrollType-ScrollPageForward :: ScrollType-ScrollStepUp :: ScrollType-ScrollStepDown :: ScrollType-ScrollPageUp :: ScrollType-ScrollPageDown :: ScrollType-ScrollStepLeft :: ScrollType-ScrollStepRight :: ScrollType-ScrollPageLeft :: ScrollType-ScrollPageRight :: ScrollType-ScrollStart :: ScrollType-ScrollEnd :: ScrollType-instance Enum ScrollType-instance Eq ScrollType-rangeUpdatePolicy :: RangeClass self => Attr self UpdateType-rangeAdjustment :: RangeClass self => Attr self Adjustment-rangeInverted :: RangeClass self => Attr self Bool-rangeValue :: RangeClass self => Attr self Double-onMoveSlider :: RangeClass self => self -> (ScrollType -> IO ()) -> IO (ConnectId self)-afterMoveSlider :: RangeClass self => self -> (ScrollType -> IO ()) -> IO (ConnectId self)-onAdjustBounds :: RangeClass self => self -> (Double -> IO ()) -> IO (ConnectId self)-afterAdjustBounds :: RangeClass self => self -> (Double -> IO ()) -> IO (ConnectId self)--module Graphics.UI.Gtk.Abstract.Scale-data Scale-instance GObjectClass Scale-instance ObjectClass Scale-instance RangeClass Scale-instance ScaleClass Scale-instance WidgetClass Scale-class RangeClass o => ScaleClass o-instance ScaleClass HScale-instance ScaleClass Scale-instance ScaleClass VScale-castToScale :: GObjectClass obj => obj -> Scale-toScale :: ScaleClass o => o -> Scale-scaleSetDigits :: ScaleClass self => self -> Int -> IO ()-scaleGetDigits :: ScaleClass self => self -> IO Int-scaleSetDrawValue :: ScaleClass self => self -> Bool -> IO ()-scaleGetDrawValue :: ScaleClass self => self -> IO Bool-data PositionType-PosLeft :: PositionType-PosRight :: PositionType-PosTop :: PositionType-PosBottom :: PositionType-instance Enum PositionType-instance Eq PositionType-scaleSetValuePos :: ScaleClass self => self -> PositionType -> IO ()-scaleGetValuePos :: ScaleClass self => self -> IO PositionType-scaleDigits :: ScaleClass self => Attr self Int-scaleDrawValue :: ScaleClass self => Attr self Bool-scaleValuePos :: ScaleClass self => Attr self PositionType--module Graphics.UI.Gtk.ActionMenuToolbar.UIManager-data UIManager-instance GObjectClass UIManager-instance UIManagerClass UIManager-class GObjectClass o => UIManagerClass o-instance UIManagerClass UIManager-castToUIManager :: GObjectClass obj => obj -> UIManager-toUIManager :: UIManagerClass o => o -> UIManager-data UIManagerItemType-UiManagerAuto :: UIManagerItemType-UiManagerMenubar :: UIManagerItemType-UiManagerMenu :: UIManagerItemType-UiManagerToolbar :: UIManagerItemType-UiManagerPlaceholder :: UIManagerItemType-UiManagerPopup :: UIManagerItemType-UiManagerMenuitem :: UIManagerItemType-UiManagerToolitem :: UIManagerItemType-UiManagerSeparator :: UIManagerItemType-UiManagerAccelerator :: UIManagerItemType-instance Bounded UIManagerItemType-instance Enum UIManagerItemType-instance Flags UIManagerItemType-data MergeId-uiManagerNew :: IO UIManager-uiManagerSetAddTearoffs :: UIManager -> Bool -> IO ()-uiManagerGetAddTearoffs :: UIManager -> IO Bool-uiManagerInsertActionGroup :: UIManager -> ActionGroup -> Int -> IO ()-uiManagerRemoveActionGroup :: UIManager -> ActionGroup -> IO ()-uiManagerGetActionGroups :: UIManager -> IO [ActionGroup]-uiManagerGetAccelGroup :: UIManager -> IO AccelGroup-uiManagerGetWidget :: UIManager -> String -> IO (Maybe Widget)-uiManagerGetToplevels :: UIManager -> [UIManagerItemType] -> IO [Widget]-uiManagerGetAction :: UIManager -> String -> IO (Maybe Action)-uiManagerAddUiFromString :: UIManager -> String -> IO MergeId-uiManagerAddUiFromFile :: UIManager -> String -> IO MergeId-uiManagerNewMergeId :: UIManager -> IO MergeId-uiManagerAddUi :: UIManager -> MergeId -> String -> String -> Maybe String -> [UIManagerItemType] -> Bool -> IO ()-uiManagerRemoveUi :: UIManager -> MergeId -> IO ()-uiManagerGetUi :: UIManager -> IO String-uiManagerEnsureUpdate :: UIManager -> IO ()-uiManagerAddTearoffs :: Attr UIManager Bool-uiManagerUi :: ReadAttr UIManager String-onAddWidget :: UIManagerClass self => self -> (Widget -> IO ()) -> IO (ConnectId self)-afterAddWidget :: UIManagerClass self => self -> (Widget -> IO ()) -> IO (ConnectId self)-onActionsChanged :: UIManagerClass self => self -> IO () -> IO (ConnectId self)-afterActionsChanged :: UIManagerClass self => self -> IO () -> IO (ConnectId self)-onConnectProxy :: UIManagerClass self => self -> (Action -> Widget -> IO ()) -> IO (ConnectId self)-afterConnectProxy :: UIManagerClass self => self -> (Action -> Widget -> IO ()) -> IO (ConnectId self)-onDisconnectProxy :: UIManagerClass self => self -> (Action -> Widget -> IO ()) -> IO (ConnectId self)-afterDisconnectProxy :: UIManagerClass self => self -> (Action -> Widget -> IO ()) -> IO (ConnectId self)-onPreActivate :: UIManagerClass self => self -> (Action -> IO ()) -> IO (ConnectId self)-afterPreActivate :: UIManagerClass self => self -> (Action -> IO ()) -> IO (ConnectId self)-onPostActivate :: UIManagerClass self => self -> (Action -> IO ()) -> IO (ConnectId self)-afterPostActivate :: UIManagerClass self => self -> (Action -> IO ()) -> IO (ConnectId self)--module Graphics.UI.Gtk.Buttons.Button-data Button-instance BinClass Button-instance ButtonClass Button-instance ContainerClass Button-instance GObjectClass Button-instance ObjectClass Button-instance WidgetClass Button-class BinClass o => ButtonClass o-instance ButtonClass Button-instance ButtonClass CheckButton-instance ButtonClass ColorButton-instance ButtonClass FontButton-instance ButtonClass OptionMenu-instance ButtonClass RadioButton-instance ButtonClass ToggleButton-castToButton :: GObjectClass obj => obj -> Button-toButton :: ButtonClass o => o -> Button-buttonNew :: IO Button-buttonNewWithLabel :: String -> IO Button-buttonNewWithMnemonic :: String -> IO Button-buttonNewFromStock :: String -> IO Button-buttonPressed :: ButtonClass self => self -> IO ()-buttonReleased :: ButtonClass self => self -> IO ()-buttonClicked :: ButtonClass self => self -> IO ()-buttonEnter :: ButtonClass self => self -> IO ()-buttonLeave :: ButtonClass self => self -> IO ()-data ReliefStyle-ReliefNormal :: ReliefStyle-ReliefHalf :: ReliefStyle-ReliefNone :: ReliefStyle-instance Enum ReliefStyle-instance Eq ReliefStyle-buttonSetRelief :: ButtonClass self => self -> ReliefStyle -> IO ()-buttonGetRelief :: ButtonClass self => self -> IO ReliefStyle-buttonSetLabel :: ButtonClass self => self -> String -> IO ()-buttonGetLabel :: ButtonClass self => self -> IO String-buttonSetUseStock :: ButtonClass self => self -> Bool -> IO ()-buttonGetUseStock :: ButtonClass self => self -> IO Bool-buttonSetUseUnderline :: ButtonClass self => self -> Bool -> IO ()-buttonGetUseUnderline :: ButtonClass self => self -> IO Bool-buttonSetFocusOnClick :: ButtonClass self => self -> Bool -> IO ()-buttonGetFocusOnClick :: ButtonClass self => self -> IO Bool-buttonSetAlignment :: ButtonClass self => self -> (Float, Float) -> IO ()-buttonGetAlignment :: ButtonClass self => self -> IO (Float, Float)-buttonGetImage :: ButtonClass self => self -> IO (Maybe Widget)-buttonSetImage :: (ButtonClass self, WidgetClass image) => self -> image -> IO ()-buttonLabel :: ButtonClass self => Attr self String-buttonUseUnderline :: ButtonClass self => Attr self Bool-buttonUseStock :: ButtonClass self => Attr self Bool-buttonFocusOnClick :: ButtonClass self => Attr self Bool-buttonRelief :: ButtonClass self => Attr self ReliefStyle-buttonXalign :: ButtonClass self => Attr self Float-buttonYalign :: ButtonClass self => Attr self Float-buttonImage :: (ButtonClass self, WidgetClass image) => ReadWriteAttr self (Maybe Widget) image-onButtonActivate :: ButtonClass b => b -> IO () -> IO (ConnectId b)-afterButtonActivate :: ButtonClass b => b -> IO () -> IO (ConnectId b)-onClicked :: ButtonClass b => b -> IO () -> IO (ConnectId b)-afterClicked :: ButtonClass b => b -> IO () -> IO (ConnectId b)-onEnter :: ButtonClass b => b -> IO () -> IO (ConnectId b)-afterEnter :: ButtonClass b => b -> IO () -> IO (ConnectId b)-onLeave :: ButtonClass b => b -> IO () -> IO (ConnectId b)-afterLeave :: ButtonClass b => b -> IO () -> IO (ConnectId b)-onPressed :: ButtonClass b => b -> IO () -> IO (ConnectId b)-afterPressed :: ButtonClass b => b -> IO () -> IO (ConnectId b)-onReleased :: ButtonClass b => b -> IO () -> IO (ConnectId b)-afterReleased :: ButtonClass b => b -> IO () -> IO (ConnectId b)--module Graphics.UI.Gtk.Buttons.CheckButton-data CheckButton-instance BinClass CheckButton-instance ButtonClass CheckButton-instance CheckButtonClass CheckButton-instance ContainerClass CheckButton-instance GObjectClass CheckButton-instance ObjectClass CheckButton-instance ToggleButtonClass CheckButton-instance WidgetClass CheckButton-class ToggleButtonClass o => CheckButtonClass o-instance CheckButtonClass CheckButton-instance CheckButtonClass RadioButton-castToCheckButton :: GObjectClass obj => obj -> CheckButton-toCheckButton :: CheckButtonClass o => o -> CheckButton-checkButtonNew :: IO CheckButton-checkButtonNewWithLabel :: String -> IO CheckButton-checkButtonNewWithMnemonic :: String -> IO CheckButton--module Graphics.UI.Gtk.Buttons.RadioButton-data RadioButton-instance BinClass RadioButton-instance ButtonClass RadioButton-instance CheckButtonClass RadioButton-instance ContainerClass RadioButton-instance GObjectClass RadioButton-instance ObjectClass RadioButton-instance RadioButtonClass RadioButton-instance ToggleButtonClass RadioButton-instance WidgetClass RadioButton-class CheckButtonClass o => RadioButtonClass o-instance RadioButtonClass RadioButton-castToRadioButton :: GObjectClass obj => obj -> RadioButton-toRadioButton :: RadioButtonClass o => o -> RadioButton-radioButtonNew :: IO RadioButton-radioButtonNewWithLabel :: String -> IO RadioButton-radioButtonNewWithMnemonic :: String -> IO RadioButton-radioButtonNewFromWidget :: RadioButton -> IO RadioButton-radioButtonNewWithLabelFromWidget :: RadioButton -> String -> IO RadioButton-radioButtonNewWithMnemonicFromWidget :: RadioButton -> String -> IO RadioButton-radioButtonSetGroup :: RadioButton -> RadioButton -> IO ()-radioButtonGetGroup :: RadioButton -> IO [RadioButton]-radioButtonGroup :: ReadWriteAttr RadioButton [RadioButton] RadioButton-onGroupChanged :: RadioButtonClass self => self -> IO () -> IO (ConnectId self)-afterGroupChanged :: RadioButtonClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.Buttons.ToggleButton-data ToggleButton-instance BinClass ToggleButton-instance ButtonClass ToggleButton-instance ContainerClass ToggleButton-instance GObjectClass ToggleButton-instance ObjectClass ToggleButton-instance ToggleButtonClass ToggleButton-instance WidgetClass ToggleButton-class ButtonClass o => ToggleButtonClass o-instance ToggleButtonClass CheckButton-instance ToggleButtonClass RadioButton-instance ToggleButtonClass ToggleButton-castToToggleButton :: GObjectClass obj => obj -> ToggleButton-toToggleButton :: ToggleButtonClass o => o -> ToggleButton-toggleButtonNew :: IO ToggleButton-toggleButtonNewWithLabel :: String -> IO ToggleButton-toggleButtonNewWithMnemonic :: String -> IO ToggleButton-toggleButtonSetMode :: ToggleButtonClass self => self -> Bool -> IO ()-toggleButtonGetMode :: ToggleButtonClass self => self -> IO Bool-toggleButtonToggled :: ToggleButtonClass self => self -> IO ()-toggleButtonGetActive :: ToggleButtonClass self => self -> IO Bool-toggleButtonSetActive :: ToggleButtonClass self => self -> Bool -> IO ()-toggleButtonGetInconsistent :: ToggleButtonClass self => self -> IO Bool-toggleButtonSetInconsistent :: ToggleButtonClass self => self -> Bool -> IO ()-toggleButtonActive :: ToggleButtonClass self => Attr self Bool-toggleButtonInconsistent :: ToggleButtonClass self => Attr self Bool-toggleButtonDrawIndicator :: ToggleButtonClass self => Attr self Bool-toggleButtonMode :: ToggleButtonClass self => Attr self Bool-onToggled :: ToggleButtonClass self => self -> IO () -> IO (ConnectId self)-afterToggled :: ToggleButtonClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.Display.AccelLabel-data AccelLabel-instance AccelLabelClass AccelLabel-instance GObjectClass AccelLabel-instance LabelClass AccelLabel-instance MiscClass AccelLabel-instance ObjectClass AccelLabel-instance WidgetClass AccelLabel-class LabelClass o => AccelLabelClass o-instance AccelLabelClass AccelLabel-castToAccelLabel :: GObjectClass obj => obj -> AccelLabel-toAccelLabel :: AccelLabelClass o => o -> AccelLabel-accelLabelNew :: String -> IO AccelLabel-accelLabelSetAccelWidget :: (AccelLabelClass self, WidgetClass accelWidget) => self -> accelWidget -> IO ()-accelLabelGetAccelWidget :: AccelLabelClass self => self -> IO (Maybe Widget)-accelLabelAccelWidget :: (AccelLabelClass self, WidgetClass accelWidget) => ReadWriteAttr self (Maybe Widget) accelWidget--module Graphics.UI.Gtk.Display.ProgressBar-data ProgressBar-instance GObjectClass ProgressBar-instance ObjectClass ProgressBar-instance ProgressBarClass ProgressBar-instance WidgetClass ProgressBar-class WidgetClass o => ProgressBarClass o-instance ProgressBarClass ProgressBar-castToProgressBar :: GObjectClass obj => obj -> ProgressBar-toProgressBar :: ProgressBarClass o => o -> ProgressBar-progressBarNew :: IO ProgressBar-progressBarPulse :: ProgressBarClass self => self -> IO ()-progressBarSetText :: ProgressBarClass self => self -> String -> IO ()-progressBarSetFraction :: ProgressBarClass self => self -> Double -> IO ()-progressBarSetPulseStep :: ProgressBarClass self => self -> Double -> IO ()-progressBarGetFraction :: ProgressBarClass self => self -> IO Double-progressBarGetPulseStep :: ProgressBarClass self => self -> IO Double-progressBarGetText :: ProgressBarClass self => self -> IO (Maybe String)-data ProgressBarOrientation-ProgressLeftToRight :: ProgressBarOrientation-ProgressRightToLeft :: ProgressBarOrientation-ProgressBottomToTop :: ProgressBarOrientation-ProgressTopToBottom :: ProgressBarOrientation-instance Enum ProgressBarOrientation-instance Eq ProgressBarOrientation-progressBarSetOrientation :: ProgressBarClass self => self -> ProgressBarOrientation -> IO ()-progressBarGetOrientation :: ProgressBarClass self => self -> IO ProgressBarOrientation-progressBarSetEllipsize :: ProgressBarClass self => self -> EllipsizeMode -> IO ()-progressBarGetEllipsize :: ProgressBarClass self => self -> IO EllipsizeMode-progressBarOrientation :: ProgressBarClass self => Attr self ProgressBarOrientation-progressBarDiscreteBlocks :: ProgressBarClass self => Attr self Int-progressBarFraction :: ProgressBarClass self => Attr self Double-progressBarPulseStep :: ProgressBarClass self => Attr self Double-progressBarText :: ProgressBarClass self => ReadWriteAttr self (Maybe String) String-progressBarEllipsize :: ProgressBarClass self => Attr self EllipsizeMode--module Graphics.UI.Gtk.Display.Statusbar-data Statusbar-instance BoxClass Statusbar-instance ContainerClass Statusbar-instance GObjectClass Statusbar-instance HBoxClass Statusbar-instance ObjectClass Statusbar-instance StatusbarClass Statusbar-instance WidgetClass Statusbar-class HBoxClass o => StatusbarClass o-instance StatusbarClass Statusbar-castToStatusbar :: GObjectClass obj => obj -> Statusbar-toStatusbar :: StatusbarClass o => o -> Statusbar-statusbarNew :: IO Statusbar-statusbarGetContextId :: StatusbarClass self => self -> String -> IO ContextId-statusbarPush :: StatusbarClass self => self -> ContextId -> String -> IO MessageId-statusbarPop :: StatusbarClass self => self -> ContextId -> IO ()-statusbarRemove :: StatusbarClass self => self -> ContextId -> MessageId -> IO ()-statusbarSetHasResizeGrip :: StatusbarClass self => self -> Bool -> IO ()-statusbarGetHasResizeGrip :: StatusbarClass self => self -> IO Bool-statusbarHasResizeGrip :: StatusbarClass self => Attr self Bool-onTextPopped :: StatusbarClass self => self -> (ContextId -> String -> IO ()) -> IO (ConnectId self)-afterTextPopped :: StatusbarClass self => self -> (ContextId -> String -> IO ()) -> IO (ConnectId self)-onTextPushed :: StatusbarClass self => self -> (ContextId -> String -> IO ()) -> IO (ConnectId self)-afterTextPushed :: StatusbarClass self => self -> (ContextId -> String -> IO ()) -> IO (ConnectId self)--module Graphics.UI.Gtk.Embedding.Plug-data Plug-instance BinClass Plug-instance ContainerClass Plug-instance GObjectClass Plug-instance ObjectClass Plug-instance PlugClass Plug-instance WidgetClass Plug-instance WindowClass Plug-class WindowClass o => PlugClass o-instance PlugClass Plug-castToPlug :: GObjectClass obj => obj -> Plug-toPlug :: PlugClass o => o -> Plug-type NativeWindowId = Word32-plugNew :: Maybe NativeWindowId -> IO Plug-plugGetId :: PlugClass self => self -> IO NativeWindowId-onEmbedded :: PlugClass self => self -> IO () -> IO (ConnectId self)-afterEmbedded :: PlugClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.Embedding.Socket-data Socket-instance ContainerClass Socket-instance GObjectClass Socket-instance ObjectClass Socket-instance SocketClass Socket-instance WidgetClass Socket-class ContainerClass o => SocketClass o-instance SocketClass Socket-castToSocket :: GObjectClass obj => obj -> Socket-toSocket :: SocketClass o => o -> Socket-type NativeWindowId = Word32-socketNew :: IO Socket-socketHasPlug :: SocketClass s => s -> IO Bool-socketAddId :: SocketClass self => self -> NativeWindowId -> IO ()-socketGetId :: SocketClass self => self -> IO NativeWindowId-onPlugAdded :: SocketClass self => self -> IO () -> IO (ConnectId self)-afterPlugAdded :: SocketClass self => self -> IO () -> IO (ConnectId self)-onPlugRemoved :: SocketClass self => self -> IO () -> IO (ConnectId self)-afterPlugRemoved :: SocketClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.Entry.Editable-data Editable-instance EditableClass Editable-instance GObjectClass Editable-class GObjectClass o => EditableClass o-instance EditableClass Editable-instance EditableClass Entry-instance EditableClass SpinButton-castToEditable :: GObjectClass obj => obj -> Editable-toEditable :: EditableClass o => o -> Editable-editableSelectRegion :: EditableClass self => self -> Int -> Int -> IO ()-editableGetSelectionBounds :: EditableClass self => self -> IO (Int, Int)-editableInsertText :: EditableClass self => self -> String -> Int -> IO Int-editableDeleteText :: EditableClass self => self -> Int -> Int -> IO ()-editableGetChars :: EditableClass self => self -> Int -> Int -> IO String-editableCutClipboard :: EditableClass self => self -> IO ()-editableCopyClipboard :: EditableClass self => self -> IO ()-editablePasteClipboard :: EditableClass self => self -> IO ()-editableDeleteSelection :: EditableClass self => self -> IO ()-editableSetEditable :: EditableClass self => self -> Bool -> IO ()-editableGetEditable :: EditableClass self => self -> IO Bool-editableSetPosition :: EditableClass self => self -> Int -> IO ()-editableGetPosition :: EditableClass self => self -> IO Int-editablePosition :: EditableClass self => Attr self Int-editableEditable :: EditableClass self => Attr self Bool-onEditableChanged :: EditableClass ec => ec -> IO () -> IO (ConnectId ec)-afterEditableChanged :: EditableClass ec => ec -> IO () -> IO (ConnectId ec)-onDeleteText :: EditableClass self => self -> (Int -> Int -> IO ()) -> IO (ConnectId self)-afterDeleteText :: EditableClass self => self -> (Int -> Int -> IO ()) -> IO (ConnectId self)--module Graphics.UI.Gtk.Entry.Entry-data Entry-instance EditableClass Entry-instance EntryClass Entry-instance GObjectClass Entry-instance ObjectClass Entry-instance WidgetClass Entry-class WidgetClass o => EntryClass o-instance EntryClass Entry-instance EntryClass SpinButton-castToEntry :: GObjectClass obj => obj -> Entry-toEntry :: EntryClass o => o -> Entry-entryNew :: IO Entry-entrySetText :: EntryClass self => self -> String -> IO ()-entryGetText :: EntryClass self => self -> IO String-entryAppendText :: EntryClass self => self -> String -> IO ()-entryPrependText :: EntryClass self => self -> String -> IO ()-entrySetVisibility :: EntryClass self => self -> Bool -> IO ()-entryGetVisibility :: EntryClass self => self -> IO Bool-entrySetInvisibleChar :: EntryClass self => self -> Char -> IO ()-entryGetInvisibleChar :: EntryClass self => self -> IO Char-entrySetMaxLength :: EntryClass self => self -> Int -> IO ()-entryGetMaxLength :: EntryClass self => self -> IO Int-entryGetActivatesDefault :: EntryClass self => self -> IO Bool-entrySetActivatesDefault :: EntryClass self => self -> Bool -> IO ()-entryGetHasFrame :: EntryClass self => self -> IO Bool-entrySetHasFrame :: EntryClass self => self -> Bool -> IO ()-entryGetWidthChars :: EntryClass self => self -> IO Int-entrySetWidthChars :: EntryClass self => self -> Int -> IO ()-entrySetAlignment :: EntryClass self => self -> Float -> IO ()-entryGetAlignment :: EntryClass self => self -> IO Float-entrySetCompletion :: EntryClass self => self -> EntryCompletion -> IO ()-entryGetCompletion :: EntryClass self => self -> IO EntryCompletion-entryCursorPosition :: EntryClass self => ReadAttr self Int-entrySelectionBound :: EntryClass self => ReadAttr self Int-entryEditable :: EntryClass self => Attr self Bool-entryMaxLength :: EntryClass self => Attr self Int-entryVisibility :: EntryClass self => Attr self Bool-entryHasFrame :: EntryClass self => Attr self Bool-entryInvisibleChar :: EntryClass self => Attr self Char-entryActivatesDefault :: EntryClass self => Attr self Bool-entryWidthChars :: EntryClass self => Attr self Int-entryScrollOffset :: EntryClass self => ReadAttr self Int-entryText :: EntryClass self => Attr self String-entryXalign :: EntryClass self => Attr self Float-entryAlignment :: EntryClass self => Attr self Float-entryCompletion :: EntryClass self => Attr self EntryCompletion-onEntryActivate :: EntryClass ec => ec -> IO () -> IO (ConnectId ec)-afterEntryActivate :: EntryClass ec => ec -> IO () -> IO (ConnectId ec)-onCopyClipboard :: EntryClass ec => ec -> IO () -> IO (ConnectId ec)-afterCopyClipboard :: EntryClass ec => ec -> IO () -> IO (ConnectId ec)-onCutClipboard :: EntryClass ec => ec -> IO () -> IO (ConnectId ec)-afterCutClipboard :: EntryClass ec => ec -> IO () -> IO (ConnectId ec)-onPasteClipboard :: EntryClass ec => ec -> IO () -> IO (ConnectId ec)-afterPasteClipboard :: EntryClass ec => ec -> IO () -> IO (ConnectId ec)-onInsertAtCursor :: EntryClass ec => ec -> (String -> IO ()) -> IO (ConnectId ec)-afterInsertAtCursor :: EntryClass ec => ec -> (String -> IO ()) -> IO (ConnectId ec)-onToggleOverwrite :: EntryClass ec => ec -> IO () -> IO (ConnectId ec)-afterToggleOverwrite :: EntryClass ec => ec -> IO () -> IO (ConnectId ec)--module Graphics.UI.Gtk.Entry.HScale-data HScale-instance GObjectClass HScale-instance HScaleClass HScale-instance ObjectClass HScale-instance RangeClass HScale-instance ScaleClass HScale-instance WidgetClass HScale-class ScaleClass o => HScaleClass o-instance HScaleClass HScale-castToHScale :: GObjectClass obj => obj -> HScale-toHScale :: HScaleClass o => o -> HScale-hScaleNew :: Adjustment -> IO HScale-hScaleNewWithRange :: Double -> Double -> Double -> IO HScale--module Graphics.UI.Gtk.Entry.VScale-data VScale-instance GObjectClass VScale-instance ObjectClass VScale-instance RangeClass VScale-instance ScaleClass VScale-instance VScaleClass VScale-instance WidgetClass VScale-class ScaleClass o => VScaleClass o-instance VScaleClass VScale-castToVScale :: GObjectClass obj => obj -> VScale-toVScale :: VScaleClass o => o -> VScale-vScaleNew :: Adjustment -> IO VScale-vScaleNewWithRange :: Double -> Double -> Double -> IO VScale--module Graphics.UI.Gtk.General.General-initGUI :: IO [String]-eventsPending :: IO Int-mainGUI :: IO ()-mainLevel :: IO Int-mainQuit :: IO ()-mainIteration :: IO Bool-mainIterationDo :: Bool -> IO Bool-grabAdd :: WidgetClass wd => wd -> IO ()-grabGetCurrent :: IO (Maybe Widget)-grabRemove :: WidgetClass w => w -> IO ()-type Priority = Int-priorityLow :: Int-priorityDefaultIdle :: Int-priorityHighIdle :: Int-priorityDefault :: Int-priorityHigh :: Int-timeoutAdd :: IO Bool -> Int -> IO HandlerId-timeoutAddFull :: IO Bool -> Priority -> Int -> IO HandlerId-timeoutRemove :: HandlerId -> IO ()-idleAdd :: IO Bool -> Priority -> IO HandlerId-idleRemove :: HandlerId -> IO ()-inputAdd :: FD -> [IOCondition] -> Priority -> IO Bool -> IO HandlerId-inputRemove :: HandlerId -> IO ()-data IOCondition-instance Bounded IOCondition-instance Enum IOCondition-instance Eq IOCondition-instance Flags IOCondition-type HandlerId = CUInt--module Graphics.UI.Gtk.General.Structs-type Point = (Int, Int)-data Rectangle-Rectangle :: Int -> Int -> Int -> Int -> Rectangle-instance Storable Rectangle-data Color-Color :: Word16 -> Word16 -> Word16 -> Color-instance Storable Color-data GCValues-GCValues :: Color -> Color -> Function -> Fill -> Maybe Pixmap -> Maybe Pixmap -> Maybe Pixmap -> SubwindowMode -> Int -> Int -> Int -> Int -> Bool -> Int -> LineStyle -> CapStyle -> JoinStyle -> GCValues-foreground :: GCValues -> Color-background :: GCValues -> Color-function :: GCValues -> Function-fill :: GCValues -> Fill-tile :: GCValues -> Maybe Pixmap-stipple :: GCValues -> Maybe Pixmap-clipMask :: GCValues -> Maybe Pixmap-subwindowMode :: GCValues -> SubwindowMode-tsXOrigin :: GCValues -> Int-tsYOrigin :: GCValues -> Int-clipXOrigin :: GCValues -> Int-clipYOrigin :: GCValues -> Int-graphicsExposure :: GCValues -> Bool-lineWidth :: GCValues -> Int-lineStyle :: GCValues -> LineStyle-capStyle :: GCValues -> CapStyle-joinStyle :: GCValues -> JoinStyle-instance Storable GCValues-pokeGCValues :: Ptr GCValues -> GCValues -> IO CInt-newGCValues :: GCValues-widgetGetState :: WidgetClass w => w -> IO StateType-widgetGetSavedState :: WidgetClass w => w -> IO StateType-type Allocation = Rectangle-data Requisition-Requisition :: Int -> Int -> Requisition-instance Storable Requisition-treeIterSize :: Int-textIterSize :: Int-inputError :: Int32-dialogGetUpper :: DialogClass dc => dc -> IO VBox-dialogGetActionArea :: DialogClass dc => dc -> IO HBox-fileSelectionGetButtons :: FileSelectionClass fsel => fsel -> IO (Button, Button)-data ResponseId-ResponseNone :: ResponseId-ResponseReject :: ResponseId-ResponseAccept :: ResponseId-ResponseDeleteEvent :: ResponseId-ResponseOk :: ResponseId-ResponseCancel :: ResponseId-ResponseClose :: ResponseId-ResponseYes :: ResponseId-ResponseNo :: ResponseId-ResponseApply :: ResponseId-ResponseHelp :: ResponseId-ResponseUser :: Int -> ResponseId-instance Show ResponseId-fromResponse :: Integral a => ResponseId -> a-toResponse :: Integral a => a -> ResponseId-toolbarChildButton :: CInt-toolbarChildToggleButton :: CInt-toolbarChildRadioButton :: CInt-type IconSize = Int-iconSizeInvalid :: IconSize-iconSizeMenu :: IconSize-iconSizeSmallToolbar :: IconSize-iconSizeLargeToolbar :: IconSize-iconSizeButton :: IconSize-iconSizeDialog :: IconSize-comboGetList :: Combo -> IO List-drawingAreaGetDrawWindow :: DrawingArea -> IO DrawWindow-drawingAreaGetSize :: DrawingArea -> IO (Int, Int)-layoutGetDrawWindow :: Layout -> IO DrawWindow-pangoScale :: Int-data PangoDirection-PangoDirectionLtr :: PangoDirection-PangoDirectionRtl :: PangoDirection-PangoDirectionWeakLtr :: PangoDirection-PangoDirectionWeakRtl :: PangoDirection-PangoDirectionNeutral :: PangoDirection-instance Enum PangoDirection-instance Eq PangoDirection-instance Ord PangoDirection-pangodirToLevel :: PangoDirection -> Int-setAttrPos :: UTFCorrection -> Int -> Int -> IO (Ptr ()) -> IO (Ptr ())-pangoItemRawGetFont :: Ptr pangoItem -> IO Font-pangoItemRawGetLanguage :: Ptr pangoItem -> IO (Ptr CChar)-pangoItemRawAnalysis :: Ptr pangoItem -> Ptr pangoAnalysis-pangoItemRawGetLevel :: Ptr pangoItem -> IO Bool-styleGetForeground :: StateType -> Style -> IO GC-styleGetBackground :: StateType -> Style -> IO GC-styleGetLight :: StateType -> Style -> IO GC-styleGetMiddle :: StateType -> Style -> IO GC-styleGetDark :: StateType -> Style -> IO GC-styleGetText :: StateType -> Style -> IO GC-styleGetBase :: StateType -> Style -> IO GC-styleGetAntiAliasing :: StateType -> Style -> IO GC--module Graphics.UI.Gtk.ActionMenuToolbar.Action-data Action-instance ActionClass Action-instance GObjectClass Action-class GObjectClass o => ActionClass o-instance ActionClass Action-instance ActionClass RadioAction-instance ActionClass ToggleAction-castToAction :: GObjectClass obj => obj -> Action-toAction :: ActionClass o => o -> Action-actionNew :: String -> String -> Maybe String -> Maybe String -> IO Action-actionGetName :: ActionClass self => self -> IO String-actionIsSensitive :: ActionClass self => self -> IO Bool-actionGetSensitive :: ActionClass self => self -> IO Bool-actionSetSensitive :: ActionClass self => self -> Bool -> IO ()-actionIsVisible :: ActionClass self => self -> IO Bool-actionGetVisible :: ActionClass self => self -> IO Bool-actionSetVisible :: ActionClass self => self -> Bool -> IO ()-actionActivate :: ActionClass self => self -> IO ()-actionCreateMenuItem :: ActionClass self => self -> IO Widget-actionCreateToolItem :: ActionClass self => self -> IO Widget-actionConnectProxy :: (ActionClass self, WidgetClass proxy) => self -> proxy -> IO ()-actionDisconnectProxy :: (ActionClass self, WidgetClass proxy) => self -> proxy -> IO ()-actionGetProxies :: ActionClass self => self -> IO [Widget]-actionConnectAccelerator :: ActionClass self => self -> IO ()-actionDisconnectAccelerator :: ActionClass self => self -> IO ()-actionGetAccelPath :: ActionClass self => self -> IO (Maybe String)-actionSetAccelPath :: ActionClass self => self -> String -> IO ()-actionSetAccelGroup :: ActionClass self => self -> AccelGroup -> IO ()-actionName :: ActionClass self => Attr self String-actionLabel :: ActionClass self => Attr self String-actionShortLabel :: ActionClass self => Attr self String-actionTooltip :: ActionClass self => Attr self (Maybe String)-actionStockId :: ActionClass self => Attr self (Maybe String)-actionVisibleHorizontal :: ActionClass self => Attr self Bool-actionVisibleOverflown :: ActionClass self => Attr self Bool-actionVisibleVertical :: ActionClass self => Attr self Bool-actionIsImportant :: ActionClass self => Attr self Bool-actionHideIfEmpty :: ActionClass self => Attr self Bool-actionSensitive :: ActionClass self => Attr self Bool-actionVisible :: ActionClass self => Attr self Bool-actionAccelPath :: ActionClass self => ReadWriteAttr self (Maybe String) String-onActionActivate :: ActionClass self => self -> IO () -> IO (ConnectId self)-afterActionActivate :: ActionClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.ActionMenuToolbar.ActionGroup-data ActionGroup-instance ActionGroupClass ActionGroup-instance GObjectClass ActionGroup-class GObjectClass o => ActionGroupClass o-instance ActionGroupClass ActionGroup-castToActionGroup :: GObjectClass obj => obj -> ActionGroup-toActionGroup :: ActionGroupClass o => o -> ActionGroup-actionGroupNew :: String -> IO ActionGroup-actionGroupGetName :: ActionGroup -> IO String-actionGroupGetSensitive :: ActionGroup -> IO Bool-actionGroupSetSensitive :: ActionGroup -> Bool -> IO ()-actionGroupGetVisible :: ActionGroup -> IO Bool-actionGroupSetVisible :: ActionGroup -> Bool -> IO ()-actionGroupGetAction :: ActionGroup -> String -> IO (Maybe Action)-actionGroupListActions :: ActionGroup -> IO [Action]-actionGroupAddAction :: ActionClass action => ActionGroup -> action -> IO ()-actionGroupAddActionWithAccel :: ActionClass action => ActionGroup -> action -> Maybe String -> IO ()-actionGroupRemoveAction :: ActionClass action => ActionGroup -> action -> IO ()-actionGroupAddActions :: ActionGroup -> [ActionEntry] -> IO ()-actionGroupAddToggleActions :: ActionGroup -> [ToggleActionEntry] -> IO ()-actionGroupAddRadioActions :: ActionGroup -> [RadioActionEntry] -> Int -> (RadioAction -> IO ()) -> IO ()-actionGroupSetTranslateFunc :: ActionGroup -> (String -> IO String) -> IO ()-actionGroupSetTranslationDomain :: ActionGroup -> String -> IO ()-actionGroupTranslateString :: ActionGroup -> String -> IO String-actionGroupName :: Attr ActionGroup String-actionGroupSensitive :: Attr ActionGroup Bool-actionGroupVisible :: Attr ActionGroup Bool--module Graphics.UI.Gtk.Display.Image-data Image-instance GObjectClass Image-instance ImageClass Image-instance MiscClass Image-instance ObjectClass Image-instance WidgetClass Image-class MiscClass o => ImageClass o-instance ImageClass Image-castToImage :: GObjectClass obj => obj -> Image-toImage :: ImageClass o => o -> Image-imageNewFromFile :: FilePath -> IO Image-imageNewFromPixbuf :: Pixbuf -> IO Image-imageNewFromStock :: String -> IconSize -> IO Image-imageNew :: IO Image-imageNewFromIconName :: String -> IconSize -> IO Image-imageGetPixbuf :: Image -> IO Pixbuf-imageSetFromPixbuf :: Image -> Pixbuf -> IO ()-imageSetFromFile :: Image -> FilePath -> IO ()-imageSetFromStock :: Image -> String -> IconSize -> IO ()-imageSetFromIconName :: Image -> String -> IconSize -> IO ()-imageSetPixelSize :: Image -> Int -> IO ()-imageGetPixelSize :: Image -> IO Int-imageClear :: Image -> IO ()-type IconSize = Int-iconSizeMenu :: IconSize-iconSizeSmallToolbar :: IconSize-iconSizeLargeToolbar :: IconSize-iconSizeButton :: IconSize-iconSizeDialog :: IconSize-imagePixbuf :: PixbufClass pixbuf => ReadWriteAttr Image Pixbuf pixbuf-imagePixmap :: PixmapClass pixmap => ReadWriteAttr Image Pixmap pixmap-imageImage :: ImageClass image => ReadWriteAttr Image Image image-imageMask :: PixmapClass pixmap => ReadWriteAttr Image Pixmap pixmap-imageFile :: Attr Image String-imageStock :: Attr Image String-imageIconSize :: Attr Image Int-imagePixelSize :: Attr Image Int-imageIconName :: Attr Image String-imageStorageType :: ReadAttr Image ImageType--module Graphics.UI.Gtk.Entry.SpinButton-data SpinButton-instance EditableClass SpinButton-instance EntryClass SpinButton-instance GObjectClass SpinButton-instance ObjectClass SpinButton-instance SpinButtonClass SpinButton-instance WidgetClass SpinButton-class EntryClass o => SpinButtonClass o-instance SpinButtonClass SpinButton-castToSpinButton :: GObjectClass obj => obj -> SpinButton-toSpinButton :: SpinButtonClass o => o -> SpinButton-spinButtonNew :: Adjustment -> Double -> Int -> IO SpinButton-spinButtonNewWithRange :: Double -> Double -> Double -> IO SpinButton-spinButtonConfigure :: SpinButtonClass self => self -> Adjustment -> Double -> Int -> IO ()-spinButtonSetAdjustment :: SpinButtonClass self => self -> Adjustment -> IO ()-spinButtonGetAdjustment :: SpinButtonClass self => self -> IO Adjustment-spinButtonSetDigits :: SpinButtonClass self => self -> Int -> IO ()-spinButtonGetDigits :: SpinButtonClass self => self -> IO Int-spinButtonSetIncrements :: SpinButtonClass self => self -> Double -> Double -> IO ()-spinButtonGetIncrements :: SpinButtonClass self => self -> IO (Double, Double)-spinButtonSetRange :: SpinButtonClass self => self -> Double -> Double -> IO ()-spinButtonGetRange :: SpinButtonClass self => self -> IO (Double, Double)-spinButtonGetValue :: SpinButtonClass self => self -> IO Double-spinButtonGetValueAsInt :: SpinButtonClass self => self -> IO Int-spinButtonSetValue :: SpinButtonClass self => self -> Double -> IO ()-data SpinButtonUpdatePolicy-UpdateAlways :: SpinButtonUpdatePolicy-UpdateIfValid :: SpinButtonUpdatePolicy-instance Enum SpinButtonUpdatePolicy-instance Eq SpinButtonUpdatePolicy-spinButtonSetUpdatePolicy :: SpinButtonClass self => self -> SpinButtonUpdatePolicy -> IO ()-spinButtonGetUpdatePolicy :: SpinButtonClass self => self -> IO SpinButtonUpdatePolicy-spinButtonSetNumeric :: SpinButtonClass self => self -> Bool -> IO ()-spinButtonGetNumeric :: SpinButtonClass self => self -> IO Bool-data SpinType-SpinStepForward :: SpinType-SpinStepBackward :: SpinType-SpinPageForward :: SpinType-SpinPageBackward :: SpinType-SpinHome :: SpinType-SpinEnd :: SpinType-SpinUserDefined :: SpinType-instance Enum SpinType-instance Eq SpinType-spinButtonSpin :: SpinButtonClass self => self -> SpinType -> Double -> IO ()-spinButtonSetWrap :: SpinButtonClass self => self -> Bool -> IO ()-spinButtonGetWrap :: SpinButtonClass self => self -> IO Bool-spinButtonSetSnapToTicks :: SpinButtonClass self => self -> Bool -> IO ()-spinButtonGetSnapToTicks :: SpinButtonClass self => self -> IO Bool-spinButtonUpdate :: SpinButtonClass self => self -> IO ()-spinButtonAdjustment :: SpinButtonClass self => Attr self Adjustment-spinButtonClimbRate :: SpinButtonClass self => Attr self Double-spinButtonDigits :: SpinButtonClass self => Attr self Int-spinButtonSnapToTicks :: SpinButtonClass self => Attr self Bool-spinButtonNumeric :: SpinButtonClass self => Attr self Bool-spinButtonWrap :: SpinButtonClass self => Attr self Bool-spinButtonUpdatePolicy :: SpinButtonClass self => Attr self SpinButtonUpdatePolicy-spinButtonValue :: SpinButtonClass self => Attr self Double-onInput :: SpinButtonClass sb => sb -> IO (Maybe Double) -> IO (ConnectId sb)-afterInput :: SpinButtonClass sb => sb -> IO (Maybe Double) -> IO (ConnectId sb)-onOutput :: SpinButtonClass sb => sb -> IO Bool -> IO (ConnectId sb)-afterOutput :: SpinButtonClass sb => sb -> IO Bool -> IO (ConnectId sb)-onValueSpinned :: SpinButtonClass sb => sb -> IO () -> IO (ConnectId sb)-afterValueSpinned :: SpinButtonClass sb => sb -> IO () -> IO (ConnectId sb)--module Graphics.UI.Gtk.Gdk.Pixbuf-data Pixbuf-instance GObjectClass Pixbuf-instance PixbufClass Pixbuf-class GObjectClass o => PixbufClass o-instance PixbufClass Pixbuf-data PixbufError-PixbufErrorCorruptImage :: PixbufError-PixbufErrorInsufficientMemory :: PixbufError-PixbufErrorBadOption :: PixbufError-PixbufErrorUnknownType :: PixbufError-PixbufErrorUnsupportedOperation :: PixbufError-PixbufErrorFailed :: PixbufError-instance Enum PixbufError-instance GErrorClass PixbufError-data Colorspace-ColorspaceRgb :: Colorspace-instance Enum Colorspace-pixbufGetColorSpace :: Pixbuf -> IO Colorspace-pixbufGetNChannels :: Pixbuf -> IO Int-pixbufGetHasAlpha :: Pixbuf -> IO Bool-pixbufGetBitsPerSample :: Pixbuf -> IO Int-data PixbufData i e-instance HasBounds PixbufData-instance Storable e => MArray PixbufData e IO-pixbufGetPixels :: (Ix i, Num i, Storable e) => Pixbuf -> IO (PixbufData i e)-pixbufGetWidth :: Pixbuf -> IO Int-pixbufGetHeight :: Pixbuf -> IO Int-pixbufGetRowstride :: Pixbuf -> IO Int-pixbufGetOption :: Pixbuf -> String -> IO (Maybe String)-pixbufNewFromFile :: FilePath -> IO (Either (PixbufError, String) Pixbuf)-type ImageType = String-pixbufGetFormats :: [ImageType]-pixbufSave :: Pixbuf -> FilePath -> ImageType -> [(String, String)] -> IO (Maybe (PixbufError, String))-pixbufNew :: Colorspace -> Bool -> Int -> Int -> Int -> IO Pixbuf-pixbufNewFromXPMData :: [String] -> IO Pixbuf-data InlineImage-pixbufNewFromInline :: Ptr InlineImage -> IO Pixbuf-pixbufNewSubpixbuf :: Pixbuf -> Int -> Int -> Int -> Int -> IO Pixbuf-pixbufCopy :: Pixbuf -> IO Pixbuf-data InterpType-InterpNearest :: InterpType-InterpTiles :: InterpType-InterpBilinear :: InterpType-InterpHyper :: InterpType-instance Enum InterpType-pixbufScaleSimple :: Pixbuf -> Int -> Int -> InterpType -> IO Pixbuf-pixbufScale :: Pixbuf -> Pixbuf -> Int -> Int -> Int -> Int -> Double -> Double -> Double -> Double -> InterpType -> IO ()-pixbufComposite :: Pixbuf -> Pixbuf -> Int -> Int -> Int -> Int -> Double -> Double -> Double -> Double -> InterpType -> Word8 -> IO ()-pixbufAddAlpha :: Pixbuf -> Maybe (Word8, Word8, Word8) -> IO Pixbuf-pixbufCopyArea :: Pixbuf -> Int -> Int -> Int -> Int -> Pixbuf -> Int -> Int -> IO ()-pixbufFill :: Pixbuf -> Word8 -> Word8 -> Word8 -> Word8 -> IO ()-pixbufGetFromDrawable :: DrawableClass d => d -> Rectangle -> IO (Maybe Pixbuf)--module Graphics.UI.Gtk.Gdk.Region-makeNewRegion :: Ptr Region -> IO Region-newtype Region-Region :: ForeignPtr Region -> Region-regionNew :: IO Region-data FillRule-EvenOddRule :: FillRule-WindingRule :: FillRule-instance Enum FillRule-regionPolygon :: [Point] -> FillRule -> IO Region-regionCopy :: Region -> IO Region-regionRectangle :: Rectangle -> IO Region-regionGetClipbox :: Region -> IO Rectangle-regionGetRectangles :: Region -> IO [Rectangle]-regionEmpty :: Region -> IO Bool-regionEqual :: Region -> Region -> IO Bool-regionPointIn :: Region -> Point -> IO Bool-data OverlapType-OverlapRectangleIn :: OverlapType-OverlapRectangleOut :: OverlapType-OverlapRectanglePart :: OverlapType-instance Enum OverlapType-regionRectIn :: Region -> Rectangle -> IO OverlapType-regionOffset :: Region -> Int -> Int -> IO ()-regionShrink :: Region -> Int -> Int -> IO ()-regionUnionWithRect :: Region -> Rectangle -> IO ()-regionIntersect :: Region -> Region -> IO ()-regionUnion :: Region -> Region -> IO ()-regionSubtract :: Region -> Region -> IO ()-regionXor :: Region -> Region -> IO ()--module Graphics.UI.Gtk.Gdk.Events-data Modifier-Shift :: Modifier-Control :: Modifier-Alt :: Modifier-Apple :: Modifier-Compose :: Modifier-instance Bounded Modifier-instance Enum Modifier-instance Eq Modifier-instance Flags Modifier-instance Ord Modifier-data Event-Event :: Bool -> Event-eventSent :: Event -> Bool-Expose :: Bool -> Rectangle -> Region -> Int -> Event-eventSent :: Event -> Bool-eventArea :: Event -> Rectangle-eventRegion :: Event -> Region-eventCount :: Event -> Int-Motion :: Bool -> Word32 -> Double -> Double -> [Modifier] -> Bool -> Double -> Double -> Event-eventSent :: Event -> Bool-eventTime :: Event -> Word32-eventX :: Event -> Double-eventY :: Event -> Double-eventModifier :: Event -> [Modifier]-eventIsHint :: Event -> Bool-eventXRoot :: Event -> Double-eventYRoot :: Event -> Double-Button :: Bool -> Click -> Word32 -> Double -> Double -> [Modifier] -> MouseButton -> Double -> Double -> Event-eventSent :: Event -> Bool-eventClick :: Event -> Click-eventTime :: Event -> Word32-eventX :: Event -> Double-eventY :: Event -> Double-eventModifier :: Event -> [Modifier]-eventButton :: Event -> MouseButton-eventXRoot :: Event -> Double-eventYRoot :: Event -> Double-Key :: Bool -> Bool -> Word32 -> [Modifier] -> Bool -> Bool -> Bool -> String -> Maybe Char -> Event-eventRelease :: Event -> Bool-eventSent :: Event -> Bool-eventTime :: Event -> Word32-eventModifier :: Event -> [Modifier]-eventWithCapsLock :: Event -> Bool-eventWithNumLock :: Event -> Bool-eventWithScrollLock :: Event -> Bool-eventKeyName :: Event -> String-eventKeyChar :: Event -> Maybe Char-Crossing :: Bool -> Word32 -> Double -> Double -> Double -> Double -> CrossingMode -> NotifyType -> [Modifier] -> Event-eventSent :: Event -> Bool-eventTime :: Event -> Word32-eventX :: Event -> Double-eventY :: Event -> Double-eventXRoot :: Event -> Double-eventYRoot :: Event -> Double-eventCrossingMode :: Event -> CrossingMode-eventNotifyType :: Event -> NotifyType-eventModifier :: Event -> [Modifier]-Focus :: Bool -> Bool -> Event-eventSent :: Event -> Bool-eventInFocus :: Event -> Bool-Configure :: Bool -> Int -> Int -> Int -> Int -> Event-eventSent :: Event -> Bool-eventXParent :: Event -> Int-eventYParent :: Event -> Int-eventWidth :: Event -> Int-eventHeight :: Event -> Int-Visibility :: Bool -> VisibilityState -> Event-eventSent :: Event -> Bool-eventVisible :: Event -> VisibilityState-Scroll :: Bool -> Word32 -> Double -> Double -> ScrollDirection -> Double -> Double -> Event-eventSent :: Event -> Bool-eventTime :: Event -> Word32-eventX :: Event -> Double-eventY :: Event -> Double-eventDirection :: Event -> ScrollDirection-eventXRoot :: Event -> Double-eventYRoot :: Event -> Double-WindowState :: Bool -> [WindowState] -> [WindowState] -> Event-eventSent :: Event -> Bool-eventWindowMask :: Event -> [WindowState]-eventWindowState :: Event -> [WindowState]-Proximity :: Bool -> Word32 -> Bool -> Event-eventSent :: Event -> Bool-eventTime :: Event -> Word32-eventInContact :: Event -> Bool-data VisibilityState-VisibilityUnobscured :: VisibilityState-VisibilityPartialObscured :: VisibilityState-VisibilityFullyObscured :: VisibilityState-instance Enum VisibilityState-data CrossingMode-CrossingNormal :: CrossingMode-CrossingGrab :: CrossingMode-CrossingUngrab :: CrossingMode-instance Enum CrossingMode-data NotifyType-NotifyAncestor :: NotifyType-NotifyVirtual :: NotifyType-NotifyInferior :: NotifyType-NotifyNonlinear :: NotifyType-NotifyNonlinearVirtual :: NotifyType-NotifyUnknown :: NotifyType-instance Enum NotifyType-data WindowState-WindowStateWithdrawn :: WindowState-WindowStateIconified :: WindowState-WindowStateMaximized :: WindowState-WindowStateSticky :: WindowState-WindowStateFullscreen :: WindowState-WindowStateAbove :: WindowState-WindowStateBelow :: WindowState-instance Bounded WindowState-instance Enum WindowState-instance Flags WindowState-data ScrollDirection-ScrollUp :: ScrollDirection-ScrollDown :: ScrollDirection-ScrollLeft :: ScrollDirection-ScrollRight :: ScrollDirection-instance Enum ScrollDirection-data MouseButton-LeftButton :: MouseButton-MiddleButton :: MouseButton-RightButton :: MouseButton-instance Enum MouseButton-instance Eq MouseButton-instance Show MouseButton-data Click-SingleClick :: Click-DoubleClick :: Click-TripleClick :: Click-ReleaseClick :: Click-data Rectangle-Rectangle :: Int -> Int -> Int -> Int -> Rectangle-instance Storable Rectangle--module Graphics.UI.Gtk.Gdk.DrawWindow-data DrawWindow-instance DrawWindowClass DrawWindow-instance DrawableClass DrawWindow-instance GObjectClass DrawWindow-class DrawableClass o => DrawWindowClass o-instance DrawWindowClass DrawWindow-castToDrawWindow :: GObjectClass obj => obj -> DrawWindow-data WindowState-WindowStateWithdrawn :: WindowState-WindowStateIconified :: WindowState-WindowStateMaximized :: WindowState-WindowStateSticky :: WindowState-WindowStateFullscreen :: WindowState-WindowStateAbove :: WindowState-WindowStateBelow :: WindowState-instance Bounded WindowState-instance Enum WindowState-instance Flags WindowState-drawWindowGetState :: DrawWindowClass self => self -> IO [WindowState]-drawWindowClear :: DrawWindowClass self => self -> IO ()-drawWindowClearArea :: DrawWindowClass self => self -> Int -> Int -> Int -> Int -> IO ()-drawWindowClearAreaExpose :: DrawWindowClass self => self -> Int -> Int -> Int -> Int -> IO ()-drawWindowRaise :: DrawWindowClass self => self -> IO ()-drawWindowLower :: DrawWindowClass self => self -> IO ()-drawWindowBeginPaintRect :: DrawWindowClass self => self -> Rectangle -> IO ()-drawWindowBeginPaintRegion :: DrawWindowClass self => self -> Region -> IO ()-drawWindowEndPaint :: DrawWindowClass self => self -> IO ()-drawWindowInvalidateRect :: DrawWindowClass self => self -> Rectangle -> Bool -> IO ()-drawWindowInvalidateRegion :: DrawWindowClass self => self -> Region -> Bool -> IO ()-drawWindowGetUpdateArea :: DrawWindowClass self => self -> IO (Maybe Region)-drawWindowFreezeUpdates :: DrawWindowClass self => self -> IO ()-drawWindowThawUpdates :: DrawWindowClass self => self -> IO ()-drawWindowProcessUpdates :: DrawWindowClass self => self -> Bool -> IO ()-drawWindowSetAcceptFocus :: DrawWindowClass self => self -> Bool -> IO ()-drawWindowShapeCombineRegion :: DrawWindowClass self => self -> Maybe Region -> Int -> Int -> IO ()-drawWindowSetChildShapes :: DrawWindowClass self => self -> IO ()-drawWindowMergeChildShapes :: DrawWindowClass self => self -> IO ()-drawWindowGetPointer :: DrawWindowClass self => self -> IO (Maybe (Bool, Int, Int, [Modifier]))--module Graphics.UI.Gtk.General.StockItems-data StockItem-StockItem :: StockId -> String -> [Modifier] -> KeyVal -> String -> StockItem-siStockId :: StockItem -> StockId-siLabel :: StockItem -> String-siModifier :: StockItem -> [Modifier]-siKeyval :: StockItem -> KeyVal-siTransDom :: StockItem -> String-instance Storable StockItem-type StockId = String-siStockId :: StockItem -> StockId-siLabel :: StockItem -> String-siModifier :: StockItem -> [Modifier]-siKeyval :: StockItem -> KeyVal-siTransDom :: StockItem -> String-stockAddItem :: [StockItem] -> IO ()-stockLookupItem :: StockId -> IO (Maybe StockItem)-stockListIds :: IO [StockId]-stockAdd :: StockId-stockApply :: StockId-stockBold :: StockId-stockCancel :: StockId-stockCDROM :: StockId-stockClear :: StockId-stockClose :: StockId-stockColorPicker :: StockId-stockConvert :: StockId-stockCopy :: StockId-stockCut :: StockId-stockDelete :: StockId-stockDialogError :: StockId-stockDialogInfo :: StockId-stockDialogQuestion :: StockId-stockDialogWarning :: StockId-stockDnd :: StockId-stockDndMultiple :: StockId-stockExecute :: StockId-stockFind :: StockId-stockFindAndRelpace :: StockId-stockFloppy :: StockId-stockGotoBottom :: StockId-stockGotoFirst :: StockId-stockGotoLast :: StockId-stockGotoTop :: StockId-stockGoBack :: StockId-stockGoDown :: StockId-stockGoForward :: StockId-stockGoUp :: StockId-stockHelp :: StockId-stockHome :: StockId-stockIndex :: StockId-stockItalic :: StockId-stockJumpTo :: StockId-stockJustifyCenter :: StockId-stockJustifyFill :: StockId-stockJustifyLeft :: StockId-stockJustifyRight :: StockId-stockMissingImage :: StockId-stockNew :: StockId-stockNo :: StockId-stockOk :: StockId-stockOpen :: StockId-stockPaste :: StockId-stockPreferences :: StockId-stockPrint :: StockId-stockPrintPreview :: StockId-stockProperties :: StockId-stockQuit :: StockId-stockRedo :: StockId-stockRefresh :: StockId-stockRemove :: StockId-stockRevertToSaved :: StockId-stockSave :: StockId-stockSaveAs :: StockId-stockSelectColor :: StockId-stockSelectFont :: StockId-stockSortAscending :: StockId-stockSortDescending :: StockId-stockSpellCheck :: StockId-stockStop :: StockId-stockStrikethrough :: StockId-stockUndelete :: StockId-stockUnderline :: StockId-stockUndo :: StockId-stockYes :: StockId-stockZoom100 :: StockId-stockZoomFit :: StockId-stockZoomIn :: StockId-stockZoomOut :: StockId--module Graphics.UI.Gtk.Gdk.GC-data GC-instance GCClass GC-instance GObjectClass GC-class GObjectClass o => GCClass o-instance GCClass GC-castToGC :: GObjectClass obj => obj -> GC-gcNew :: DrawableClass d => d -> IO GC-data GCValues-GCValues :: Color -> Color -> Function -> Fill -> Maybe Pixmap -> Maybe Pixmap -> Maybe Pixmap -> SubwindowMode -> Int -> Int -> Int -> Int -> Bool -> Int -> LineStyle -> CapStyle -> JoinStyle -> GCValues-foreground :: GCValues -> Color-background :: GCValues -> Color-function :: GCValues -> Function-fill :: GCValues -> Fill-tile :: GCValues -> Maybe Pixmap-stipple :: GCValues -> Maybe Pixmap-clipMask :: GCValues -> Maybe Pixmap-subwindowMode :: GCValues -> SubwindowMode-tsXOrigin :: GCValues -> Int-tsYOrigin :: GCValues -> Int-clipXOrigin :: GCValues -> Int-clipYOrigin :: GCValues -> Int-graphicsExposure :: GCValues -> Bool-lineWidth :: GCValues -> Int-lineStyle :: GCValues -> LineStyle-capStyle :: GCValues -> CapStyle-joinStyle :: GCValues -> JoinStyle-instance Storable GCValues-newGCValues :: GCValues-data Color-Color :: Word16 -> Word16 -> Word16 -> Color-instance Storable Color-foreground :: GCValues -> Color-background :: GCValues -> Color-data Function-Copy :: Function-Invert :: Function-Xor :: Function-Clear :: Function-And :: Function-AndReverse :: Function-AndInvert :: Function-Noop :: Function-Or :: Function-Equiv :: Function-OrReverse :: Function-CopyInvert :: Function-OrInvert :: Function-Nand :: Function-Nor :: Function-Set :: Function-instance Enum Function-function :: GCValues -> Function-data Fill-Solid :: Fill-Tiled :: Fill-Stippled :: Fill-OpaqueStippled :: Fill-instance Enum Fill-fill :: GCValues -> Fill-tile :: GCValues -> Maybe Pixmap-stipple :: GCValues -> Maybe Pixmap-clipMask :: GCValues -> Maybe Pixmap-data SubwindowMode-ClipByChildren :: SubwindowMode-IncludeInferiors :: SubwindowMode-instance Enum SubwindowMode-subwindowMode :: GCValues -> SubwindowMode-tsXOrigin :: GCValues -> Int-tsYOrigin :: GCValues -> Int-clipXOrigin :: GCValues -> Int-clipYOrigin :: GCValues -> Int-graphicsExposure :: GCValues -> Bool-lineWidth :: GCValues -> Int-data LineStyle-LineSolid :: LineStyle-LineOnOffDash :: LineStyle-LineDoubleDash :: LineStyle-instance Enum LineStyle-lineStyle :: GCValues -> LineStyle-data CapStyle-CapNotLast :: CapStyle-CapButt :: CapStyle-CapRound :: CapStyle-CapProjecting :: CapStyle-instance Enum CapStyle-capStyle :: GCValues -> CapStyle-data JoinStyle-JoinMiter :: JoinStyle-JoinRound :: JoinStyle-JoinBevel :: JoinStyle-instance Enum JoinStyle-joinStyle :: GCValues -> JoinStyle-gcNewWithValues :: DrawableClass d => d -> GCValues -> IO GC-gcSetValues :: GC -> GCValues -> IO ()-gcGetValues :: GC -> IO GCValues-gcSetClipRectangle :: GC -> Rectangle -> IO ()-gcSetClipRegion :: GC -> Region -> IO ()-gcSetDashes :: GC -> Int -> [(Int, Int)] -> IO ()--module Graphics.UI.Gtk.General.IconFactory-data IconFactory-instance GObjectClass IconFactory-instance IconFactoryClass IconFactory-class GObjectClass o => IconFactoryClass o-instance IconFactoryClass IconFactory-castToIconFactory :: GObjectClass obj => obj -> IconFactory-toIconFactory :: IconFactoryClass o => o -> IconFactory-iconFactoryNew :: IO IconFactory-iconFactoryAdd :: IconFactory -> String -> IconSet -> IO ()-iconFactoryAddDefault :: IconFactory -> IO ()-iconFactoryLookup :: IconFactory -> String -> IO (Maybe IconSet)-iconFactoryLookupDefault :: String -> IO (Maybe IconSet)-iconFactoryRemoveDefault :: IconFactory -> IO ()-data IconSet-iconSetNew :: IO IconSet-iconSetNewFromPixbuf :: Pixbuf -> IO IconSet-iconSetAddSource :: IconSet -> IconSource -> IO ()-iconSetRenderIcon :: WidgetClass widget => IconSet -> TextDirection -> StateType -> IconSize -> widget -> IO Pixbuf-iconSetGetSizes :: IconSet -> IO [IconSize]-data IconSource-iconSourceNew :: IO IconSource-data TextDirection-TextDirNone :: TextDirection-TextDirLtr :: TextDirection-TextDirRtl :: TextDirection-instance Enum TextDirection-instance Eq TextDirection-iconSourceGetDirection :: IconSource -> IO (Maybe TextDirection)-iconSourceSetDirection :: IconSource -> TextDirection -> IO ()-iconSourceGetFilename :: IconSource -> IO (Maybe String)-iconSourceSetFilename :: IconSource -> FilePath -> IO ()-iconSourceGetPixbuf :: IconSource -> IO (Maybe Pixbuf)-iconSourceSetPixbuf :: IconSource -> Pixbuf -> IO ()-iconSourceGetSize :: IconSource -> IO (Maybe IconSize)-iconSourceSetSize :: IconSource -> IconSize -> IO ()-iconSourceResetSize :: IconSource -> IO ()-data StateType-StateNormal :: StateType-StateActive :: StateType-StatePrelight :: StateType-StateSelected :: StateType-StateInsensitive :: StateType-instance Enum StateType-instance Eq StateType-iconSourceGetState :: IconSource -> IO (Maybe StateType)-iconSourceSetState :: IconSource -> StateType -> IO ()-iconSourceResetState :: IconSource -> IO ()-type IconSize = Int-iconSizeInvalid :: IconSize-iconSizeMenu :: IconSize-iconSizeSmallToolbar :: IconSize-iconSizeLargeToolbar :: IconSize-iconSizeButton :: IconSize-iconSizeDialog :: IconSize-iconSizeCheck :: IconSize -> IO Bool-iconSizeRegister :: Int -> String -> Int -> IO IconSize-iconSizeRegisterAlias :: IconSize -> String -> IO ()-iconSizeFromName :: String -> IO IconSize-iconSizeGetName :: IconSize -> IO (Maybe String)--module Graphics.UI.Gtk.General.Style-data Style-instance GObjectClass Style-instance StyleClass Style-class GObjectClass o => StyleClass o-instance StyleClass Style-castToStyle :: GObjectClass obj => obj -> Style-toStyle :: StyleClass o => o -> Style-styleGetForeground :: StateType -> Style -> IO GC-styleGetBackground :: StateType -> Style -> IO GC-styleGetLight :: StateType -> Style -> IO GC-styleGetMiddle :: StateType -> Style -> IO GC-styleGetDark :: StateType -> Style -> IO GC-styleGetText :: StateType -> Style -> IO GC-styleGetBase :: StateType -> Style -> IO GC-styleGetAntiAliasing :: StateType -> Style -> IO GC--module Graphics.UI.Gtk.Multiline.TextIter-newtype TextIter-TextIter :: ForeignPtr TextIter -> TextIter-data TextSearchFlags-TextSearchVisibleOnly :: TextSearchFlags-TextSearchTextOnly :: TextSearchFlags-instance Bounded TextSearchFlags-instance Enum TextSearchFlags-instance Eq TextSearchFlags-instance Flags TextSearchFlags-mkTextIterCopy :: Ptr TextIter -> IO TextIter-makeEmptyTextIter :: IO TextIter-textIterGetBuffer :: TextIter -> IO TextBuffer-textIterCopy :: TextIter -> IO TextIter-textIterGetOffset :: TextIter -> IO Int-textIterGetLine :: TextIter -> IO Int-textIterGetLineOffset :: TextIter -> IO Int-textIterGetVisibleLineOffset :: TextIter -> IO Int-textIterGetChar :: TextIter -> IO (Maybe Char)-textIterGetSlice :: TextIter -> TextIter -> IO String-textIterGetText :: TextIter -> TextIter -> IO String-textIterGetVisibleSlice :: TextIter -> TextIter -> IO String-textIterGetVisibleText :: TextIter -> TextIter -> IO String-textIterGetPixbuf :: TextIter -> IO (Maybe Pixbuf)-textIterBeginsTag :: TextIter -> TextTag -> IO Bool-textIterEndsTag :: TextIter -> TextTag -> IO Bool-textIterTogglesTag :: TextIter -> TextTag -> IO Bool-textIterHasTag :: TextIter -> TextTag -> IO Bool-textIterEditable :: TextIter -> Bool -> IO Bool-textIterCanInsert :: TextIter -> Bool -> IO Bool-textIterStartsWord :: TextIter -> IO Bool-textIterEndsWord :: TextIter -> IO Bool-textIterInsideWord :: TextIter -> IO Bool-textIterStartsLine :: TextIter -> IO Bool-textIterEndsLine :: TextIter -> IO Bool-textIterStartsSentence :: TextIter -> IO Bool-textIterEndsSentence :: TextIter -> IO Bool-textIterInsideSentence :: TextIter -> IO Bool-textIterIsCursorPosition :: TextIter -> IO Bool-textIterGetCharsInLine :: TextIter -> IO Int-textIterIsEnd :: TextIter -> IO Bool-textIterIsStart :: TextIter -> IO Bool-textIterForwardChar :: TextIter -> IO Bool-textIterBackwardChar :: TextIter -> IO Bool-textIterForwardChars :: TextIter -> Int -> IO Bool-textIterBackwardChars :: TextIter -> Int -> IO Bool-textIterForwardLine :: TextIter -> IO Bool-textIterBackwardLine :: TextIter -> IO Bool-textIterForwardLines :: TextIter -> Int -> IO Bool-textIterBackwardLines :: TextIter -> Int -> IO Bool-textIterForwardWordEnds :: TextIter -> Int -> IO Bool-textIterBackwardWordStarts :: TextIter -> Int -> IO Bool-textIterForwardWordEnd :: TextIter -> IO Bool-textIterBackwardWordStart :: TextIter -> IO Bool-textIterForwardCursorPosition :: TextIter -> IO Bool-textIterBackwardCursorPosition :: TextIter -> IO Bool-textIterForwardCursorPositions :: TextIter -> Int -> IO Bool-textIterBackwardCursorPositions :: TextIter -> Int -> IO Bool-textIterForwardSentenceEnds :: TextIter -> Int -> IO Bool-textIterBackwardSentenceStarts :: TextIter -> Int -> IO Bool-textIterForwardSentenceEnd :: TextIter -> IO Bool-textIterBackwardSentenceStart :: TextIter -> IO Bool-textIterSetOffset :: TextIter -> Int -> IO ()-textIterSetLine :: TextIter -> Int -> IO ()-textIterSetLineOffset :: TextIter -> Int -> IO ()-textIterSetVisibleLineOffset :: TextIter -> Int -> IO ()-textIterForwardToEnd :: TextIter -> IO ()-textIterForwardToLineEnd :: TextIter -> IO Bool-textIterForwardToTagToggle :: TextIter -> Maybe TextTag -> IO Bool-textIterBackwardToTagToggle :: TextIter -> Maybe TextTag -> IO Bool-textIterForwardFindChar :: TextIter -> (Char -> Bool) -> Maybe TextIter -> IO Bool-textIterBackwardFindChar :: TextIter -> (Char -> Bool) -> Maybe TextIter -> IO Bool-textIterForwardSearch :: TextIter -> String -> [TextSearchFlags] -> Maybe TextIter -> IO (Maybe (TextIter, TextIter))-textIterBackwardSearch :: TextIter -> String -> [TextSearchFlags] -> Maybe TextIter -> IO (Maybe (TextIter, TextIter))-textIterEqual :: TextIter -> TextIter -> IO Bool-textIterCompare :: TextIter -> TextIter -> IO Ordering-textIterForwardVisibleLine :: TextIter -> IO Bool-textIterBackwardVisibleLine :: TextIter -> IO Bool-textIterForwardVisibleLines :: TextIter -> Int -> IO Bool-textIterBackwardVisibleLines :: TextIter -> Int -> IO Bool-textIterVisibleLineOffset :: Attr TextIter Int-textIterOffset :: Attr TextIter Int-textIterLineOffset :: Attr TextIter Int-textIterLine :: Attr TextIter Int--module Graphics.UI.Gtk.Multiline.TextBuffer-data TextBuffer-instance GObjectClass TextBuffer-instance TextBufferClass TextBuffer-class GObjectClass o => TextBufferClass o-instance TextBufferClass SourceBuffer-instance TextBufferClass TextBuffer-castToTextBuffer :: GObjectClass obj => obj -> TextBuffer-toTextBuffer :: TextBufferClass o => o -> TextBuffer-textBufferNew :: Maybe TextTagTable -> IO TextBuffer-textBufferGetLineCount :: TextBufferClass self => self -> IO Int-textBufferGetCharCount :: TextBufferClass self => self -> IO Int-textBufferGetTagTable :: TextBufferClass self => self -> IO TextTagTable-textBufferInsert :: TextBufferClass self => self -> TextIter -> String -> IO ()-textBufferInsertAtCursor :: TextBufferClass self => self -> String -> IO ()-textBufferInsertInteractive :: TextBufferClass self => self -> TextIter -> String -> Bool -> IO Bool-textBufferInsertInteractiveAtCursor :: TextBufferClass self => self -> String -> Bool -> IO Bool-textBufferInsertRange :: TextBufferClass self => self -> TextIter -> TextIter -> TextIter -> IO ()-textBufferInsertRangeInteractive :: TextBufferClass self => self -> TextIter -> TextIter -> TextIter -> Bool -> IO Bool-textBufferDelete :: TextBufferClass self => self -> TextIter -> TextIter -> IO ()-textBufferDeleteInteractive :: TextBufferClass self => self -> TextIter -> TextIter -> Bool -> IO Bool-textBufferSetText :: TextBufferClass self => self -> String -> IO ()-textBufferGetText :: TextBufferClass self => self -> TextIter -> TextIter -> Bool -> IO String-textBufferGetSlice :: TextBufferClass self => self -> TextIter -> TextIter -> Bool -> IO String-textBufferInsertPixbuf :: TextBufferClass self => self -> TextIter -> Pixbuf -> IO ()-textBufferCreateMark :: TextBufferClass self => self -> Maybe MarkName -> TextIter -> Bool -> IO TextMark-textBufferMoveMark :: (TextBufferClass self, TextMarkClass mark) => self -> mark -> TextIter -> IO ()-textBufferMoveMarkByName :: TextBufferClass self => self -> MarkName -> TextIter -> IO ()-textBufferDeleteMark :: (TextBufferClass self, TextMarkClass mark) => self -> mark -> IO ()-textBufferDeleteMarkByName :: TextBufferClass self => self -> MarkName -> IO ()-textBufferGetMark :: TextBufferClass self => self -> MarkName -> IO (Maybe TextMark)-textBufferGetInsert :: TextBufferClass self => self -> IO TextMark-textBufferGetSelectionBound :: TextBufferClass self => self -> IO TextMark-textBufferPlaceCursor :: TextBufferClass self => self -> TextIter -> IO ()-textBufferApplyTag :: (TextBufferClass self, TextTagClass tag) => self -> tag -> TextIter -> TextIter -> IO ()-textBufferRemoveTag :: (TextBufferClass self, TextTagClass tag) => self -> tag -> TextIter -> TextIter -> IO ()-textBufferApplyTagByName :: TextBufferClass self => self -> TagName -> TextIter -> TextIter -> IO ()-textBufferRemoveTagByName :: TextBufferClass self => self -> TagName -> TextIter -> TextIter -> IO ()-textBufferRemoveAllTags :: TextBufferClass self => self -> TextIter -> TextIter -> IO ()-textBufferGetIterAtLineOffset :: TextBufferClass self => self -> Int -> Int -> IO TextIter-textBufferGetIterAtOffset :: TextBufferClass self => self -> Int -> IO TextIter-textBufferGetIterAtLine :: TextBufferClass self => self -> Int -> IO TextIter-textBufferGetIterAtMark :: (TextBufferClass self, TextMarkClass mark) => self -> mark -> IO TextIter-textBufferGetStartIter :: TextBufferClass self => self -> IO TextIter-textBufferGetEndIter :: TextBufferClass self => self -> IO TextIter-textBufferGetModified :: TextBufferClass self => self -> IO Bool-textBufferSetModified :: TextBufferClass self => self -> Bool -> IO ()-textBufferDeleteSelection :: TextBufferClass self => self -> Bool -> Bool -> IO Bool-textBufferHasSelection :: TextBufferClass self => self -> IO Bool-textBufferGetSelectionBounds :: TextBufferClass self => self -> IO (TextIter, TextIter)-textBufferSelectRange :: TextBufferClass self => self -> TextIter -> TextIter -> IO ()-textBufferGetBounds :: TextBufferClass self => self -> TextIter -> TextIter -> IO ()-textBufferBeginUserAction :: TextBufferClass self => self -> IO ()-textBufferEndUserAction :: TextBufferClass self => self -> IO ()-textBufferBackspace :: TextBufferClass self => self -> TextIter -> Bool -> Bool -> IO Bool-textBufferInsertChildAnchor :: TextBufferClass self => self -> TextIter -> TextChildAnchor -> IO ()-textBufferCreateChildAnchor :: TextBufferClass self => self -> TextIter -> IO TextChildAnchor-textBufferGetIterAtChildAnchor :: TextBufferClass self => self -> TextIter -> TextChildAnchor -> IO ()-textBufferTagTable :: (TextBufferClass self, TextTagTableClass textTagTable) => ReadWriteAttr self TextTagTable textTagTable-textBufferText :: TextBufferClass self => Attr self String-textBufferModified :: TextBufferClass self => Attr self Bool-onApplyTag :: TextBufferClass self => self -> (TextTag -> TextIter -> TextIter -> IO ()) -> IO (ConnectId self)-afterApplyTag :: TextBufferClass self => self -> (TextTag -> TextIter -> TextIter -> IO ()) -> IO (ConnectId self)-onBeginUserAction :: TextBufferClass self => self -> IO () -> IO (ConnectId self)-afterBeginUserAction :: TextBufferClass self => self -> IO () -> IO (ConnectId self)-onBufferChanged :: TextBufferClass self => self -> IO () -> IO (ConnectId self)-afterBufferChanged :: TextBufferClass self => self -> IO () -> IO (ConnectId self)-onDeleteRange :: TextBufferClass self => self -> (TextIter -> TextIter -> IO ()) -> IO (ConnectId self)-afterDeleteRange :: TextBufferClass self => self -> (TextIter -> TextIter -> IO ()) -> IO (ConnectId self)-onEndUserAction :: TextBufferClass self => self -> IO () -> IO (ConnectId self)-afterEndUserAction :: TextBufferClass self => self -> IO () -> IO (ConnectId self)-onInsertPixbuf :: TextBufferClass self => self -> (TextIter -> Pixbuf -> IO ()) -> IO (ConnectId self)-afterInsertPixbuf :: TextBufferClass self => self -> (TextIter -> Pixbuf -> IO ()) -> IO (ConnectId self)-onInsertText :: TextBufferClass self => self -> (TextIter -> String -> IO ()) -> IO (ConnectId self)-afterInsertText :: TextBufferClass self => self -> (TextIter -> String -> IO ()) -> IO (ConnectId self)-onMarkDeleted :: TextBufferClass self => self -> (TextMark -> IO ()) -> IO (ConnectId self)-afterMarkDeleted :: TextBufferClass self => self -> (TextMark -> IO ()) -> IO (ConnectId self)-onMarkSet :: TextBufferClass self => self -> (TextIter -> TextMark -> IO ()) -> IO (ConnectId self)-afterMarkSet :: TextBufferClass self => self -> (TextIter -> TextMark -> IO ()) -> IO (ConnectId self)-onModifiedChanged :: TextBufferClass self => self -> IO () -> IO (ConnectId self)-afterModifiedChanged :: TextBufferClass self => self -> IO () -> IO (ConnectId self)-onRemoveTag :: TextBufferClass self => self -> (TextTag -> TextIter -> TextIter -> IO ()) -> IO (ConnectId self)-afterRemoveTag :: TextBufferClass self => self -> (TextTag -> TextIter -> TextIter -> IO ()) -> IO (ConnectId self)--module Graphics.UI.Gtk.Abstract.Widget-data Widget-instance GObjectClass Widget-instance ObjectClass Widget-instance WidgetClass Widget-class ObjectClass o => WidgetClass o-instance WidgetClass AboutDialog-instance WidgetClass AccelLabel-instance WidgetClass Alignment-instance WidgetClass Arrow-instance WidgetClass AspectFrame-instance WidgetClass Bin-instance WidgetClass Box-instance WidgetClass Button-instance WidgetClass ButtonBox-instance WidgetClass CList-instance WidgetClass CTree-instance WidgetClass Calendar-instance WidgetClass CellView-instance WidgetClass CheckButton-instance WidgetClass CheckMenuItem-instance WidgetClass ColorButton-instance WidgetClass ColorSelection-instance WidgetClass ColorSelectionDialog-instance WidgetClass Combo-instance WidgetClass ComboBox-instance WidgetClass ComboBoxEntry-instance WidgetClass Container-instance WidgetClass Curve-instance WidgetClass Dialog-instance WidgetClass DrawingArea-instance WidgetClass Entry-instance WidgetClass EventBox-instance WidgetClass Expander-instance WidgetClass FileChooserButton-instance WidgetClass FileChooserDialog-instance WidgetClass FileChooserWidget-instance WidgetClass FileSelection-instance WidgetClass Fixed-instance WidgetClass FontButton-instance WidgetClass FontSelection-instance WidgetClass FontSelectionDialog-instance WidgetClass Frame-instance WidgetClass GammaCurve-instance WidgetClass HBox-instance WidgetClass HButtonBox-instance WidgetClass HPaned-instance WidgetClass HRuler-instance WidgetClass HScale-instance WidgetClass HScrollbar-instance WidgetClass HSeparator-instance WidgetClass HandleBox-instance WidgetClass IconView-instance WidgetClass Image-instance WidgetClass ImageMenuItem-instance WidgetClass InputDialog-instance WidgetClass Invisible-instance WidgetClass Item-instance WidgetClass Label-instance WidgetClass Layout-instance WidgetClass List-instance WidgetClass ListItem-instance WidgetClass Menu-instance WidgetClass MenuBar-instance WidgetClass MenuItem-instance WidgetClass MenuShell-instance WidgetClass MenuToolButton-instance WidgetClass MessageDialog-instance WidgetClass Misc-instance WidgetClass MozEmbed-instance WidgetClass Notebook-instance WidgetClass OptionMenu-instance WidgetClass Paned-instance WidgetClass Plug-instance WidgetClass Preview-instance WidgetClass ProgressBar-instance WidgetClass RadioButton-instance WidgetClass RadioMenuItem-instance WidgetClass RadioToolButton-instance WidgetClass Range-instance WidgetClass Ruler-instance WidgetClass Scale-instance WidgetClass Scrollbar-instance WidgetClass ScrolledWindow-instance WidgetClass Separator-instance WidgetClass SeparatorMenuItem-instance WidgetClass SeparatorToolItem-instance WidgetClass Socket-instance WidgetClass SourceView-instance WidgetClass SpinButton-instance WidgetClass Statusbar-instance WidgetClass Table-instance WidgetClass TearoffMenuItem-instance WidgetClass TextView-instance WidgetClass TipsQuery-instance WidgetClass ToggleButton-instance WidgetClass ToggleToolButton-instance WidgetClass ToolButton-instance WidgetClass ToolItem-instance WidgetClass Toolbar-instance WidgetClass TreeView-instance WidgetClass VBox-instance WidgetClass VButtonBox-instance WidgetClass VPaned-instance WidgetClass VRuler-instance WidgetClass VScale-instance WidgetClass VScrollbar-instance WidgetClass VSeparator-instance WidgetClass Viewport-instance WidgetClass Widget-instance WidgetClass Window-castToWidget :: GObjectClass obj => obj -> Widget-toWidget :: WidgetClass o => o -> Widget-type Allocation = Rectangle-data Requisition-Requisition :: Int -> Int -> Requisition-instance Storable Requisition-data Rectangle-Rectangle :: Int -> Int -> Int -> Int -> Rectangle-instance Storable Rectangle-widgetGetState :: WidgetClass w => w -> IO StateType-widgetGetSavedState :: WidgetClass w => w -> IO StateType-widgetShow :: WidgetClass self => self -> IO ()-widgetShowNow :: WidgetClass self => self -> IO ()-widgetHide :: WidgetClass self => self -> IO ()-widgetShowAll :: WidgetClass self => self -> IO ()-widgetHideAll :: WidgetClass self => self -> IO ()-widgetDestroy :: WidgetClass self => self -> IO ()-widgetQueueDraw :: WidgetClass self => self -> IO ()-widgetHasIntersection :: WidgetClass self => self -> Rectangle -> IO Bool-widgetIntersect :: WidgetClass self => self -> Rectangle -> IO (Maybe Rectangle)-widgetRegionIntersect :: WidgetClass self => self -> Region -> IO Region-widgetActivate :: WidgetClass self => self -> IO Bool-widgetSetSensitivity :: WidgetClass self => self -> Bool -> IO ()-widgetSetSizeRequest :: WidgetClass self => self -> Int -> Int -> IO ()-widgetGetSizeRequest :: WidgetClass self => self -> IO (Int, Int)-widgetIsFocus :: WidgetClass self => self -> IO Bool-widgetGrabFocus :: WidgetClass self => self -> IO ()-widgetSetAppPaintable :: WidgetClass self => self -> Bool -> IO ()-widgetSetName :: WidgetClass self => self -> String -> IO ()-widgetGetName :: WidgetClass self => self -> IO String-data EventMask-ExposureMask :: EventMask-PointerMotionMask :: EventMask-PointerMotionHintMask :: EventMask-ButtonMotionMask :: EventMask-Button1MotionMask :: EventMask-Button2MotionMask :: EventMask-Button3MotionMask :: EventMask-ButtonPressMask :: EventMask-ButtonReleaseMask :: EventMask-KeyPressMask :: EventMask-KeyReleaseMask :: EventMask-EnterNotifyMask :: EventMask-LeaveNotifyMask :: EventMask-FocusChangeMask :: EventMask-StructureMask :: EventMask-PropertyChangeMask :: EventMask-VisibilityNotifyMask :: EventMask-ProximityInMask :: EventMask-ProximityOutMask :: EventMask-SubstructureMask :: EventMask-ScrollMask :: EventMask-AllEventsMask :: EventMask-instance Bounded EventMask-instance Enum EventMask-instance Flags EventMask-widgetDelEvents :: WidgetClass self => self -> [EventMask] -> IO ()-widgetAddEvents :: WidgetClass self => self -> [EventMask] -> IO ()-widgetGetEvents :: WidgetClass self => self -> IO [EventMask]-data ExtensionMode-ExtensionEventsNone :: ExtensionMode-ExtensionEventsAll :: ExtensionMode-ExtensionEventsCursor :: ExtensionMode-instance Bounded ExtensionMode-instance Enum ExtensionMode-instance Flags ExtensionMode-widgetSetExtensionEvents :: WidgetClass self => self -> [ExtensionMode] -> IO ()-widgetGetExtensionEvents :: WidgetClass self => self -> IO [ExtensionMode]-widgetGetToplevel :: WidgetClass self => self -> IO Widget-widgetIsAncestor :: (WidgetClass self, WidgetClass ancestor) => self -> ancestor -> IO Bool-widgetReparent :: (WidgetClass self, WidgetClass newParent) => self -> newParent -> IO ()-data TextDirection-TextDirNone :: TextDirection-TextDirLtr :: TextDirection-TextDirRtl :: TextDirection-instance Enum TextDirection-instance Eq TextDirection-widgetSetDirection :: WidgetClass self => self -> TextDirection -> IO ()-widgetGetDirection :: WidgetClass self => self -> IO TextDirection-widgetQueueDrawArea :: WidgetClass self => self -> Int -> Int -> Int -> Int -> IO ()-widgetSetDoubleBuffered :: WidgetClass self => self -> Bool -> IO ()-widgetSetRedrawOnAllocate :: WidgetClass self => self -> Bool -> IO ()-widgetGetParentWindow :: WidgetClass self => self -> IO DrawWindow-widgetGetPointer :: WidgetClass self => self -> IO (Int, Int)-widgetTranslateCoordinates :: (WidgetClass self, WidgetClass destWidget) => self -> destWidget -> Int -> Int -> IO (Maybe (Int, Int))-widgetPath :: WidgetClass self => self -> IO (Int, String, String)-widgetClassPath :: WidgetClass self => self -> IO (Int, String, String)-widgetGetCompositeName :: WidgetClass self => self -> IO (Maybe String)-widgetSetCompositeName :: WidgetClass self => self -> String -> IO ()-widgetGetParent :: WidgetClass self => self -> IO (Maybe Widget)-widgetSetDefaultDirection :: TextDirection -> IO ()-widgetGetDefaultDirection :: IO TextDirection-widgetModifyStyle :: (WidgetClass self, RcStyleClass style) => self -> style -> IO ()-widgetGetModifierStyle :: WidgetClass self => self -> IO RcStyle-widgetModifyFg :: WidgetClass self => self -> StateType -> Color -> IO ()-widgetModifyBg :: WidgetClass self => self -> StateType -> Color -> IO ()-widgetModifyText :: WidgetClass self => self -> StateType -> Color -> IO ()-widgetModifyBase :: WidgetClass self => self -> StateType -> Color -> IO ()-widgetModifyFont :: WidgetClass self => self -> Maybe FontDescription -> IO ()-widgetCreateLayout :: WidgetClass self => self -> String -> IO PangoLayout-widgetCreatePangoContext :: WidgetClass self => self -> IO PangoContext-widgetGetPangoContext :: WidgetClass self => self -> IO PangoContext-widgetRenderIcon :: WidgetClass self => self -> StockId -> IconSize -> String -> IO (Maybe Pixbuf)-widgetGetCanFocus :: WidgetClass self => self -> IO Bool-widgetSetCanFocus :: WidgetClass self => self -> Bool -> IO ()-widgetExtensionEvents :: WidgetClass self => Attr self [ExtensionMode]-widgetDirection :: WidgetClass self => Attr self TextDirection-widgetCanFocus :: WidgetClass self => Attr self Bool-onButtonPress :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterButtonPress :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-onButtonRelease :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterButtonRelease :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-onClient :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterClient :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-onConfigure :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterConfigure :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-onDelete :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterDelete :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-onDestroyEvent :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterDestroyEvent :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-onDirectionChanged :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterDirectionChanged :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-onEnterNotify :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterEnterNotify :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-onLeaveNotify :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterLeaveNotify :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-onExpose :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterExpose :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-onExposeRect :: WidgetClass w => w -> (Rectangle -> IO ()) -> IO (ConnectId w)-afterExposeRect :: WidgetClass w => w -> (Rectangle -> IO ()) -> IO (ConnectId w)-onFocusIn :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterFocusIn :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-onFocusOut :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterFocusOut :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-onGrabFocus :: WidgetClass w => w -> IO () -> IO (ConnectId w)-afterGrabFocus :: WidgetClass w => w -> IO () -> IO (ConnectId w)-onDestroy :: WidgetClass w => w -> IO () -> IO (ConnectId w)-afterDestroy :: WidgetClass w => w -> IO () -> IO (ConnectId w)-onHide :: WidgetClass w => w -> IO () -> IO (ConnectId w)-afterHide :: WidgetClass w => w -> IO () -> IO (ConnectId w)-onHierarchyChanged :: WidgetClass w => w -> IO () -> IO (ConnectId w)-afterHierarchyChanged :: WidgetClass w => w -> IO () -> IO (ConnectId w)-onKeyPress :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterKeyPress :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-onKeyRelease :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterKeyRelease :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-onMnemonicActivate :: WidgetClass w => w -> (Bool -> IO Bool) -> IO (ConnectId w)-afterMnemonicActivate :: WidgetClass w => w -> (Bool -> IO Bool) -> IO (ConnectId w)-onMotionNotify :: WidgetClass w => w -> Bool -> (Event -> IO Bool) -> IO (ConnectId w)-afterMotionNotify :: WidgetClass w => w -> Bool -> (Event -> IO Bool) -> IO (ConnectId w)-onParentSet :: (WidgetClass w, WidgetClass old) => w -> (old -> IO ()) -> IO (ConnectId w)-afterParentSet :: (WidgetClass w, WidgetClass old) => w -> (old -> IO ()) -> IO (ConnectId w)-onPopupMenu :: WidgetClass w => w -> IO () -> IO (ConnectId w)-afterPopupMenu :: WidgetClass w => w -> IO () -> IO (ConnectId w)-onProximityIn :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterProximityIn :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-onProximityOut :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterProximityOut :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-onRealize :: WidgetClass w => w -> IO () -> IO (ConnectId w)-afterRealize :: WidgetClass w => w -> IO () -> IO (ConnectId w)-onScroll :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterScroll :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-onShow :: WidgetClass w => w -> IO () -> IO (ConnectId w)-afterShow :: WidgetClass w => w -> IO () -> IO (ConnectId w)-onSizeAllocate :: WidgetClass w => w -> (Allocation -> IO ()) -> IO (ConnectId w)-afterSizeAllocate :: WidgetClass w => w -> (Allocation -> IO ()) -> IO (ConnectId w)-onSizeRequest :: WidgetClass w => w -> IO Requisition -> IO (ConnectId w)-afterSizeRequest :: WidgetClass w => w -> IO Requisition -> IO (ConnectId w)-data StateType-StateNormal :: StateType-StateActive :: StateType-StatePrelight :: StateType-StateSelected :: StateType-StateInsensitive :: StateType-instance Enum StateType-instance Eq StateType-onStateChanged :: WidgetClass w => w -> (StateType -> IO ()) -> IO (ConnectId w)-afterStateChanged :: WidgetClass w => w -> (StateType -> IO ()) -> IO (ConnectId w)-onUnmap :: WidgetClass w => w -> IO () -> IO (ConnectId w)-afterUnmap :: WidgetClass w => w -> IO () -> IO (ConnectId w)-onUnrealize :: WidgetClass w => w -> IO () -> IO (ConnectId w)-afterUnrealize :: WidgetClass w => w -> IO () -> IO (ConnectId w)-onVisibilityNotify :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterVisibilityNotify :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-onWindowState :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)-afterWindowState :: WidgetClass w => w -> (Event -> IO Bool) -> IO (ConnectId w)--module Graphics.UI.Gtk.Gdk.Drawable-data Drawable-instance DrawableClass Drawable-instance GObjectClass Drawable-class GObjectClass o => DrawableClass o-instance DrawableClass DrawWindow-instance DrawableClass Drawable-instance DrawableClass Pixmap-castToDrawable :: GObjectClass obj => obj -> Drawable-toDrawable :: DrawableClass o => o -> Drawable-drawableGetDepth :: DrawableClass d => d -> IO Int-drawableGetSize :: DrawableClass d => d -> IO (Int, Int)-drawableGetClipRegion :: DrawableClass d => d -> IO Region-drawableGetVisibleRegion :: DrawableClass d => d -> IO Region-type Point = (Int, Int)-drawPoint :: DrawableClass d => d -> GC -> Point -> IO ()-drawPoints :: DrawableClass d => d -> GC -> [Point] -> IO ()-drawLine :: DrawableClass d => d -> GC -> Point -> Point -> IO ()-drawLines :: DrawableClass d => d -> GC -> [Point] -> IO ()-data Dither-RgbDitherNone :: Dither-RgbDitherNormal :: Dither-RgbDitherMax :: Dither-instance Enum Dither-drawPixbuf :: DrawableClass d => d -> GC -> Pixbuf -> Int -> Int -> Int -> Int -> Int -> Int -> Dither -> Int -> Int -> IO ()-drawSegments :: DrawableClass d => d -> GC -> [(Point, Point)] -> IO ()-drawRectangle :: DrawableClass d => d -> GC -> Bool -> Int -> Int -> Int -> Int -> IO ()-drawArc :: DrawableClass d => d -> GC -> Bool -> Int -> Int -> Int -> Int -> Int -> Int -> IO ()-drawPolygon :: DrawableClass d => d -> GC -> Bool -> [Point] -> IO ()-drawGlyphs :: DrawableClass d => d -> GC -> Int -> Int -> GlyphItem -> IO ()-drawLayoutLine :: DrawableClass d => d -> GC -> Int -> Int -> LayoutLine -> IO ()-drawLayoutLineWithColors :: DrawableClass d => d -> GC -> Int -> Int -> LayoutLine -> Maybe Color -> Maybe Color -> IO ()-drawLayout :: DrawableClass d => d -> GC -> Int -> Int -> PangoLayout -> IO ()-drawLayoutWithColors :: DrawableClass d => d -> GC -> Int -> Int -> PangoLayout -> Maybe Color -> Maybe Color -> IO ()-drawDrawable :: (DrawableClass src, DrawableClass dest) => dest -> GC -> src -> Int -> Int -> Int -> Int -> Int -> Int -> IO ()--module Graphics.UI.Gtk.Gdk.Pixmap-data Pixmap-instance DrawableClass Pixmap-instance GObjectClass Pixmap-instance PixmapClass Pixmap-class DrawableClass o => PixmapClass o-instance PixmapClass Pixmap-pixmapNew :: DrawableClass drawable => Maybe drawable -> Int -> Int -> Maybe Int -> IO Pixmap--module Graphics.UI.Gtk.Pango.Font-data PangoUnit-instance Enum PangoUnit-instance Eq PangoUnit-instance Fractional PangoUnit-instance Integral PangoUnit-instance Num PangoUnit-instance Ord PangoUnit-instance Real PangoUnit-instance Show PangoUnit-data FontDescription-fontDescriptionNew :: IO FontDescription-fontDescriptionCopy :: FontDescription -> IO FontDescription-fontDescriptionSetFamily :: FontDescription -> String -> IO ()-fontDescriptionGetFamily :: FontDescription -> IO (Maybe String)-fontDescriptionSetStyle :: FontDescription -> FontStyle -> IO ()-fontDescriptionGetStyle :: FontDescription -> IO (Maybe FontStyle)-fontDescriptionSetVariant :: FontDescription -> Variant -> IO ()-fontDescriptionGetVariant :: FontDescription -> IO (Maybe Variant)-fontDescriptionSetWeight :: FontDescription -> Weight -> IO ()-fontDescriptionGetWeight :: FontDescription -> IO (Maybe Weight)-fontDescriptionSetStretch :: FontDescription -> Stretch -> IO ()-fontDescriptionGetStretch :: FontDescription -> IO (Maybe Stretch)-fontDescriptionSetSize :: FontDescription -> PangoUnit -> IO ()-fontDescriptionGetSize :: FontDescription -> IO (Maybe PangoUnit)-data FontMask-PangoFontMaskFamily :: FontMask-PangoFontMaskStyle :: FontMask-PangoFontMaskVariant :: FontMask-PangoFontMaskWeight :: FontMask-PangoFontMaskStretch :: FontMask-PangoFontMaskSize :: FontMask-instance Bounded FontMask-instance Enum FontMask-instance Flags FontMask-fontDescriptionUnsetFields :: FontDescription -> [FontMask] -> IO ()-fontDescriptionMerge :: FontDescription -> FontDescription -> Bool -> IO ()-fontDescriptionBetterMatch :: FontDescription -> FontDescription -> FontDescription -> Bool-fontDescriptionFromString :: String -> IO FontDescription-fontDescriptionToString :: FontDescription -> IO String-data FontMap-instance FontMapClass FontMap-instance GObjectClass FontMap-pangoFontMapListFamilies :: FontMap -> IO [FontFamily]-data FontFamily-instance FontFamilyClass FontFamily-instance GObjectClass FontFamily-instance Show FontFamily-pangoFontFamilyIsMonospace :: FontFamily -> Bool-pangoFontFamilyListFaces :: FontFamily -> IO [FontFace]-data FontFace-instance FontFaceClass FontFace-instance GObjectClass FontFace-instance Show FontFace-pangoFontFaceListSizes :: FontFace -> IO (Maybe [PangoUnit])-pangoFontFaceDescribe :: FontFace -> IO FontDescription-data FontMetrics-FontMetrics :: PangoUnit -> PangoUnit -> PangoUnit -> PangoUnit -> PangoUnit -> PangoUnit -> PangoUnit -> PangoUnit -> FontMetrics-ascent :: FontMetrics -> PangoUnit-descent :: FontMetrics -> PangoUnit-approximateCharWidth :: FontMetrics -> PangoUnit-approximateDigitWidth :: FontMetrics -> PangoUnit-underlineThickness :: FontMetrics -> PangoUnit-underlinePosition :: FontMetrics -> PangoUnit-strikethroughThickenss :: FontMetrics -> PangoUnit-strikethroughPosition :: FontMetrics -> PangoUnit-instance Show FontMetrics--module Graphics.UI.Gtk.Pango.Context-data PangoContext-instance GObjectClass PangoContext-instance PangoContextClass PangoContext-data PangoDirection-PangoDirectionLtr :: PangoDirection-PangoDirectionRtl :: PangoDirection-PangoDirectionWeakLtr :: PangoDirection-PangoDirectionWeakRtl :: PangoDirection-PangoDirectionNeutral :: PangoDirection-instance Enum PangoDirection-instance Eq PangoDirection-instance Ord PangoDirection-contextListFamilies :: PangoContext -> IO [FontFamily]-contextGetMetrics :: PangoContext -> FontDescription -> Language -> IO FontMetrics-contextSetFontDescription :: PangoContext -> FontDescription -> IO ()-contextGetFontDescription :: PangoContext -> IO FontDescription-data Language-instance Eq Language-instance Show Language-languageFromString :: String -> IO Language-contextSetLanguage :: PangoContext -> Language -> IO ()-contextGetLanguage :: PangoContext -> IO Language-contextSetTextDir :: PangoContext -> PangoDirection -> IO ()-contextGetTextDir :: PangoContext -> IO PangoDirection--module Graphics.UI.Gtk.Pango.Markup-type Markup = String-data SpanAttribute-FontDescr :: String -> SpanAttribute-FontFamily :: String -> SpanAttribute-FontSize :: Size -> SpanAttribute-FontStyle :: FontStyle -> SpanAttribute-FontWeight :: Weight -> SpanAttribute-FontVariant :: Variant -> SpanAttribute-FontStretch :: Stretch -> SpanAttribute-FontForeground :: String -> SpanAttribute-FontBackground :: String -> SpanAttribute-FontUnderline :: Underline -> SpanAttribute-FontRise :: Double -> SpanAttribute-FontLang :: Language -> SpanAttribute-instance Show SpanAttribute-markSpan :: [SpanAttribute] -> String -> String-data Size-SizePoint :: Double -> Size-SizeUnreadable :: Size-SizeTiny :: Size-SizeSmall :: Size-SizeMedium :: Size-SizeLarge :: Size-SizeHuge :: Size-SizeGiant :: Size-SizeSmaller :: Size-SizeLarger :: Size-instance Show Size--module Graphics.UI.Gtk.Display.Label-data Label-instance GObjectClass Label-instance LabelClass Label-instance MiscClass Label-instance ObjectClass Label-instance WidgetClass Label-class MiscClass o => LabelClass o-instance LabelClass AccelLabel-instance LabelClass Label-instance LabelClass TipsQuery-castToLabel :: GObjectClass obj => obj -> Label-toLabel :: LabelClass o => o -> Label-labelNew :: Maybe String -> IO Label-labelNewWithMnemonic :: String -> IO Label-labelSetText :: LabelClass self => self -> String -> IO ()-labelSetLabel :: LabelClass self => self -> String -> IO ()-labelSetTextWithMnemonic :: LabelClass self => self -> String -> IO ()-labelSetMarkup :: LabelClass self => self -> Markup -> IO ()-labelSetMarkupWithMnemonic :: LabelClass self => self -> Markup -> IO ()-labelSetMnemonicWidget :: (LabelClass self, WidgetClass widget) => self -> widget -> IO ()-labelGetMnemonicWidget :: LabelClass self => self -> IO (Maybe Widget)-type KeyVal = Word32-labelGetMnemonicKeyval :: LabelClass self => self -> IO KeyVal-labelSetUseMarkup :: LabelClass self => self -> Bool -> IO ()-labelGetUseMarkup :: LabelClass self => self -> IO Bool-labelSetUseUnderline :: LabelClass self => self -> Bool -> IO ()-labelGetUseUnderline :: LabelClass self => self -> IO Bool-labelGetText :: LabelClass self => self -> IO String-labelGetLabel :: LabelClass self => self -> IO String-labelSetPattern :: LabelClass l => l -> [Int] -> IO ()-data Justification-JustifyLeft :: Justification-JustifyRight :: Justification-JustifyCenter :: Justification-JustifyFill :: Justification-instance Enum Justification-instance Eq Justification-labelSetJustify :: LabelClass self => self -> Justification -> IO ()-labelGetJustify :: LabelClass self => self -> IO Justification-labelGetLayout :: LabelClass self => self -> IO PangoLayout-labelSetLineWrap :: LabelClass self => self -> Bool -> IO ()-labelGetLineWrap :: LabelClass self => self -> IO Bool-labelSetSelectable :: LabelClass self => self -> Bool -> IO ()-labelGetSelectable :: LabelClass self => self -> IO Bool-labelSelectRegion :: LabelClass self => self -> Int -> Int -> IO ()-labelGetSelectionBounds :: LabelClass self => self -> IO (Maybe (Int, Int))-labelGetLayoutOffsets :: LabelClass self => self -> IO (Int, Int)-labelSetEllipsize :: LabelClass self => self -> EllipsizeMode -> IO ()-labelGetEllipsize :: LabelClass self => self -> IO EllipsizeMode-labelSetWidthChars :: LabelClass self => self -> Int -> IO ()-labelGetWidthChars :: LabelClass self => self -> IO Int-labelSetMaxWidthChars :: LabelClass self => self -> Int -> IO ()-labelGetMaxWidthChars :: LabelClass self => self -> IO Int-labelSetSingleLineMode :: LabelClass self => self -> Bool -> IO ()-labelGetSingleLineMode :: LabelClass self => self -> IO Bool-labelSetAngle :: LabelClass self => self -> Double -> IO ()-labelGetAngle :: LabelClass self => self -> IO Double-labelLabel :: LabelClass self => Attr self String-labelUseMarkup :: LabelClass self => Attr self Bool-labelUseUnderline :: LabelClass self => Attr self Bool-labelJustify :: LabelClass self => Attr self Justification-labelWrap :: LabelClass self => Attr self Bool-labelSelectable :: LabelClass self => Attr self Bool-labelMnemonicWidget :: (LabelClass self, WidgetClass widget) => ReadWriteAttr self (Maybe Widget) widget-labelCursorPosition :: LabelClass self => ReadAttr self Int-labelSelectionBound :: LabelClass self => ReadAttr self Int-labelEllipsize :: LabelClass self => Attr self EllipsizeMode-labelWidthChars :: LabelClass self => Attr self Int-labelSingleLineMode :: LabelClass self => Attr self Bool-labelAngle :: LabelClass self => Attr self Double-labelMaxWidthChars :: LabelClass self => Attr self Int-labelLineWrap :: LabelClass self => Attr self Bool-labelText :: LabelClass self => Attr self String--module Graphics.UI.Gtk.Pango.Rendering-data PangoAttribute-AttrLanguage :: Int -> Int -> Language -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paLang :: PangoAttribute -> Language-AttrFamily :: Int -> Int -> String -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paFamily :: PangoAttribute -> String-AttrStyle :: Int -> Int -> FontStyle -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paStyle :: PangoAttribute -> FontStyle-AttrWeight :: Int -> Int -> Weight -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paWeight :: PangoAttribute -> Weight-AttrVariant :: Int -> Int -> Variant -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paVariant :: PangoAttribute -> Variant-AttrStretch :: Int -> Int -> Stretch -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paStretch :: PangoAttribute -> Stretch-AttrSize :: Int -> Int -> PangoUnit -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paSize :: PangoAttribute -> PangoUnit-AttrAbsSize :: Int -> Int -> PangoUnit -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paSize :: PangoAttribute -> PangoUnit-AttrFontDescription :: Int -> Int -> FontDescription -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paFontDescription :: PangoAttribute -> FontDescription-AttrForeground :: Int -> Int -> Color -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paColor :: PangoAttribute -> Color-AttrBackground :: Int -> Int -> Color -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paColor :: PangoAttribute -> Color-AttrUnderline :: Int -> Int -> Underline -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paUnderline :: PangoAttribute -> Underline-AttrUnderlineColor :: Int -> Int -> Color -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paColor :: PangoAttribute -> Color-AttrStrikethrough :: Int -> Int -> Bool -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paStrikethrough :: PangoAttribute -> Bool-AttrStrikethroughColor :: Int -> Int -> Color -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paColor :: PangoAttribute -> Color-AttrRise :: Int -> Int -> PangoUnit -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paRise :: PangoAttribute -> PangoUnit-AttrShape :: Int -> Int -> PangoRectangle -> PangoRectangle -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paInk :: PangoAttribute -> PangoRectangle-paLogical :: PangoAttribute -> PangoRectangle-AttrScale :: Int -> Int -> Double -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paScale :: PangoAttribute -> Double-AttrFallback :: Int -> Int -> Bool -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paFallback :: PangoAttribute -> Bool-AttrLetterSpacing :: Int -> Int -> PangoUnit -> PangoAttribute-paStart :: PangoAttribute -> Int-paEnd :: PangoAttribute -> Int-paLetterSpacing :: PangoAttribute -> PangoUnit-data PangoItem-pangoItemize :: PangoContext -> String -> [PangoAttribute] -> IO [PangoItem]-pangoItemGetFontMetrics :: PangoItem -> IO FontMetrics-data GlyphItem-pangoShape :: PangoItem -> IO GlyphItem-glyphItemExtents :: GlyphItem -> IO (PangoRectangle, PangoRectangle)-glyphItemExtentsRange :: GlyphItem -> Int -> Int -> IO (PangoRectangle, PangoRectangle)-glyphItemIndexToX :: GlyphItem -> Int -> Bool -> IO PangoUnit-glyphItemXToIndex :: GlyphItem -> PangoUnit -> IO (Int, Bool)-glyphItemGetLogicalWidths :: GlyphItem -> Maybe Bool -> IO [PangoUnit]-glyphItemSplit :: GlyphItem -> Int -> IO (GlyphItem, GlyphItem)--module Graphics.UI.Gtk.Pango.Layout-data PangoRectangle-PangoRectangle :: PangoUnit -> PangoUnit -> PangoUnit -> PangoUnit -> PangoRectangle-data PangoLayout-layoutEmpty :: PangoContext -> IO PangoLayout-layoutText :: PangoContext -> String -> IO PangoLayout-layoutCopy :: PangoLayout -> IO PangoLayout-layoutGetContext :: PangoLayout -> IO PangoContext-layoutContextChanged :: PangoLayout -> IO ()-layoutSetText :: PangoLayout -> String -> IO ()-layoutGetText :: PangoLayout -> IO String-layoutSetMarkup :: PangoLayout -> Markup -> IO String-escapeMarkup :: String -> String-layoutSetMarkupWithAccel :: PangoLayout -> Markup -> IO (Char, String)-layoutSetAttributes :: PangoLayout -> [PangoAttribute] -> IO ()-layoutSetFontDescription :: PangoLayout -> Maybe FontDescription -> IO ()-layoutGetFontDescription :: PangoLayout -> IO (Maybe FontDescription)-layoutSetWidth :: PangoLayout -> Maybe PangoUnit -> IO ()-layoutGetWidth :: PangoLayout -> IO (Maybe PangoUnit)-data LayoutWrapMode-WrapWholeWords :: LayoutWrapMode-WrapAnywhere :: LayoutWrapMode-WrapPartialWords :: LayoutWrapMode-instance Enum LayoutWrapMode-layoutSetWrap :: PangoLayout -> LayoutWrapMode -> IO ()-layoutGetWrap :: PangoLayout -> IO LayoutWrapMode-data EllipsizeMode-EllipsizeNone :: EllipsizeMode-EllipsizeStart :: EllipsizeMode-EllipsizeMiddle :: EllipsizeMode-EllipsizeEnd :: EllipsizeMode-instance Enum EllipsizeMode-instance Eq EllipsizeMode-layoutSetEllipsize :: PangoLayout -> EllipsizeMode -> IO ()-layoutGetEllipsize :: PangoLayout -> IO EllipsizeMode-layoutSetIndent :: PangoLayout -> PangoUnit -> IO ()-layoutGetIndent :: PangoLayout -> IO PangoUnit-layoutSetSpacing :: PangoLayout -> PangoUnit -> IO ()-layoutGetSpacing :: PangoLayout -> IO PangoUnit-layoutSetJustify :: PangoLayout -> Bool -> IO ()-layoutGetJustify :: PangoLayout -> IO Bool-layoutSetAutoDir :: PangoLayout -> Bool -> IO ()-layoutGetAutoDir :: PangoLayout -> IO Bool-data LayoutAlignment-AlignLeft :: LayoutAlignment-AlignCenter :: LayoutAlignment-AlignRight :: LayoutAlignment-instance Enum LayoutAlignment-layoutSetAlignment :: PangoLayout -> LayoutAlignment -> IO ()-layoutGetAlignment :: PangoLayout -> IO LayoutAlignment-data TabAlign-instance Enum TabAlign-type TabPosition = (PangoUnit, TabAlign)-layoutSetTabs :: PangoLayout -> [TabPosition] -> IO ()-layoutResetTabs :: PangoLayout -> IO ()-layoutGetTabs :: PangoLayout -> IO (Maybe [TabPosition])-layoutSetSingleParagraphMode :: PangoLayout -> Bool -> IO ()-layoutGetSingleParagraphMode :: PangoLayout -> IO Bool-layoutXYToIndex :: PangoLayout -> PangoUnit -> PangoUnit -> IO (Bool, Int, Int)-layoutIndexToPos :: PangoLayout -> Int -> IO PangoRectangle-layoutGetCursorPos :: PangoLayout -> Int -> IO (PangoRectangle, PangoRectangle)-data CursorPos-CursorPosPrevPara :: CursorPos-CursorPos :: Int -> Int -> CursorPos-CursorPosNextPara :: CursorPos-layoutMoveCursorVisually :: PangoLayout -> Bool -> Int -> Bool -> IO CursorPos-layoutGetExtents :: PangoLayout -> IO (PangoRectangle, PangoRectangle)-layoutGetPixelExtents :: PangoLayout -> IO (Rectangle, Rectangle)-layoutGetLineCount :: PangoLayout -> IO Int-layoutGetLine :: PangoLayout -> Int -> IO LayoutLine-layoutGetLines :: PangoLayout -> IO [LayoutLine]-data LayoutIter-layoutGetIter :: PangoLayout -> IO LayoutIter-layoutIterNextItem :: LayoutIter -> IO Bool-layoutIterNextChar :: LayoutIter -> IO Bool-layoutIterNextCluster :: LayoutIter -> IO Bool-layoutIterNextLine :: LayoutIter -> IO Bool-layoutIterAtLastLine :: LayoutIter -> IO Bool-layoutIterGetIndex :: LayoutIter -> IO Int-layoutIterGetBaseline :: LayoutIter -> IO PangoUnit-layoutIterGetItem :: LayoutIter -> IO (Maybe GlyphItem)-layoutIterGetLine :: LayoutIter -> IO (Maybe LayoutLine)-layoutIterGetCharExtents :: LayoutIter -> IO PangoRectangle-layoutIterGetClusterExtents :: LayoutIter -> IO (PangoRectangle, PangoRectangle)-layoutIterGetRunExtents :: LayoutIter -> IO (PangoRectangle, PangoRectangle)-layoutIterGetLineYRange :: LayoutIter -> IO (PangoUnit, PangoUnit)-layoutIterGetLineExtents :: LayoutIter -> IO (PangoRectangle, PangoRectangle)-data LayoutLine-layoutLineGetExtents :: LayoutLine -> IO (PangoRectangle, PangoRectangle)-layoutLineGetPixelExtents :: LayoutLine -> IO (Rectangle, Rectangle)-layoutLineIndexToX :: LayoutLine -> Int -> Bool -> IO PangoUnit-layoutLineXToIndex :: LayoutLine -> PangoUnit -> IO (Bool, Int, Int)-layoutLineGetXRanges :: LayoutLine -> Int -> Int -> IO [(PangoUnit, PangoUnit)]--module Graphics.UI.Gtk.SourceView.SourceTagStyle-data SourceTagStyle-SourceTagStyle :: Bool -> Maybe Color -> Maybe Color -> Bool -> Bool -> Bool -> Bool -> SourceTagStyle-isDefault :: SourceTagStyle -> Bool-foreground :: SourceTagStyle -> Maybe Color-background :: SourceTagStyle -> Maybe Color-italic :: SourceTagStyle -> Bool-bold :: SourceTagStyle -> Bool-underline :: SourceTagStyle -> Bool-strikethrough :: SourceTagStyle -> Bool-instance Storable SourceTagStyle--module Graphics.UI.Gtk.SourceView.SourceStyleScheme-data SourceStyleScheme-instance GObjectClass SourceStyleScheme-instance SourceStyleSchemeClass SourceStyleScheme-castToSourceStyleScheme :: GObjectClass obj => obj -> SourceStyleScheme-sourceStyleSchemeGetTagStyle :: SourceStyleScheme -> String -> IO SourceTagStyle-sourceStyleSchemeGetName :: SourceStyleScheme -> IO String-sourceStyleSchemeGetDefault :: IO SourceStyleScheme--module Graphics.UI.Gtk.SourceView.SourceTag-data SourceTag-instance GObjectClass SourceTag-instance SourceTagClass SourceTag-instance TextTagClass SourceTag-castToSourceTag :: GObjectClass obj => obj -> SourceTag-syntaxTagNew :: String -> String -> String -> String -> IO SourceTag-patternTagNew :: String -> String -> String -> IO SourceTag-keywordListTagNew :: String -> String -> [String] -> Bool -> Bool -> Bool -> String -> String -> IO SourceTag-blockCommentTagNew :: String -> String -> String -> String -> IO SourceTag-lineCommentTagNew :: String -> String -> String -> IO SourceTag-stringTagNew :: String -> String -> String -> String -> Bool -> IO SourceTag-sourceTagGetStyle :: SourceTag -> IO SourceTagStyle-sourceTagSetStyle :: SourceTag -> SourceTagStyle -> IO ()--module Graphics.UI.Gtk.SourceView.SourceTagTable-data SourceTagTable-instance GObjectClass SourceTagTable-instance SourceTagTableClass SourceTagTable-instance TextTagTableClass SourceTagTable-class TextTagTableClass o => SourceTagTableClass o-instance SourceTagTableClass SourceTagTable-castToSourceTagTable :: GObjectClass obj => obj -> SourceTagTable-sourceTagTableNew :: IO SourceTagTable-sourceTagTableAddTags :: SourceTagTable -> [SourceTag] -> IO ()-sourceTagTableRemoveSourceTags :: SourceTagTable -> IO ()--module Graphics.UI.Gtk.TreeList.TreeIter-newtype TreeIter-TreeIter :: ForeignPtr TreeIter -> TreeIter-createTreeIter :: Ptr TreeIter -> IO TreeIter-mallocTreeIter :: IO TreeIter-receiveTreeIter :: (TreeIter -> IO Bool) -> IO (Maybe TreeIter)--module Graphics.UI.Gtk.Entry.EntryCompletion-data EntryCompletion-instance EntryCompletionClass EntryCompletion-instance GObjectClass EntryCompletion-class GObjectClass o => EntryCompletionClass o-instance EntryCompletionClass EntryCompletion-castToEntryCompletion :: GObjectClass obj => obj -> EntryCompletion-toEntryCompletion :: EntryCompletionClass o => o -> EntryCompletion-entryCompletionNew :: IO EntryCompletion-entryCompletionGetEntry :: EntryCompletion -> IO (Maybe Entry)-entryCompletionSetModel :: TreeModelClass model => EntryCompletion -> Maybe model -> IO ()-entryCompletionGetModel :: EntryCompletion -> IO (Maybe TreeModel)-entryCompletionSetMatchFunc :: EntryCompletion -> (String -> TreeIter -> IO ()) -> IO ()-entryCompletionSetMinimumKeyLength :: EntryCompletion -> Int -> IO ()-entryCompletionGetMinimumKeyLength :: EntryCompletion -> IO Int-entryCompletionComplete :: EntryCompletion -> IO ()-entryCompletionInsertActionText :: EntryCompletion -> Int -> String -> IO ()-entryCompletionInsertActionMarkup :: EntryCompletion -> Int -> String -> IO ()-entryCompletionDeleteAction :: EntryCompletion -> Int -> IO ()-entryCompletionSetTextColumn :: EntryCompletion -> Int -> IO ()-entryCompletionInsertPrefix :: EntryCompletion -> IO ()-entryCompletionGetTextColumn :: EntryCompletion -> IO Int-entryCompletionSetInlineCompletion :: EntryCompletion -> Bool -> IO ()-entryCompletionGetInlineCompletion :: EntryCompletion -> IO Bool-entryCompletionSetPopupCompletion :: EntryCompletion -> Bool -> IO ()-entryCompletionGetPopupCompletion :: EntryCompletion -> IO Bool-entryCompletionSetPopupSetWidth :: EntryCompletion -> Bool -> IO ()-entryCompletionGetPopupSetWidth :: EntryCompletion -> IO Bool-entryCompletionSetPopupSingleMatch :: EntryCompletion -> Bool -> IO ()-entryCompletionGetPopupSingleMatch :: EntryCompletion -> IO Bool-entryCompletionModel :: TreeModelClass model => ReadWriteAttr EntryCompletion (Maybe TreeModel) (Maybe model)-entryCompletionMinimumKeyLength :: Attr EntryCompletion Int-entryCompletionTextColumn :: Attr EntryCompletion Int-entryCompletionInlineCompletion :: Attr EntryCompletion Bool-entryCompletionPopupCompletion :: Attr EntryCompletion Bool-entryCompletionPopupSetWidth :: Attr EntryCompletion Bool-entryCompletionPopupSingleMatch :: Attr EntryCompletion Bool-onInsertPrefix :: EntryCompletionClass self => self -> (String -> IO Bool) -> IO (ConnectId self)-afterInsertPrefix :: EntryCompletionClass self => self -> (String -> IO Bool) -> IO (ConnectId self)-onActionActivated :: EntryCompletionClass self => self -> (Int -> IO ()) -> IO (ConnectId self)-afterActionActivated :: EntryCompletionClass self => self -> (Int -> IO ()) -> IO (ConnectId self)--module Graphics.UI.Gtk.TreeList.TreeModel-data TreeModel-instance GObjectClass TreeModel-instance TreeModelClass TreeModel-class GObjectClass o => TreeModelClass o-instance TreeModelClass ListStore-instance TreeModelClass TreeModel-instance TreeModelClass TreeModelSort-instance TreeModelClass TreeStore-castToTreeModel :: GObjectClass obj => obj -> TreeModel-toTreeModel :: TreeModelClass o => o -> TreeModel-data TreeModelFlags-TreeModelItersPersist :: TreeModelFlags-TreeModelListOnly :: TreeModelFlags-instance Bounded TreeModelFlags-instance Enum TreeModelFlags-instance Flags TreeModelFlags-type TreePath = [Int]-data TreeRowReference-data TreeIter-treeModelGetFlags :: TreeModelClass self => self -> IO [TreeModelFlags]-treeModelGetNColumns :: TreeModelClass self => self -> IO Int-treeModelGetColumnType :: TreeModelClass self => self -> Int -> IO TMType-treeModelGetValue :: TreeModelClass self => self -> TreeIter -> Int -> IO GenericValue-treeRowReferenceNew :: TreeModelClass self => self -> NativeTreePath -> IO TreeRowReference-treeRowReferenceGetPath :: TreeRowReference -> IO TreePath-treeRowReferenceValid :: TreeRowReference -> IO Bool-treeModelGetIter :: TreeModelClass self => self -> TreePath -> IO (Maybe TreeIter)-treeModelGetIterFromString :: TreeModelClass self => self -> String -> IO (Maybe TreeIter)-gtk_tree_model_get_iter_from_string :: Ptr TreeModel -> Ptr TreeIter -> Ptr CChar -> IO CInt-treeModelGetIterFirst :: TreeModelClass self => self -> IO (Maybe TreeIter)-treeModelGetPath :: TreeModelClass self => self -> TreeIter -> IO TreePath-treeModelIterNext :: TreeModelClass self => self -> TreeIter -> IO Bool-treeModelIterChildren :: TreeModelClass self => self -> TreeIter -> IO (Maybe TreeIter)-treeModelIterHasChild :: TreeModelClass self => self -> TreeIter -> IO Bool-treeModelIterNChildren :: TreeModelClass self => self -> Maybe TreeIter -> IO Int-treeModelIterNthChild :: TreeModelClass self => self -> Maybe TreeIter -> Int -> IO (Maybe TreeIter)-treeModelIterParent :: TreeModelClass self => self -> TreeIter -> IO (Maybe TreeIter)--module Graphics.UI.Gtk.TreeList.ListStore-data ListStore-instance GObjectClass ListStore-instance ListStoreClass ListStore-instance TreeModelClass ListStore-class TreeModelClass o => ListStoreClass o-instance ListStoreClass ListStore-castToListStore :: GObjectClass obj => obj -> ListStore-toListStore :: ListStoreClass o => o -> ListStore-data TMType-TMinvalid :: TMType-TMuint :: TMType-TMint :: TMType-TMboolean :: TMType-TMenum :: TMType-TMflags :: TMType-TMfloat :: TMType-TMdouble :: TMType-TMstring :: TMType-TMobject :: TMType-instance Enum TMType-data GenericValue-GVuint :: Word -> GenericValue-GVint :: Int -> GenericValue-GVboolean :: Bool -> GenericValue-GVenum :: Int -> GenericValue-GVflags :: Int -> GenericValue-GVfloat :: Float -> GenericValue-GVdouble :: Double -> GenericValue-GVstring :: Maybe String -> GenericValue-GVobject :: GObject -> GenericValue-listStoreNew :: [TMType] -> IO ListStore-listStoreSetValue :: ListStoreClass self => self -> TreeIter -> Int -> GenericValue -> IO ()-listStoreRemove :: ListStoreClass self => self -> TreeIter -> IO Bool-listStoreInsert :: ListStoreClass self => self -> Int -> IO TreeIter-listStoreInsertBefore :: ListStoreClass self => self -> TreeIter -> IO TreeIter-listStoreInsertAfter :: ListStoreClass self => self -> TreeIter -> IO TreeIter-listStorePrepend :: ListStoreClass self => self -> IO TreeIter-listStoreAppend :: ListStoreClass self => self -> IO TreeIter-listStoreClear :: ListStoreClass self => self -> IO ()-listStoreReorder :: ListStoreClass self => self -> [Int] -> IO ()-listStoreSwap :: ListStoreClass self => self -> TreeIter -> TreeIter -> IO ()-listStoreMoveBefore :: ListStoreClass self => self -> TreeIter -> Maybe TreeIter -> IO ()-listStoreMoveAfter :: ListStoreClass self => self -> TreeIter -> Maybe TreeIter -> IO ()--module Graphics.UI.Gtk.TreeList.TreeStore-data TreeStore-instance GObjectClass TreeStore-instance TreeModelClass TreeStore-instance TreeStoreClass TreeStore-class TreeModelClass o => TreeStoreClass o-instance TreeStoreClass TreeStore-castToTreeStore :: GObjectClass obj => obj -> TreeStore-toTreeStore :: TreeStoreClass o => o -> TreeStore-data TMType-TMinvalid :: TMType-TMuint :: TMType-TMint :: TMType-TMboolean :: TMType-TMenum :: TMType-TMflags :: TMType-TMfloat :: TMType-TMdouble :: TMType-TMstring :: TMType-TMobject :: TMType-instance Enum TMType-data GenericValue-GVuint :: Word -> GenericValue-GVint :: Int -> GenericValue-GVboolean :: Bool -> GenericValue-GVenum :: Int -> GenericValue-GVflags :: Int -> GenericValue-GVfloat :: Float -> GenericValue-GVdouble :: Double -> GenericValue-GVstring :: Maybe String -> GenericValue-GVobject :: GObject -> GenericValue-treeStoreNew :: [TMType] -> IO TreeStore-treeStoreSetValue :: TreeStoreClass self => self -> TreeIter -> Int -> GenericValue -> IO ()-treeStoreRemove :: TreeStoreClass self => self -> TreeIter -> IO Bool-treeStoreInsert :: TreeStoreClass self => self -> Maybe TreeIter -> Int -> IO TreeIter-treeStoreInsertBefore :: TreeStoreClass self => self -> TreeIter -> IO TreeIter-treeStoreInsertAfter :: TreeStoreClass self => self -> TreeIter -> IO TreeIter-treeStorePrepend :: TreeStoreClass self => self -> Maybe TreeIter -> IO TreeIter-treeStoreAppend :: TreeStoreClass self => self -> Maybe TreeIter -> IO TreeIter-treeStoreIsAncestor :: TreeStoreClass self => self -> TreeIter -> TreeIter -> IO Bool-treeStoreIterDepth :: TreeStoreClass self => self -> TreeIter -> IO Int-treeStoreClear :: TreeStoreClass self => self -> IO ()--module Graphics.UI.Gtk.TreeList.TreeModelSort-data TreeModelSort-instance GObjectClass TreeModelSort-instance TreeModelClass TreeModelSort-instance TreeModelSortClass TreeModelSort-class GObjectClass o => TreeModelSortClass o-instance TreeModelSortClass TreeModelSort-castToTreeModelSort :: GObjectClass obj => obj -> TreeModelSort-toTreeModelSort :: TreeModelSortClass o => o -> TreeModelSort-treeModelSortNewWithModel :: TreeModelClass childModel => childModel -> IO TreeModelSort-treeModelSortGetModel :: TreeModelSortClass self => self -> IO TreeModel-treeModelSortConvertChildPathToPath :: TreeModelSortClass self => self -> TreePath -> IO TreePath-treeModelSortConvertPathToChildPath :: TreeModelSortClass self => self -> TreePath -> IO TreePath-treeModelSortConvertChildIterToIter :: TreeModelSortClass self => self -> TreeIter -> IO TreeIter-treeModelSortConvertIterToChildIter :: TreeModelSortClass self => self -> TreeIter -> IO TreeIter-treeModelSortResetDefaultSortFunc :: TreeModelSortClass self => self -> IO ()-treeModelSortClearCache :: TreeModelSortClass self => self -> IO ()-treeModelSortIterIsValid :: TreeModelSortClass self => self -> TreeIter -> IO Bool--module Graphics.UI.Gtk.Glade-class GObjectClass o => GladeXMLClass o-instance GladeXMLClass GladeXML-data GladeXML-instance GObjectClass GladeXML-instance GladeXMLClass GladeXML-xmlNew :: FilePath -> IO (Maybe GladeXML)-xmlNewWithRootAndDomain :: FilePath -> Maybe String -> Maybe String -> IO (Maybe GladeXML)-xmlGetWidget :: WidgetClass widget => GladeXML -> (GObject -> widget) -> String -> IO widget-xmlGetWidgetRaw :: GladeXML -> String -> IO (Maybe Widget)--module Graphics.UI.Gtk.Layout.Alignment-data Alignment-instance AlignmentClass Alignment-instance BinClass Alignment-instance ContainerClass Alignment-instance GObjectClass Alignment-instance ObjectClass Alignment-instance WidgetClass Alignment-class BinClass o => AlignmentClass o-instance AlignmentClass Alignment-castToAlignment :: GObjectClass obj => obj -> Alignment-toAlignment :: AlignmentClass o => o -> Alignment-alignmentNew :: Float -> Float -> Float -> Float -> IO Alignment-alignmentSet :: AlignmentClass self => self -> Float -> Float -> Float -> Float -> IO ()-alignmentSetPadding :: AlignmentClass self => self -> Int -> Int -> Int -> Int -> IO ()-alignmentGetPadding :: AlignmentClass self => self -> IO (Int, Int, Int, Int)-alignmentXAlign :: AlignmentClass self => Attr self Float-alignmentYAlign :: AlignmentClass self => Attr self Float-alignmentXScale :: AlignmentClass self => Attr self Float-alignmentYScale :: AlignmentClass self => Attr self Float-alignmentTopPadding :: AlignmentClass self => Attr self Int-alignmentBottomPadding :: AlignmentClass self => Attr self Int-alignmentLeftPadding :: AlignmentClass self => Attr self Int-alignmentRightPadding :: AlignmentClass self => Attr self Int--module Graphics.UI.Gtk.Layout.AspectFrame-data AspectFrame-instance AspectFrameClass AspectFrame-instance BinClass AspectFrame-instance ContainerClass AspectFrame-instance FrameClass AspectFrame-instance GObjectClass AspectFrame-instance ObjectClass AspectFrame-instance WidgetClass AspectFrame-class FrameClass o => AspectFrameClass o-instance AspectFrameClass AspectFrame-castToAspectFrame :: GObjectClass obj => obj -> AspectFrame-toAspectFrame :: AspectFrameClass o => o -> AspectFrame-aspectFrameNew :: Float -> Float -> Maybe Float -> IO AspectFrame-aspectFrameSet :: AspectFrameClass self => self -> Float -> Float -> Maybe Float -> IO ()-aspectFrameXAlign :: AspectFrameClass self => Attr self Float-aspectFrameYAlign :: AspectFrameClass self => Attr self Float-aspectFrameRatio :: AspectFrameClass self => Attr self Float-aspectFrameObeyChild :: AspectFrameClass self => Attr self Bool--module Graphics.UI.Gtk.Layout.Expander-data Expander-instance BinClass Expander-instance ContainerClass Expander-instance ExpanderClass Expander-instance GObjectClass Expander-instance ObjectClass Expander-instance WidgetClass Expander-class BinClass o => ExpanderClass o-instance ExpanderClass Expander-castToExpander :: GObjectClass obj => obj -> Expander-toExpander :: ExpanderClass o => o -> Expander-expanderNew :: String -> IO Expander-expanderNewWithMnemonic :: String -> IO Expander-expanderSetExpanded :: Expander -> Bool -> IO ()-expanderGetExpanded :: Expander -> IO Bool-expanderSetSpacing :: Expander -> Int -> IO ()-expanderGetSpacing :: Expander -> IO Int-expanderSetLabel :: Expander -> String -> IO ()-expanderGetLabel :: Expander -> IO String-expanderSetUseUnderline :: Expander -> Bool -> IO ()-expanderGetUseUnderline :: Expander -> IO Bool-expanderSetUseMarkup :: Expander -> Bool -> IO ()-expanderGetUseMarkup :: Expander -> IO Bool-expanderSetLabelWidget :: WidgetClass labelWidget => Expander -> labelWidget -> IO ()-expanderGetLabelWidget :: Expander -> IO Widget-expanderExpanded :: Attr Expander Bool-expanderLabel :: Attr Expander String-expanderUseUnderline :: Attr Expander Bool-expanderUseMarkup :: Attr Expander Bool-expanderSpacing :: Attr Expander Int-expanderLabelWidget :: WidgetClass labelWidget => ReadWriteAttr Expander Widget labelWidget-onActivate :: Expander -> IO () -> IO (ConnectId Expander)-afterActivate :: Expander -> IO () -> IO (ConnectId Expander)--module Graphics.UI.Gtk.Layout.HBox-data HBox-instance BoxClass HBox-instance ContainerClass HBox-instance GObjectClass HBox-instance HBoxClass HBox-instance ObjectClass HBox-instance WidgetClass HBox-class BoxClass o => HBoxClass o-instance HBoxClass Combo-instance HBoxClass FileChooserButton-instance HBoxClass HBox-instance HBoxClass Statusbar-castToHBox :: GObjectClass obj => obj -> HBox-toHBox :: HBoxClass o => o -> HBox-hBoxNew :: Bool -> Int -> IO HBox--module Graphics.UI.Gtk.Layout.HButtonBox-data HButtonBox-instance BoxClass HButtonBox-instance ButtonBoxClass HButtonBox-instance ContainerClass HButtonBox-instance GObjectClass HButtonBox-instance HButtonBoxClass HButtonBox-instance ObjectClass HButtonBox-instance WidgetClass HButtonBox-class ButtonBoxClass o => HButtonBoxClass o-instance HButtonBoxClass HButtonBox-castToHButtonBox :: GObjectClass obj => obj -> HButtonBox-toHButtonBox :: HButtonBoxClass o => o -> HButtonBox-hButtonBoxNew :: IO HButtonBox--module Graphics.UI.Gtk.Layout.HPaned-data HPaned-instance ContainerClass HPaned-instance GObjectClass HPaned-instance HPanedClass HPaned-instance ObjectClass HPaned-instance PanedClass HPaned-instance WidgetClass HPaned-class PanedClass o => HPanedClass o-instance HPanedClass HPaned-castToHPaned :: GObjectClass obj => obj -> HPaned-toHPaned :: HPanedClass o => o -> HPaned-hPanedNew :: IO HPaned--module Graphics.UI.Gtk.Layout.VBox-data VBox-instance BoxClass VBox-instance ContainerClass VBox-instance GObjectClass VBox-instance ObjectClass VBox-instance VBoxClass VBox-instance WidgetClass VBox-class BoxClass o => VBoxClass o-instance VBoxClass ColorSelection-instance VBoxClass FileChooserWidget-instance VBoxClass FontSelection-instance VBoxClass GammaCurve-instance VBoxClass VBox-castToVBox :: GObjectClass obj => obj -> VBox-toVBox :: VBoxClass o => o -> VBox-vBoxNew :: Bool -> Int -> IO VBox--module Graphics.UI.Gtk.Layout.VButtonBox-data VButtonBox-instance BoxClass VButtonBox-instance ButtonBoxClass VButtonBox-instance ContainerClass VButtonBox-instance GObjectClass VButtonBox-instance ObjectClass VButtonBox-instance VButtonBoxClass VButtonBox-instance WidgetClass VButtonBox-class ButtonBoxClass o => VButtonBoxClass o-instance VButtonBoxClass VButtonBox-castToVButtonBox :: GObjectClass obj => obj -> VButtonBox-toVButtonBox :: VButtonBoxClass o => o -> VButtonBox-vButtonBoxNew :: IO VButtonBox--module Graphics.UI.Gtk.Layout.VPaned-data VPaned-instance ContainerClass VPaned-instance GObjectClass VPaned-instance ObjectClass VPaned-instance PanedClass VPaned-instance VPanedClass VPaned-instance WidgetClass VPaned-class PanedClass o => VPanedClass o-instance VPanedClass VPaned-castToVPaned :: GObjectClass obj => obj -> VPaned-toVPaned :: VPanedClass o => o -> VPaned-vPanedNew :: IO VPaned--module Graphics.UI.Gtk.MenuComboToolbar.CheckMenuItem-data CheckMenuItem-instance BinClass CheckMenuItem-instance CheckMenuItemClass CheckMenuItem-instance ContainerClass CheckMenuItem-instance GObjectClass CheckMenuItem-instance ItemClass CheckMenuItem-instance MenuItemClass CheckMenuItem-instance ObjectClass CheckMenuItem-instance WidgetClass CheckMenuItem-class MenuItemClass o => CheckMenuItemClass o-instance CheckMenuItemClass CheckMenuItem-instance CheckMenuItemClass RadioMenuItem-castToCheckMenuItem :: GObjectClass obj => obj -> CheckMenuItem-toCheckMenuItem :: CheckMenuItemClass o => o -> CheckMenuItem-checkMenuItemNew :: IO CheckMenuItem-checkMenuItemNewWithLabel :: String -> IO CheckMenuItem-checkMenuItemNewWithMnemonic :: String -> IO CheckMenuItem-checkMenuItemSetActive :: CheckMenuItemClass self => self -> Bool -> IO ()-checkMenuItemGetActive :: CheckMenuItemClass self => self -> IO Bool-checkMenuItemToggled :: CheckMenuItemClass self => self -> IO ()-checkMenuItemSetInconsistent :: CheckMenuItemClass self => self -> Bool -> IO ()-checkMenuItemGetInconsistent :: CheckMenuItemClass self => self -> IO Bool-checkMenuItemGetDrawAsRadio :: CheckMenuItemClass self => self -> IO Bool-checkMenuItemSetDrawAsRadio :: CheckMenuItemClass self => self -> Bool -> IO ()-checkMenuItemActive :: CheckMenuItemClass self => Attr self Bool-checkMenuItemInconsistent :: CheckMenuItemClass self => Attr self Bool-checkMenuItemDrawAsRadio :: CheckMenuItemClass self => Attr self Bool--module Graphics.UI.Gtk.MenuComboToolbar.ComboBox-data ComboBox-instance BinClass ComboBox-instance ComboBoxClass ComboBox-instance ContainerClass ComboBox-instance GObjectClass ComboBox-instance ObjectClass ComboBox-instance WidgetClass ComboBox-class BinClass o => ComboBoxClass o-instance ComboBoxClass ComboBox-instance ComboBoxClass ComboBoxEntry-castToComboBox :: GObjectClass obj => obj -> ComboBox-toComboBox :: ComboBoxClass o => o -> ComboBox-comboBoxNew :: IO ComboBox-comboBoxNewText :: IO ComboBox-comboBoxNewWithModel :: TreeModelClass model => model -> IO ComboBox-comboBoxSetWrapWidth :: ComboBoxClass self => self -> Int -> IO ()-comboBoxSetRowSpanColumn :: ComboBoxClass self => self -> Int -> IO ()-comboBoxSetColumnSpanColumn :: ComboBoxClass self => self -> Int -> IO ()-comboBoxGetActive :: ComboBoxClass self => self -> IO (Maybe Int)-comboBoxSetActive :: ComboBoxClass self => self -> Int -> IO ()-comboBoxGetActiveIter :: ComboBoxClass self => self -> IO (Maybe TreeIter)-comboBoxSetActiveIter :: ComboBoxClass self => self -> TreeIter -> IO ()-comboBoxGetModel :: ComboBoxClass self => self -> IO (Maybe TreeModel)-comboBoxSetModel :: (ComboBoxClass self, TreeModelClass model) => self -> Maybe model -> IO ()-comboBoxAppendText :: ComboBoxClass self => self -> String -> IO ()-comboBoxInsertText :: ComboBoxClass self => self -> Int -> String -> IO ()-comboBoxPrependText :: ComboBoxClass self => self -> String -> IO ()-comboBoxRemoveText :: ComboBoxClass self => self -> Int -> IO ()-comboBoxPopup :: ComboBoxClass self => self -> IO ()-comboBoxPopdown :: ComboBoxClass self => self -> IO ()-comboBoxGetWrapWidth :: ComboBoxClass self => self -> IO Int-comboBoxGetRowSpanColumn :: ComboBoxClass self => self -> IO Int-comboBoxGetColumnSpanColumn :: ComboBoxClass self => self -> IO Int-comboBoxGetActiveText :: ComboBoxClass self => self -> IO (Maybe String)-comboBoxSetAddTearoffs :: ComboBoxClass self => self -> Bool -> IO ()-comboBoxGetAddTearoffs :: ComboBoxClass self => self -> IO Bool-comboBoxSetFocusOnClick :: ComboBoxClass self => self -> Bool -> IO ()-comboBoxGetFocusOnClick :: ComboBoxClass self => self -> IO Bool-comboBoxModel :: (ComboBoxClass self, TreeModelClass model) => ReadWriteAttr self (Maybe TreeModel) (Maybe model)-comboBoxWrapWidth :: ComboBoxClass self => Attr self Int-comboBoxRowSpanColumn :: ComboBoxClass self => Attr self Int-comboBoxColumnSpanColumn :: ComboBoxClass self => Attr self Int-comboBoxAddTearoffs :: ComboBoxClass self => Attr self Bool-comboBoxHasFrame :: ComboBoxClass self => Attr self Bool-comboBoxFocusOnClick :: ComboBoxClass self => Attr self Bool-onChanged :: ComboBoxClass self => self -> IO () -> IO (ConnectId self)-afterChanged :: ComboBoxClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.MenuComboToolbar.ComboBoxEntry-data ComboBoxEntry-instance BinClass ComboBoxEntry-instance ComboBoxClass ComboBoxEntry-instance ComboBoxEntryClass ComboBoxEntry-instance ContainerClass ComboBoxEntry-instance GObjectClass ComboBoxEntry-instance ObjectClass ComboBoxEntry-instance WidgetClass ComboBoxEntry-class ComboBoxClass o => ComboBoxEntryClass o-instance ComboBoxEntryClass ComboBoxEntry-castToComboBoxEntry :: GObjectClass obj => obj -> ComboBoxEntry-toComboBoxEntry :: ComboBoxEntryClass o => o -> ComboBoxEntry-comboBoxEntryNew :: IO ComboBoxEntry-comboBoxEntryNewWithModel :: TreeModelClass model => model -> Int -> IO ComboBoxEntry-comboBoxEntryNewText :: IO ComboBoxEntry-comboBoxEntrySetTextColumn :: ComboBoxEntryClass self => self -> Int -> IO ()-comboBoxEntryGetTextColumn :: ComboBoxEntryClass self => self -> IO Int-comboBoxEntryTextColumn :: ComboBoxEntryClass self => Attr self Int--module Graphics.UI.Gtk.MenuComboToolbar.ImageMenuItem-data ImageMenuItem-instance BinClass ImageMenuItem-instance ContainerClass ImageMenuItem-instance GObjectClass ImageMenuItem-instance ImageMenuItemClass ImageMenuItem-instance ItemClass ImageMenuItem-instance MenuItemClass ImageMenuItem-instance ObjectClass ImageMenuItem-instance WidgetClass ImageMenuItem-class MenuItemClass o => ImageMenuItemClass o-instance ImageMenuItemClass ImageMenuItem-castToImageMenuItem :: GObjectClass obj => obj -> ImageMenuItem-toImageMenuItem :: ImageMenuItemClass o => o -> ImageMenuItem-imageMenuItemNew :: IO ImageMenuItem-imageMenuItemNewFromStock :: String -> IO ImageMenuItem-imageMenuItemNewWithLabel :: String -> IO ImageMenuItem-imageMenuItemNewWithMnemonic :: String -> IO ImageMenuItem-imageMenuItemSetImage :: (ImageMenuItemClass self, WidgetClass image) => self -> image -> IO ()-imageMenuItemGetImage :: ImageMenuItemClass self => self -> IO (Maybe Widget)-imageMenuItemImage :: (ImageMenuItemClass self, WidgetClass image) => ReadWriteAttr self (Maybe Widget) image--module Graphics.UI.Gtk.MenuComboToolbar.MenuBar-data MenuBar-instance ContainerClass MenuBar-instance GObjectClass MenuBar-instance MenuBarClass MenuBar-instance MenuShellClass MenuBar-instance ObjectClass MenuBar-instance WidgetClass MenuBar-class MenuShellClass o => MenuBarClass o-instance MenuBarClass MenuBar-castToMenuBar :: GObjectClass obj => obj -> MenuBar-toMenuBar :: MenuBarClass o => o -> MenuBar-data PackDirection-PackDirectionLtr :: PackDirection-PackDirectionRtl :: PackDirection-PackDirectionTtb :: PackDirection-PackDirectionBtt :: PackDirection-instance Enum PackDirection-menuBarNew :: IO MenuBar-menuBarSetPackDirection :: MenuBarClass self => self -> PackDirection -> IO ()-menuBarGetPackDirection :: MenuBarClass self => self -> IO PackDirection-menuBarSetChildPackDirection :: MenuBarClass self => self -> PackDirection -> IO ()-menuBarGetChildPackDirection :: MenuBarClass self => self -> IO PackDirection-menuBarPackDirection :: MenuBarClass self => Attr self PackDirection-menuBarChildPackDirection :: MenuBarClass self => Attr self PackDirection--module Graphics.UI.Gtk.MenuComboToolbar.MenuItem-data MenuItem-instance BinClass MenuItem-instance ContainerClass MenuItem-instance GObjectClass MenuItem-instance ItemClass MenuItem-instance MenuItemClass MenuItem-instance ObjectClass MenuItem-instance WidgetClass MenuItem-class ItemClass o => MenuItemClass o-instance MenuItemClass CheckMenuItem-instance MenuItemClass ImageMenuItem-instance MenuItemClass MenuItem-instance MenuItemClass RadioMenuItem-instance MenuItemClass SeparatorMenuItem-instance MenuItemClass TearoffMenuItem-castToMenuItem :: GObjectClass obj => obj -> MenuItem-toMenuItem :: MenuItemClass o => o -> MenuItem-menuItemNew :: IO MenuItem-menuItemNewWithLabel :: String -> IO MenuItem-menuItemNewWithMnemonic :: String -> IO MenuItem-menuItemSetSubmenu :: (MenuItemClass self, MenuClass submenu) => self -> submenu -> IO ()-menuItemGetSubmenu :: MenuItemClass self => self -> IO (Maybe Widget)-menuItemRemoveSubmenu :: MenuItemClass self => self -> IO ()-menuItemSelect :: MenuItemClass self => self -> IO ()-menuItemDeselect :: MenuItemClass self => self -> IO ()-menuItemActivate :: MenuItemClass self => self -> IO ()-menuItemSetRightJustified :: MenuItemClass self => self -> Bool -> IO ()-menuItemGetRightJustified :: MenuItemClass self => self -> IO Bool-menuItemSetAccelPath :: MenuItemClass self => self -> Maybe String -> IO ()-menuItemSubmenu :: (MenuItemClass self, MenuClass submenu) => ReadWriteAttr self (Maybe Widget) submenu-menuItemRightJustified :: MenuItemClass self => Attr self Bool-onActivateItem :: MenuItemClass self => self -> IO () -> IO (ConnectId self)-afterActivateItem :: MenuItemClass self => self -> IO () -> IO (ConnectId self)-onActivateLeaf :: MenuItemClass self => self -> IO () -> IO (ConnectId self)-afterActivateLeaf :: MenuItemClass self => self -> IO () -> IO (ConnectId self)-onSelect :: ItemClass i => i -> IO () -> IO (ConnectId i)-afterSelect :: ItemClass i => i -> IO () -> IO (ConnectId i)-onDeselect :: ItemClass i => i -> IO () -> IO (ConnectId i)-afterDeselect :: ItemClass i => i -> IO () -> IO (ConnectId i)-onToggle :: ItemClass i => i -> IO () -> IO (ConnectId i)-afterToggle :: ItemClass i => i -> IO () -> IO (ConnectId i)--module Graphics.UI.Gtk.MenuComboToolbar.MenuShell-data MenuShell-instance ContainerClass MenuShell-instance GObjectClass MenuShell-instance MenuShellClass MenuShell-instance ObjectClass MenuShell-instance WidgetClass MenuShell-class ContainerClass o => MenuShellClass o-instance MenuShellClass Menu-instance MenuShellClass MenuBar-instance MenuShellClass MenuShell-castToMenuShell :: GObjectClass obj => obj -> MenuShell-toMenuShell :: MenuShellClass o => o -> MenuShell-menuShellAppend :: (MenuShellClass self, MenuItemClass child) => self -> child -> IO ()-menuShellPrepend :: (MenuShellClass self, MenuItemClass child) => self -> child -> IO ()-menuShellInsert :: (MenuShellClass self, MenuItemClass child) => self -> child -> Int -> IO ()-menuShellDeactivate :: MenuShellClass self => self -> IO ()-menuShellActivateItem :: (MenuShellClass self, MenuItemClass menuItem) => self -> menuItem -> Bool -> IO ()-menuShellSelectItem :: (MenuShellClass self, MenuItemClass menuItem) => self -> menuItem -> IO ()-menuShellDeselect :: MenuShellClass self => self -> IO ()-menuShellSelectFirst :: MenuShellClass self => self -> Bool -> IO ()-menuShellCancel :: MenuShellClass self => self -> IO ()-menuShellSetTakeFocus :: MenuShellClass self => self -> Bool -> IO ()-menuShellGetTakeFocus :: MenuShellClass self => self -> IO Bool-menuShellTakeFocus :: MenuShellClass self => Attr self Bool-onActivateCurrent :: MenuShellClass self => self -> (Bool -> IO ()) -> IO (ConnectId self)-afterActivateCurrent :: MenuShellClass self => self -> (Bool -> IO ()) -> IO (ConnectId self)-onCancel :: MenuShellClass self => self -> IO () -> IO (ConnectId self)-afterCancel :: MenuShellClass self => self -> IO () -> IO (ConnectId self)-onDeactivated :: MenuShellClass self => self -> IO () -> IO (ConnectId self)-afterDeactivated :: MenuShellClass self => self -> IO () -> IO (ConnectId self)-data MenuDirectionType-MenuDirParent :: MenuDirectionType-MenuDirChild :: MenuDirectionType-MenuDirNext :: MenuDirectionType-MenuDirPrev :: MenuDirectionType-instance Enum MenuDirectionType-instance Eq MenuDirectionType-onMoveCurrent :: MenuShellClass self => self -> (MenuDirectionType -> IO ()) -> IO (ConnectId self)-afterMoveCurrent :: MenuShellClass self => self -> (MenuDirectionType -> IO ()) -> IO (ConnectId self)-onSelectionDone :: MenuShellClass self => self -> IO () -> IO (ConnectId self)-afterSelectionDone :: MenuShellClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.MenuComboToolbar.MenuToolButton-data MenuToolButton-instance BinClass MenuToolButton-instance ContainerClass MenuToolButton-instance GObjectClass MenuToolButton-instance MenuToolButtonClass MenuToolButton-instance ObjectClass MenuToolButton-instance ToolItemClass MenuToolButton-instance WidgetClass MenuToolButton-class ToolItemClass o => MenuToolButtonClass o-instance MenuToolButtonClass MenuToolButton-castToMenuToolButton :: GObjectClass obj => obj -> MenuToolButton-toMenuToolButton :: MenuToolButtonClass o => o -> MenuToolButton-menuToolButtonNew :: WidgetClass iconWidget => Maybe iconWidget -> Maybe String -> IO MenuToolButton-menuToolButtonNewFromStock :: String -> IO MenuToolButton-menuToolButtonSetMenu :: (MenuToolButtonClass self, MenuClass menu) => self -> Maybe menu -> IO ()-menuToolButtonGetMenu :: MenuToolButtonClass self => self -> IO (Maybe Menu)-menuToolButtonSetArrowTooltip :: MenuToolButtonClass self => self -> Tooltips -> String -> String -> IO ()-menuToolButtonMenu :: (MenuToolButtonClass self, MenuClass menu) => ReadWriteAttr self (Maybe Menu) (Maybe menu)-onShowMenu :: MenuToolButtonClass self => self -> IO () -> IO (ConnectId self)-afterShowMenu :: MenuToolButtonClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.MenuComboToolbar.OptionMenu-data OptionMenu-instance BinClass OptionMenu-instance ButtonClass OptionMenu-instance ContainerClass OptionMenu-instance GObjectClass OptionMenu-instance ObjectClass OptionMenu-instance OptionMenuClass OptionMenu-instance WidgetClass OptionMenu-class ButtonClass o => OptionMenuClass o-instance OptionMenuClass OptionMenu-castToOptionMenu :: GObjectClass obj => obj -> OptionMenu-toOptionMenu :: OptionMenuClass o => o -> OptionMenu-optionMenuNew :: IO OptionMenu-optionMenuGetMenu :: OptionMenuClass self => self -> IO Menu-optionMenuSetMenu :: (OptionMenuClass self, MenuClass menu) => self -> menu -> IO ()-optionMenuRemoveMenu :: OptionMenuClass self => self -> IO ()-optionMenuSetHistory :: OptionMenuClass self => self -> Int -> IO ()-optionMenuGetHistory :: OptionMenuClass self => self -> IO Int-optionMenuMenu :: (OptionMenuClass self, MenuClass menu) => ReadWriteAttr self Menu menu-onOMChanged :: OptionMenuClass self => self -> IO () -> IO (ConnectId self)-afterOMChanged :: OptionMenuClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.MenuComboToolbar.RadioMenuItem-data RadioMenuItem-instance BinClass RadioMenuItem-instance CheckMenuItemClass RadioMenuItem-instance ContainerClass RadioMenuItem-instance GObjectClass RadioMenuItem-instance ItemClass RadioMenuItem-instance MenuItemClass RadioMenuItem-instance ObjectClass RadioMenuItem-instance RadioMenuItemClass RadioMenuItem-instance WidgetClass RadioMenuItem-class CheckMenuItemClass o => RadioMenuItemClass o-instance RadioMenuItemClass RadioMenuItem-castToRadioMenuItem :: GObjectClass obj => obj -> RadioMenuItem-toRadioMenuItem :: RadioMenuItemClass o => o -> RadioMenuItem-radioMenuItemNew :: IO RadioMenuItem-radioMenuItemNewWithLabel :: String -> IO RadioMenuItem-radioMenuItemNewWithMnemonic :: String -> IO RadioMenuItem-radioMenuItemNewFromWidget :: RadioMenuItem -> IO RadioMenuItem-radioMenuItemNewWithLabelFromWidget :: RadioMenuItem -> String -> IO RadioMenuItem-radioMenuItemNewWithMnemonicFromWidget :: RadioMenuItem -> String -> IO RadioMenuItem--module Graphics.UI.Gtk.MenuComboToolbar.RadioToolButton-data RadioToolButton-instance BinClass RadioToolButton-instance ContainerClass RadioToolButton-instance GObjectClass RadioToolButton-instance ObjectClass RadioToolButton-instance RadioToolButtonClass RadioToolButton-instance ToggleToolButtonClass RadioToolButton-instance ToolButtonClass RadioToolButton-instance ToolItemClass RadioToolButton-instance WidgetClass RadioToolButton-class ToggleToolButtonClass o => RadioToolButtonClass o-instance RadioToolButtonClass RadioToolButton-castToRadioToolButton :: GObjectClass obj => obj -> RadioToolButton-toRadioToolButton :: RadioToolButtonClass o => o -> RadioToolButton-radioToolButtonNew :: IO RadioToolButton-radioToolButtonNewFromStock :: String -> IO RadioToolButton-radioToolButtonNewFromWidget :: RadioToolButtonClass groupMember => groupMember -> IO RadioToolButton-radioToolButtonNewWithStockFromWidget :: RadioToolButtonClass groupMember => groupMember -> String -> IO RadioToolButton-radioToolButtonGetGroup :: RadioToolButtonClass self => self -> IO [RadioToolButton]-radioToolButtonSetGroup :: RadioToolButtonClass self => self -> RadioToolButton -> IO ()-radioToolButtonGroup :: RadioToolButtonClass self => ReadWriteAttr self [RadioToolButton] RadioToolButton--module Graphics.UI.Gtk.MenuComboToolbar.SeparatorMenuItem-data SeparatorMenuItem-instance BinClass SeparatorMenuItem-instance ContainerClass SeparatorMenuItem-instance GObjectClass SeparatorMenuItem-instance ItemClass SeparatorMenuItem-instance MenuItemClass SeparatorMenuItem-instance ObjectClass SeparatorMenuItem-instance SeparatorMenuItemClass SeparatorMenuItem-instance WidgetClass SeparatorMenuItem-class MenuItemClass o => SeparatorMenuItemClass o-instance SeparatorMenuItemClass SeparatorMenuItem-castToSeparatorMenuItem :: GObjectClass obj => obj -> SeparatorMenuItem-toSeparatorMenuItem :: SeparatorMenuItemClass o => o -> SeparatorMenuItem-separatorMenuItemNew :: IO SeparatorMenuItem--module Graphics.UI.Gtk.MenuComboToolbar.SeparatorToolItem-data SeparatorToolItem-instance BinClass SeparatorToolItem-instance ContainerClass SeparatorToolItem-instance GObjectClass SeparatorToolItem-instance ObjectClass SeparatorToolItem-instance SeparatorToolItemClass SeparatorToolItem-instance ToolItemClass SeparatorToolItem-instance WidgetClass SeparatorToolItem-class ToolItemClass o => SeparatorToolItemClass o-instance SeparatorToolItemClass SeparatorToolItem-castToSeparatorToolItem :: GObjectClass obj => obj -> SeparatorToolItem-toSeparatorToolItem :: SeparatorToolItemClass o => o -> SeparatorToolItem-separatorToolItemNew :: IO SeparatorToolItem-separatorToolItemSetDraw :: SeparatorToolItemClass self => self -> Bool -> IO ()-separatorToolItemGetDraw :: SeparatorToolItemClass self => self -> IO Bool-separatorToolItemDraw :: SeparatorToolItemClass self => Attr self Bool--module Graphics.UI.Gtk.MenuComboToolbar.TearoffMenuItem-data TearoffMenuItem-instance BinClass TearoffMenuItem-instance ContainerClass TearoffMenuItem-instance GObjectClass TearoffMenuItem-instance ItemClass TearoffMenuItem-instance MenuItemClass TearoffMenuItem-instance ObjectClass TearoffMenuItem-instance TearoffMenuItemClass TearoffMenuItem-instance WidgetClass TearoffMenuItem-class MenuItemClass o => TearoffMenuItemClass o-instance TearoffMenuItemClass TearoffMenuItem-castToTearoffMenuItem :: GObjectClass obj => obj -> TearoffMenuItem-toTearoffMenuItem :: TearoffMenuItemClass o => o -> TearoffMenuItem-tearoffMenuItemNew :: IO TearoffMenuItem--module Graphics.UI.Gtk.MenuComboToolbar.ToggleToolButton-data ToggleToolButton-instance BinClass ToggleToolButton-instance ContainerClass ToggleToolButton-instance GObjectClass ToggleToolButton-instance ObjectClass ToggleToolButton-instance ToggleToolButtonClass ToggleToolButton-instance ToolButtonClass ToggleToolButton-instance ToolItemClass ToggleToolButton-instance WidgetClass ToggleToolButton-class ToolButtonClass o => ToggleToolButtonClass o-instance ToggleToolButtonClass RadioToolButton-instance ToggleToolButtonClass ToggleToolButton-castToToggleToolButton :: GObjectClass obj => obj -> ToggleToolButton-toToggleToolButton :: ToggleToolButtonClass o => o -> ToggleToolButton-toggleToolButtonNew :: IO ToggleToolButton-toggleToolButtonNewFromStock :: String -> IO ToggleToolButton-toggleToolButtonSetActive :: ToggleToolButtonClass self => self -> Bool -> IO ()-toggleToolButtonGetActive :: ToggleToolButtonClass self => self -> IO Bool-toggleToolButtonActive :: ToggleToolButtonClass self => Attr self Bool-onToolButtonToggled :: ToggleToolButtonClass self => self -> IO () -> IO (ConnectId self)-afterToolButtonToggled :: ToggleToolButtonClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.MenuComboToolbar.ToolButton-data ToolButton-instance BinClass ToolButton-instance ContainerClass ToolButton-instance GObjectClass ToolButton-instance ObjectClass ToolButton-instance ToolButtonClass ToolButton-instance ToolItemClass ToolButton-instance WidgetClass ToolButton-class ToolItemClass o => ToolButtonClass o-instance ToolButtonClass RadioToolButton-instance ToolButtonClass ToggleToolButton-instance ToolButtonClass ToolButton-castToToolButton :: GObjectClass obj => obj -> ToolButton-toToolButton :: ToolButtonClass o => o -> ToolButton-toolButtonNew :: WidgetClass iconWidget => Maybe iconWidget -> Maybe String -> IO ToolButton-toolButtonNewFromStock :: String -> IO ToolButton-toolButtonSetLabel :: ToolButtonClass self => self -> Maybe String -> IO ()-toolButtonGetLabel :: ToolButtonClass self => self -> IO (Maybe String)-toolButtonSetUseUnderline :: ToolButtonClass self => self -> Bool -> IO ()-toolButtonGetUseUnderline :: ToolButtonClass self => self -> IO Bool-toolButtonSetStockId :: ToolButtonClass self => self -> Maybe String -> IO ()-toolButtonGetStockId :: ToolButtonClass self => self -> IO (Maybe String)-toolButtonSetIconWidget :: (ToolButtonClass self, WidgetClass iconWidget) => self -> Maybe iconWidget -> IO ()-toolButtonGetIconWidget :: ToolButtonClass self => self -> IO (Maybe Widget)-toolButtonSetLabelWidget :: (ToolButtonClass self, WidgetClass labelWidget) => self -> Maybe labelWidget -> IO ()-toolButtonGetLabelWidget :: ToolButtonClass self => self -> IO (Maybe Widget)-toolButtonSetIconName :: ToolButtonClass self => self -> String -> IO ()-toolButtonGetIconName :: ToolButtonClass self => self -> IO String-toolButtonLabel :: ToolButtonClass self => Attr self (Maybe String)-toolButtonUseUnderline :: ToolButtonClass self => Attr self Bool-toolButtonLabelWidget :: (ToolButtonClass self, WidgetClass labelWidget) => ReadWriteAttr self (Maybe Widget) (Maybe labelWidget)-toolButtonStockId :: ToolButtonClass self => ReadWriteAttr self (Maybe String) (Maybe String)-toolButtonIconName :: ToolButtonClass self => Attr self String-toolButtonIconWidget :: (ToolButtonClass self, WidgetClass iconWidget) => ReadWriteAttr self (Maybe Widget) (Maybe iconWidget)-onToolButtonClicked :: ToolButtonClass self => self -> IO () -> IO (ConnectId self)-afterToolButtonClicked :: ToolButtonClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.MenuComboToolbar.ToolItem-data ToolItem-instance BinClass ToolItem-instance ContainerClass ToolItem-instance GObjectClass ToolItem-instance ObjectClass ToolItem-instance ToolItemClass ToolItem-instance WidgetClass ToolItem-class BinClass o => ToolItemClass o-instance ToolItemClass MenuToolButton-instance ToolItemClass RadioToolButton-instance ToolItemClass SeparatorToolItem-instance ToolItemClass ToggleToolButton-instance ToolItemClass ToolButton-instance ToolItemClass ToolItem-castToToolItem :: GObjectClass obj => obj -> ToolItem-toToolItem :: ToolItemClass o => o -> ToolItem-toolItemNew :: IO ToolItem-toolItemSetHomogeneous :: ToolItemClass self => self -> Bool -> IO ()-toolItemGetHomogeneous :: ToolItemClass self => self -> IO Bool-toolItemSetExpand :: ToolItemClass self => self -> Bool -> IO ()-toolItemGetExpand :: ToolItemClass self => self -> IO Bool-toolItemSetTooltip :: ToolItemClass self => self -> Tooltips -> String -> String -> IO ()-toolItemSetUseDragWindow :: ToolItemClass self => self -> Bool -> IO ()-toolItemGetUseDragWindow :: ToolItemClass self => self -> IO Bool-toolItemSetVisibleHorizontal :: ToolItemClass self => self -> Bool -> IO ()-toolItemGetVisibleHorizontal :: ToolItemClass self => self -> IO Bool-toolItemSetVisibleVertical :: ToolItemClass self => self -> Bool -> IO ()-toolItemGetVisibleVertical :: ToolItemClass self => self -> IO Bool-toolItemSetIsImportant :: ToolItemClass self => self -> Bool -> IO ()-toolItemGetIsImportant :: ToolItemClass self => self -> IO Bool-type IconSize = Int-toolItemGetIconSize :: ToolItemClass self => self -> IO IconSize-data Orientation-OrientationHorizontal :: Orientation-OrientationVertical :: Orientation-instance Enum Orientation-instance Eq Orientation-toolItemGetOrientation :: ToolItemClass self => self -> IO Orientation-data ToolbarStyle-ToolbarIcons :: ToolbarStyle-ToolbarText :: ToolbarStyle-ToolbarBoth :: ToolbarStyle-ToolbarBothHoriz :: ToolbarStyle-instance Enum ToolbarStyle-instance Eq ToolbarStyle-toolItemGetToolbarStyle :: ToolItemClass self => self -> IO ToolbarStyle-data ReliefStyle-ReliefNormal :: ReliefStyle-ReliefHalf :: ReliefStyle-ReliefNone :: ReliefStyle-instance Enum ReliefStyle-instance Eq ReliefStyle-toolItemGetReliefStyle :: ToolItemClass self => self -> IO ReliefStyle-toolItemRetrieveProxyMenuItem :: ToolItemClass self => self -> IO (Maybe Widget)-toolItemGetProxyMenuItem :: ToolItemClass self => self -> String -> IO (Maybe Widget)-toolItemSetProxyMenuItem :: (ToolItemClass self, MenuItemClass menuItem) => self -> String -> menuItem -> IO ()-toolItemVisibleHorizontal :: ToolItemClass self => Attr self Bool-toolItemVisibleVertical :: ToolItemClass self => Attr self Bool-toolItemIsImportant :: ToolItemClass self => Attr self Bool-toolItemExpand :: ToolItemClass self => Attr self Bool-toolItemHomogeneous :: ToolItemClass self => Attr self Bool-toolItemUseDragWindow :: ToolItemClass self => Attr self Bool--module Graphics.UI.Gtk.Misc.Adjustment-data Adjustment-instance AdjustmentClass Adjustment-instance GObjectClass Adjustment-instance ObjectClass Adjustment-class ObjectClass o => AdjustmentClass o-instance AdjustmentClass Adjustment-castToAdjustment :: GObjectClass obj => obj -> Adjustment-toAdjustment :: AdjustmentClass o => o -> Adjustment-adjustmentNew :: Double -> Double -> Double -> Double -> Double -> Double -> IO Adjustment-adjustmentSetLower :: Adjustment -> Double -> IO ()-adjustmentGetLower :: Adjustment -> IO Double-adjustmentSetPageIncrement :: Adjustment -> Double -> IO ()-adjustmentGetPageIncrement :: Adjustment -> IO Double-adjustmentSetPageSize :: Adjustment -> Double -> IO ()-adjustmentGetPageSize :: Adjustment -> IO Double-adjustmentSetStepIncrement :: Adjustment -> Double -> IO ()-adjustmentGetStepIncrement :: Adjustment -> IO Double-adjustmentSetUpper :: Adjustment -> Double -> IO ()-adjustmentGetUpper :: Adjustment -> IO Double-adjustmentSetValue :: Adjustment -> Double -> IO ()-adjustmentGetValue :: Adjustment -> IO Double-adjustmentClampPage :: Adjustment -> Double -> Double -> IO ()-adjustmentValue :: Attr Adjustment Double-adjustmentLower :: Attr Adjustment Double-adjustmentUpper :: Attr Adjustment Double-adjustmentStepIncrement :: Attr Adjustment Double-adjustmentPageIncrement :: Attr Adjustment Double-adjustmentPageSize :: Attr Adjustment Double-onAdjChanged :: Adjustment -> IO () -> IO (ConnectId Adjustment)-afterAdjChanged :: Adjustment -> IO () -> IO (ConnectId Adjustment)-onValueChanged :: Adjustment -> IO () -> IO (ConnectId Adjustment)-afterValueChanged :: Adjustment -> IO () -> IO (ConnectId Adjustment)--module Graphics.UI.Gtk.Misc.Arrow-data Arrow-instance ArrowClass Arrow-instance GObjectClass Arrow-instance MiscClass Arrow-instance ObjectClass Arrow-instance WidgetClass Arrow-class MiscClass o => ArrowClass o-instance ArrowClass Arrow-castToArrow :: GObjectClass obj => obj -> Arrow-toArrow :: ArrowClass o => o -> Arrow-data ArrowType-ArrowUp :: ArrowType-ArrowDown :: ArrowType-ArrowLeft :: ArrowType-ArrowRight :: ArrowType-instance Enum ArrowType-instance Eq ArrowType-data ShadowType-ShadowNone :: ShadowType-ShadowIn :: ShadowType-ShadowOut :: ShadowType-ShadowEtchedIn :: ShadowType-ShadowEtchedOut :: ShadowType-instance Enum ShadowType-instance Eq ShadowType-arrowNew :: ArrowType -> ShadowType -> IO Arrow-arrowSet :: ArrowClass self => self -> ArrowType -> ShadowType -> IO ()-arrowArrowType :: ArrowClass self => Attr self ArrowType-arrowShadowType :: ArrowClass self => Attr self ShadowType--module Graphics.UI.Gtk.Misc.Calendar-data Calendar-instance CalendarClass Calendar-instance GObjectClass Calendar-instance ObjectClass Calendar-instance WidgetClass Calendar-class WidgetClass o => CalendarClass o-instance CalendarClass Calendar-castToCalendar :: GObjectClass obj => obj -> Calendar-toCalendar :: CalendarClass o => o -> Calendar-data CalendarDisplayOptions-CalendarShowHeading :: CalendarDisplayOptions-CalendarShowDayNames :: CalendarDisplayOptions-CalendarNoMonthChange :: CalendarDisplayOptions-CalendarShowWeekNumbers :: CalendarDisplayOptions-CalendarWeekStartMonday :: CalendarDisplayOptions-instance Bounded CalendarDisplayOptions-instance Enum CalendarDisplayOptions-instance Eq CalendarDisplayOptions-instance Flags CalendarDisplayOptions-calendarNew :: IO Calendar-calendarSelectMonth :: CalendarClass self => self -> Int -> Int -> IO Bool-calendarSelectDay :: CalendarClass self => self -> Int -> IO ()-calendarMarkDay :: CalendarClass self => self -> Int -> IO Bool-calendarUnmarkDay :: CalendarClass self => self -> Int -> IO Bool-calendarClearMarks :: CalendarClass self => self -> IO ()-calendarDisplayOptions :: CalendarClass self => self -> [CalendarDisplayOptions] -> IO ()-calendarSetDisplayOptions :: CalendarClass self => self -> [CalendarDisplayOptions] -> IO ()-calendarGetDisplayOptions :: CalendarClass self => self -> IO [CalendarDisplayOptions]-calendarGetDate :: CalendarClass self => self -> IO (Int, Int, Int)-calendarFreeze :: CalendarClass self => self -> IO a -> IO a-calendarYear :: CalendarClass self => Attr self Int-calendarMonth :: CalendarClass self => Attr self Int-calendarDay :: CalendarClass self => Attr self Int-calendarShowHeading :: CalendarClass self => Attr self Bool-calendarShowDayNames :: CalendarClass self => Attr self Bool-calendarNoMonthChange :: CalendarClass self => Attr self Bool-calendarShowWeekNumbers :: CalendarClass self => Attr self Bool-onDaySelected :: CalendarClass self => self -> IO () -> IO (ConnectId self)-afterDaySelected :: CalendarClass self => self -> IO () -> IO (ConnectId self)-onDaySelectedDoubleClick :: CalendarClass self => self -> IO () -> IO (ConnectId self)-afterDaySelectedDoubleClick :: CalendarClass self => self -> IO () -> IO (ConnectId self)-onMonthChanged :: CalendarClass self => self -> IO () -> IO (ConnectId self)-afterMonthChanged :: CalendarClass self => self -> IO () -> IO (ConnectId self)-onNextMonth :: CalendarClass self => self -> IO () -> IO (ConnectId self)-afterNextMonth :: CalendarClass self => self -> IO () -> IO (ConnectId self)-onNextYear :: CalendarClass self => self -> IO () -> IO (ConnectId self)-afterNextYear :: CalendarClass self => self -> IO () -> IO (ConnectId self)-onPrevMonth :: CalendarClass self => self -> IO () -> IO (ConnectId self)-afterPrevMonth :: CalendarClass self => self -> IO () -> IO (ConnectId self)-onPrevYear :: CalendarClass self => self -> IO () -> IO (ConnectId self)-afterPrevYear :: CalendarClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.Misc.DrawingArea-data DrawingArea-instance DrawingAreaClass DrawingArea-instance GObjectClass DrawingArea-instance ObjectClass DrawingArea-instance WidgetClass DrawingArea-class WidgetClass o => DrawingAreaClass o-instance DrawingAreaClass Curve-instance DrawingAreaClass DrawingArea-castToDrawingArea :: GObjectClass obj => obj -> DrawingArea-toDrawingArea :: DrawingAreaClass o => o -> DrawingArea-drawingAreaNew :: IO DrawingArea-drawingAreaGetDrawWindow :: DrawingArea -> IO DrawWindow-drawingAreaGetSize :: DrawingArea -> IO (Int, Int)--module Graphics.UI.Gtk.Misc.EventBox-data EventBox-instance BinClass EventBox-instance ContainerClass EventBox-instance EventBoxClass EventBox-instance GObjectClass EventBox-instance ObjectClass EventBox-instance WidgetClass EventBox-class BinClass o => EventBoxClass o-instance EventBoxClass EventBox-castToEventBox :: GObjectClass obj => obj -> EventBox-toEventBox :: EventBoxClass o => o -> EventBox-eventBoxNew :: IO EventBox-eventBoxSetVisibleWindow :: EventBox -> Bool -> IO ()-eventBoxGetVisibleWindow :: EventBox -> IO Bool-eventBoxSetAboveChild :: EventBox -> Bool -> IO ()-eventBoxGetAboveChild :: EventBox -> IO Bool-eventBoxVisibleWindow :: Attr EventBox Bool-eventBoxAboveChild :: Attr EventBox Bool--module Graphics.UI.Gtk.Misc.HandleBox-data HandleBox-instance BinClass HandleBox-instance ContainerClass HandleBox-instance GObjectClass HandleBox-instance HandleBoxClass HandleBox-instance ObjectClass HandleBox-instance WidgetClass HandleBox-class BinClass o => HandleBoxClass o-instance HandleBoxClass HandleBox-castToHandleBox :: GObjectClass obj => obj -> HandleBox-toHandleBox :: HandleBoxClass o => o -> HandleBox-handleBoxNew :: IO HandleBox-data ShadowType-ShadowNone :: ShadowType-ShadowIn :: ShadowType-ShadowOut :: ShadowType-ShadowEtchedIn :: ShadowType-ShadowEtchedOut :: ShadowType-instance Enum ShadowType-instance Eq ShadowType-handleBoxSetShadowType :: HandleBoxClass self => self -> ShadowType -> IO ()-handleBoxGetShadowType :: HandleBoxClass self => self -> IO ShadowType-data PositionType-PosLeft :: PositionType-PosRight :: PositionType-PosTop :: PositionType-PosBottom :: PositionType-instance Enum PositionType-instance Eq PositionType-handleBoxSetHandlePosition :: HandleBoxClass self => self -> PositionType -> IO ()-handleBoxGetHandlePosition :: HandleBoxClass self => self -> IO PositionType-handleBoxSetSnapEdge :: HandleBoxClass self => self -> PositionType -> IO ()-handleBoxGetSnapEdge :: HandleBoxClass self => self -> IO PositionType-handleBoxShadowType :: HandleBoxClass self => Attr self ShadowType-handleBoxHandlePosition :: HandleBoxClass self => Attr self PositionType-handleBoxSnapEdge :: HandleBoxClass self => Attr self PositionType-handleBoxSnapEdgeSet :: HandleBoxClass self => Attr self Bool-onChildAttached :: HandleBoxClass self => self -> IO () -> IO (ConnectId self)-afterChildAttached :: HandleBoxClass self => self -> IO () -> IO (ConnectId self)-onChildDetached :: HandleBoxClass self => self -> IO () -> IO (ConnectId self)-afterChildDetached :: HandleBoxClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.Misc.Tooltips-data Tooltips-instance GObjectClass Tooltips-instance ObjectClass Tooltips-instance TooltipsClass Tooltips-class ObjectClass o => TooltipsClass o-instance TooltipsClass Tooltips-castToTooltips :: GObjectClass obj => obj -> Tooltips-toTooltips :: TooltipsClass o => o -> Tooltips-tooltipsNew :: IO Tooltips-tooltipsEnable :: TooltipsClass self => self -> IO ()-tooltipsDisable :: TooltipsClass self => self -> IO ()-tooltipsSetDelay :: TooltipsClass self => self -> Int -> IO ()-tooltipsSetTip :: (TooltipsClass self, WidgetClass widget) => self -> widget -> String -> String -> IO ()-tooltipsDataGet :: WidgetClass w => w -> IO (Maybe (Tooltips, String, String))--module Graphics.UI.Gtk.Misc.Viewport-data Viewport-instance BinClass Viewport-instance ContainerClass Viewport-instance GObjectClass Viewport-instance ObjectClass Viewport-instance ViewportClass Viewport-instance WidgetClass Viewport-class BinClass o => ViewportClass o-instance ViewportClass Viewport-castToViewport :: GObjectClass obj => obj -> Viewport-toViewport :: ViewportClass o => o -> Viewport-viewportNew :: Adjustment -> Adjustment -> IO Viewport-viewportGetHAdjustment :: ViewportClass self => self -> IO Adjustment-viewportGetVAdjustment :: ViewportClass self => self -> IO Adjustment-viewportSetHAdjustment :: ViewportClass self => self -> Adjustment -> IO ()-viewportSetVAdjustment :: ViewportClass self => self -> Adjustment -> IO ()-data ShadowType-ShadowNone :: ShadowType-ShadowIn :: ShadowType-ShadowOut :: ShadowType-ShadowEtchedIn :: ShadowType-ShadowEtchedOut :: ShadowType-instance Enum ShadowType-instance Eq ShadowType-viewportSetShadowType :: ViewportClass self => self -> ShadowType -> IO ()-viewportGetShadowType :: ViewportClass self => self -> IO ShadowType-viewportHAdjustment :: ViewportClass self => Attr self Adjustment-viewportVAdjustment :: ViewportClass self => Attr self Adjustment-viewportShadowType :: ViewportClass self => Attr self ShadowType--module Graphics.UI.Gtk.Mogul.WidgetTable-type WidgetName = String-widgetLookup :: WidgetClass w => WidgetName -> String -> (ForeignPtr w -> w) -> IO w-newNamedWidget :: WidgetClass w => WidgetName -> IO w -> IO w-isValidName :: WidgetName -> IO Bool--module Graphics.UI.Gtk.Mogul.GetWidget-getMisc :: String -> IO Misc-getLabel :: String -> IO Label-getAccelLabel :: String -> IO AccelLabel-getTipsQuery :: String -> IO TipsQuery-getArrow :: String -> IO Arrow-getImage :: String -> IO Image-getContainer :: String -> IO Container-getBin :: String -> IO Bin-getAlignment :: String -> IO Alignment-getFrame :: String -> IO Frame-getAspectFrame :: String -> IO AspectFrame-getButton :: String -> IO Button-getToggleButton :: String -> IO ToggleButton-getCheckButton :: String -> IO CheckButton-getRadioButton :: String -> IO RadioButton-getOptionMenu :: String -> IO OptionMenu-getItem :: String -> IO Item-getMenuItem :: String -> IO MenuItem-getCheckMenuItem :: String -> IO CheckMenuItem-getRadioMenuItem :: String -> IO RadioMenuItem-getTearoffMenuItem :: String -> IO TearoffMenuItem-getListItem :: String -> IO ListItem-getWindow :: String -> IO Window-getDialog :: String -> IO Dialog-getColorSelectionDialog :: String -> IO ColorSelectionDialog-getFileSelection :: String -> IO FileSelection-getFontSelectionDialog :: String -> IO FontSelectionDialog-getInputDialog :: String -> IO InputDialog-getMessageDialog :: String -> IO MessageDialog-getEventBox :: String -> IO EventBox-getHandleBox :: String -> IO HandleBox-getScrolledWindow :: String -> IO ScrolledWindow-getViewport :: String -> IO Viewport-getBox :: String -> IO Box-getButtonBox :: String -> IO ButtonBox-getHButtonBox :: String -> IO HButtonBox-getVButtonBox :: String -> IO VButtonBox-getVBox :: String -> IO VBox-getColorSelection :: String -> IO ColorSelection-getFontSelection :: String -> IO FontSelection-getGammaCurve :: String -> IO GammaCurve-getHBox :: String -> IO HBox-getCombo :: String -> IO Combo-getStatusbar :: String -> IO Statusbar-getCList :: String -> IO CList-getCTree :: String -> IO CTree-getFixed :: String -> IO Fixed-getPaned :: String -> IO Paned-getHPaned :: String -> IO HPaned-getVPaned :: String -> IO VPaned-getLayout :: String -> IO Layout-getList :: String -> IO List-getMenuShell :: String -> IO MenuShell-getMenu :: String -> IO Menu-getMenuBar :: String -> IO MenuBar-getNotebook :: String -> IO Notebook-getTable :: String -> IO Table-getTextView :: String -> IO TextView-getToolbar :: String -> IO Toolbar-getTreeView :: String -> IO TreeView-getCalendar :: String -> IO Calendar-getDrawingArea :: String -> IO DrawingArea-getCurve :: String -> IO Curve-getEntry :: String -> IO Entry-getSpinButton :: String -> IO SpinButton-getRuler :: String -> IO Ruler-getHRuler :: String -> IO HRuler-getVRuler :: String -> IO VRuler-getRange :: String -> IO Range-getScale :: String -> IO Scale-getHScale :: String -> IO HScale-getVScale :: String -> IO VScale-getScrollbar :: String -> IO Scrollbar-getHScrollbar :: String -> IO HScrollbar-getVScrollbar :: String -> IO VScrollbar-getSeparator :: String -> IO Separator-getHSeparator :: String -> IO HSeparator-getVSeparator :: String -> IO VSeparator-getInvisible :: String -> IO Invisible-getPreview :: String -> IO Preview-getProgressBar :: String -> IO ProgressBar--module Graphics.UI.Gtk.MozEmbed-data MozEmbed-instance BinClass MozEmbed-instance ContainerClass MozEmbed-instance GObjectClass MozEmbed-instance MozEmbedClass MozEmbed-instance ObjectClass MozEmbed-instance WidgetClass MozEmbed-mozEmbedNew :: IO MozEmbed-mozEmbedSetCompPath :: String -> IO ()-mozEmbedDefaultCompPath :: String-mozEmbedSetProfilePath :: FilePath -> String -> IO ()-mozEmbedPushStartup :: IO ()-mozEmbedPopStartup :: IO ()-mozEmbedLoadUrl :: MozEmbed -> String -> IO ()-mozEmbedStopLoad :: MozEmbed -> IO ()-mozEmbedRenderData :: MozEmbed -> String -> String -> String -> IO ()-mozEmbedOpenStream :: MozEmbed -> String -> String -> IO ()-mozEmbedAppendData :: MozEmbed -> String -> IO ()-mozEmbedCloseStream :: MozEmbed -> IO ()-mozEmbedGoBack :: MozEmbed -> IO ()-mozEmbedGoForward :: MozEmbed -> IO ()-mozEmbedCanGoBack :: MozEmbed -> IO Bool-mozEmbedCanGoForward :: MozEmbed -> IO Bool-mozEmbedGetTitle :: MozEmbed -> IO String-mozEmbedGetLocation :: MozEmbed -> IO String-mozEmbedGetLinkMessage :: MozEmbed -> IO String-mozEmbedGetJsStatus :: MozEmbed -> IO String-onOpenURI :: MozEmbed -> (String -> IO Bool) -> IO (ConnectId MozEmbed)-onKeyDown :: MozEmbed -> (Ptr a -> IO Int) -> IO (ConnectId MozEmbed)-onKeyPress :: MozEmbed -> (Ptr a -> IO Int) -> IO (ConnectId MozEmbed)-onKeyUp :: MozEmbed -> (Ptr a -> IO Int) -> IO (ConnectId MozEmbed)-onMouseDown :: MozEmbed -> (Ptr a -> IO Int) -> IO (ConnectId MozEmbed)-onMouseUp :: MozEmbed -> (Ptr a -> IO Int) -> IO (ConnectId MozEmbed)-onMouseClick :: MozEmbed -> (Ptr a -> IO Int) -> IO (ConnectId MozEmbed)-onMouseDoubleClick :: MozEmbed -> (Ptr a -> IO Int) -> IO (ConnectId MozEmbed)-onMouseOver :: MozEmbed -> (Ptr a -> IO Int) -> IO (ConnectId MozEmbed)-onMouseOut :: MozEmbed -> (Ptr a -> IO Int) -> IO (ConnectId MozEmbed)--module Graphics.UI.Gtk.Multiline.TextView-data TextView-instance ContainerClass TextView-instance GObjectClass TextView-instance ObjectClass TextView-instance TextViewClass TextView-instance WidgetClass TextView-class ContainerClass o => TextViewClass o-instance TextViewClass SourceView-instance TextViewClass TextView-data TextChildAnchor-instance GObjectClass TextChildAnchor-instance TextChildAnchorClass TextChildAnchor-class GObjectClass o => TextChildAnchorClass o-instance TextChildAnchorClass TextChildAnchor-castToTextView :: GObjectClass obj => obj -> TextView-toTextView :: TextViewClass o => o -> TextView-data DeleteType-DeleteChars :: DeleteType-DeleteWordEnds :: DeleteType-DeleteWords :: DeleteType-DeleteDisplayLines :: DeleteType-DeleteDisplayLineEnds :: DeleteType-DeleteParagraphEnds :: DeleteType-DeleteParagraphs :: DeleteType-DeleteWhitespace :: DeleteType-instance Enum DeleteType-instance Eq DeleteType-data DirectionType-DirTabForward :: DirectionType-DirTabBackward :: DirectionType-DirUp :: DirectionType-DirDown :: DirectionType-DirLeft :: DirectionType-DirRight :: DirectionType-instance Enum DirectionType-instance Eq DirectionType-data Justification-JustifyLeft :: Justification-JustifyRight :: Justification-JustifyCenter :: Justification-JustifyFill :: Justification-instance Enum Justification-instance Eq Justification-data MovementStep-MovementLogicalPositions :: MovementStep-MovementVisualPositions :: MovementStep-MovementWords :: MovementStep-MovementDisplayLines :: MovementStep-MovementDisplayLineEnds :: MovementStep-MovementParagraphs :: MovementStep-MovementParagraphEnds :: MovementStep-MovementPages :: MovementStep-MovementBufferEnds :: MovementStep-MovementHorizontalPages :: MovementStep-instance Enum MovementStep-instance Eq MovementStep-data TextWindowType-TextWindowPrivate :: TextWindowType-TextWindowWidget :: TextWindowType-TextWindowText :: TextWindowType-TextWindowLeft :: TextWindowType-TextWindowRight :: TextWindowType-TextWindowTop :: TextWindowType-TextWindowBottom :: TextWindowType-instance Enum TextWindowType-instance Eq TextWindowType-data WrapMode-WrapNone :: WrapMode-WrapChar :: WrapMode-WrapWord :: WrapMode-WrapWordChar :: WrapMode-instance Enum WrapMode-instance Eq WrapMode-textViewNew :: IO TextView-textViewNewWithBuffer :: TextBufferClass buffer => buffer -> IO TextView-textViewSetBuffer :: (TextViewClass self, TextBufferClass buffer) => self -> buffer -> IO ()-textViewGetBuffer :: TextViewClass self => self -> IO TextBuffer-textViewScrollToMark :: (TextViewClass self, TextMarkClass mark) => self -> mark -> Double -> Maybe (Double, Double) -> IO ()-textViewScrollToIter :: TextViewClass self => self -> TextIter -> Double -> Maybe (Double, Double) -> IO Bool-textViewScrollMarkOnscreen :: (TextViewClass self, TextMarkClass mark) => self -> mark -> IO ()-textViewMoveMarkOnscreen :: (TextViewClass self, TextMarkClass mark) => self -> mark -> IO Bool-textViewPlaceCursorOnscreen :: TextViewClass self => self -> IO Bool-textViewGetLineAtY :: TextViewClass self => self -> Int -> IO (TextIter, Int)-textViewGetLineYrange :: TextViewClass self => self -> TextIter -> IO (Int, Int)-textViewGetIterAtLocation :: TextViewClass self => self -> Int -> Int -> IO TextIter-textViewBufferToWindowCoords :: TextViewClass self => self -> TextWindowType -> (Int, Int) -> IO (Int, Int)-textViewWindowToBufferCoords :: TextViewClass self => self -> TextWindowType -> (Int, Int) -> IO (Int, Int)-textViewGetWindow :: TextViewClass self => self -> TextWindowType -> IO (Maybe DrawWindow)-textViewGetWindowType :: TextViewClass self => self -> DrawWindow -> IO TextWindowType-textViewSetBorderWindowSize :: TextViewClass self => self -> TextWindowType -> Int -> IO ()-textViewGetBorderWindowSize :: TextViewClass self => self -> TextWindowType -> IO Int-textViewForwardDisplayLine :: TextViewClass self => self -> TextIter -> IO Bool-textViewBackwardDisplayLine :: TextViewClass self => self -> TextIter -> IO Bool-textViewForwardDisplayLineEnd :: TextViewClass self => self -> TextIter -> IO Bool-textViewBackwardDisplayLineStart :: TextViewClass self => self -> TextIter -> IO Bool-textViewStartsDisplayLine :: TextViewClass self => self -> TextIter -> IO Bool-textViewMoveVisually :: TextViewClass self => self -> TextIter -> Int -> IO Bool-textViewAddChildAtAnchor :: (TextViewClass self, WidgetClass child) => self -> child -> TextChildAnchor -> IO ()-textChildAnchorNew :: IO TextChildAnchor-textChildAnchorGetWidgets :: TextChildAnchor -> IO [Widget]-textChildAnchorGetDeleted :: TextChildAnchor -> IO Bool-textViewAddChildInWindow :: (TextViewClass self, WidgetClass child) => self -> child -> TextWindowType -> Int -> Int -> IO ()-textViewMoveChild :: (TextViewClass self, WidgetClass child) => self -> child -> Int -> Int -> IO ()-textViewSetWrapMode :: TextViewClass self => self -> WrapMode -> IO ()-textViewGetWrapMode :: TextViewClass self => self -> IO WrapMode-textViewSetEditable :: TextViewClass self => self -> Bool -> IO ()-textViewGetEditable :: TextViewClass self => self -> IO Bool-textViewSetCursorVisible :: TextViewClass self => self -> Bool -> IO ()-textViewGetCursorVisible :: TextViewClass self => self -> IO Bool-textViewSetPixelsAboveLines :: TextViewClass self => self -> Int -> IO ()-textViewGetPixelsAboveLines :: TextViewClass self => self -> IO Int-textViewSetPixelsBelowLines :: TextViewClass self => self -> Int -> IO ()-textViewGetPixelsBelowLines :: TextViewClass self => self -> IO Int-textViewSetPixelsInsideWrap :: TextViewClass self => self -> Int -> IO ()-textViewGetPixelsInsideWrap :: TextViewClass self => self -> IO Int-textViewSetJustification :: TextViewClass self => self -> Justification -> IO ()-textViewGetJustification :: TextViewClass self => self -> IO Justification-textViewSetLeftMargin :: TextViewClass self => self -> Int -> IO ()-textViewGetLeftMargin :: TextViewClass self => self -> IO Int-textViewSetRightMargin :: TextViewClass self => self -> Int -> IO ()-textViewGetRightMargin :: TextViewClass self => self -> IO Int-textViewSetIndent :: TextViewClass self => self -> Int -> IO ()-textViewGetIndent :: TextViewClass self => self -> IO Int-textViewGetDefaultAttributes :: TextViewClass self => self -> IO TextAttributes-textViewGetVisibleRect :: TextViewClass self => self -> IO Rectangle-textViewGetIterLocation :: TextViewClass self => self -> TextIter -> IO Rectangle-textViewGetIterAtPosition :: TextViewClass self => self -> Int -> Int -> IO (TextIter, Int)-textViewSetOverwrite :: TextViewClass self => self -> Bool -> IO ()-textViewGetOverwrite :: TextViewClass self => self -> IO Bool-textViewSetAcceptsTab :: TextViewClass self => self -> Bool -> IO ()-textViewGetAcceptsTab :: TextViewClass self => self -> IO Bool-textViewPixelsAboveLines :: TextViewClass self => Attr self Int-textViewPixelsBelowLines :: TextViewClass self => Attr self Int-textViewPixelsInsideWrap :: TextViewClass self => Attr self Int-textViewEditable :: TextViewClass self => Attr self Bool-textViewWrapMode :: TextViewClass self => Attr self WrapMode-textViewJustification :: TextViewClass self => Attr self Justification-textViewLeftMargin :: TextViewClass self => Attr self Int-textViewRightMargin :: TextViewClass self => Attr self Int-textViewIndent :: TextViewClass self => Attr self Int-textViewCursorVisible :: TextViewClass self => Attr self Bool-textViewBuffer :: TextViewClass self => Attr self TextBuffer-textViewOverwrite :: TextViewClass self => Attr self Bool-textViewAcceptsTab :: TextViewClass self => Attr self Bool-onCopyClipboard :: TextViewClass self => self -> IO () -> IO (ConnectId self)-afterCopyClipboard :: TextViewClass self => self -> IO () -> IO (ConnectId self)-onCutClipboard :: TextViewClass self => self -> IO () -> IO (ConnectId self)-afterCutClipboard :: TextViewClass self => self -> IO () -> IO (ConnectId self)-onDeleteFromCursor :: TextViewClass self => self -> (DeleteType -> Int -> IO ()) -> IO (ConnectId self)-afterDeleteFromCursor :: TextViewClass self => self -> (DeleteType -> Int -> IO ()) -> IO (ConnectId self)-onInsertAtCursor :: TextViewClass self => self -> (String -> IO ()) -> IO (ConnectId self)-afterInsertAtCursor :: TextViewClass self => self -> (String -> IO ()) -> IO (ConnectId self)-onMoveCursor :: TextViewClass self => self -> (MovementStep -> Int -> Bool -> IO ()) -> IO (ConnectId self)-afterMoveCursor :: TextViewClass self => self -> (MovementStep -> Int -> Bool -> IO ()) -> IO (ConnectId self)-onMoveFocus :: TextViewClass self => self -> (DirectionType -> IO ()) -> IO (ConnectId self)-afterMoveFocus :: TextViewClass self => self -> (DirectionType -> IO ()) -> IO (ConnectId self)-onPageHorizontally :: TextViewClass self => self -> (Int -> Bool -> IO ()) -> IO (ConnectId self)-afterPageHorizontally :: TextViewClass self => self -> (Int -> Bool -> IO ()) -> IO (ConnectId self)-onPasteClipboard :: TextViewClass self => self -> IO () -> IO (ConnectId self)-afterPasteClipboard :: TextViewClass self => self -> IO () -> IO (ConnectId self)-onPopulatePopup :: TextViewClass self => self -> (Menu -> IO ()) -> IO (ConnectId self)-afterPopulatePopup :: TextViewClass self => self -> (Menu -> IO ()) -> IO (ConnectId self)-onSetAnchor :: TextViewClass self => self -> IO () -> IO (ConnectId self)-afterSetAnchor :: TextViewClass self => self -> IO () -> IO (ConnectId self)-onSetScrollAdjustments :: TextViewClass self => self -> (Adjustment -> Adjustment -> IO ()) -> IO (ConnectId self)-afterSetScrollAdjustments :: TextViewClass self => self -> (Adjustment -> Adjustment -> IO ()) -> IO (ConnectId self)-onToggleOverwrite :: TextViewClass self => self -> IO () -> IO (ConnectId self)-afterToggleOverwrite :: TextViewClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.Ornaments.Frame-data Frame-instance BinClass Frame-instance ContainerClass Frame-instance FrameClass Frame-instance GObjectClass Frame-instance ObjectClass Frame-instance WidgetClass Frame-class BinClass o => FrameClass o-instance FrameClass AspectFrame-instance FrameClass Frame-castToFrame :: GObjectClass obj => obj -> Frame-toFrame :: FrameClass o => o -> Frame-frameNew :: IO Frame-frameSetLabel :: FrameClass self => self -> String -> IO ()-frameGetLabel :: FrameClass self => self -> IO String-frameSetLabelWidget :: (FrameClass self, WidgetClass labelWidget) => self -> labelWidget -> IO ()-frameGetLabelWidget :: FrameClass self => self -> IO (Maybe Widget)-frameSetLabelAlign :: FrameClass self => self -> Float -> Float -> IO ()-frameGetLabelAlign :: FrameClass self => self -> IO (Float, Float)-data ShadowType-ShadowNone :: ShadowType-ShadowIn :: ShadowType-ShadowOut :: ShadowType-ShadowEtchedIn :: ShadowType-ShadowEtchedOut :: ShadowType-instance Enum ShadowType-instance Eq ShadowType-frameSetShadowType :: FrameClass self => self -> ShadowType -> IO ()-frameGetShadowType :: FrameClass self => self -> IO ShadowType-frameLabel :: FrameClass self => Attr self String-frameLabelXAlign :: FrameClass self => Attr self Float-frameLabelYAlign :: FrameClass self => Attr self Float-frameShadowType :: FrameClass self => Attr self ShadowType-frameLabelWidget :: (FrameClass self, WidgetClass labelWidget) => ReadWriteAttr self (Maybe Widget) labelWidget--module Graphics.UI.Gtk.Ornaments.HSeparator-data HSeparator-instance GObjectClass HSeparator-instance HSeparatorClass HSeparator-instance ObjectClass HSeparator-instance SeparatorClass HSeparator-instance WidgetClass HSeparator-class SeparatorClass o => HSeparatorClass o-instance HSeparatorClass HSeparator-castToHSeparator :: GObjectClass obj => obj -> HSeparator-toHSeparator :: HSeparatorClass o => o -> HSeparator-hSeparatorNew :: IO HSeparator--module Graphics.UI.Gtk.Ornaments.VSeparator-data VSeparator-instance GObjectClass VSeparator-instance ObjectClass VSeparator-instance SeparatorClass VSeparator-instance VSeparatorClass VSeparator-instance WidgetClass VSeparator-class SeparatorClass o => VSeparatorClass o-instance VSeparatorClass VSeparator-castToVSeparator :: GObjectClass obj => obj -> VSeparator-toVSeparator :: VSeparatorClass o => o -> VSeparator-vSeparatorNew :: IO VSeparator--module Graphics.UI.Gtk.Scrolling.HScrollbar-data HScrollbar-instance GObjectClass HScrollbar-instance HScrollbarClass HScrollbar-instance ObjectClass HScrollbar-instance RangeClass HScrollbar-instance ScrollbarClass HScrollbar-instance WidgetClass HScrollbar-class ScrollbarClass o => HScrollbarClass o-instance HScrollbarClass HScrollbar-castToHScrollbar :: GObjectClass obj => obj -> HScrollbar-toHScrollbar :: HScrollbarClass o => o -> HScrollbar-hScrollbarNew :: Adjustment -> IO HScrollbar-hScrollbarNewDefaults :: IO HScrollbar--module Graphics.UI.Gtk.Scrolling.ScrolledWindow-data ScrolledWindow-instance BinClass ScrolledWindow-instance ContainerClass ScrolledWindow-instance GObjectClass ScrolledWindow-instance ObjectClass ScrolledWindow-instance ScrolledWindowClass ScrolledWindow-instance WidgetClass ScrolledWindow-class BinClass o => ScrolledWindowClass o-instance ScrolledWindowClass ScrolledWindow-castToScrolledWindow :: GObjectClass obj => obj -> ScrolledWindow-toScrolledWindow :: ScrolledWindowClass o => o -> ScrolledWindow-scrolledWindowNew :: Maybe Adjustment -> Maybe Adjustment -> IO ScrolledWindow-scrolledWindowGetHAdjustment :: ScrolledWindowClass self => self -> IO Adjustment-scrolledWindowGetVAdjustment :: ScrolledWindowClass self => self -> IO Adjustment-data PolicyType-PolicyAlways :: PolicyType-PolicyAutomatic :: PolicyType-PolicyNever :: PolicyType-instance Enum PolicyType-instance Eq PolicyType-scrolledWindowSetPolicy :: ScrolledWindowClass self => self -> PolicyType -> PolicyType -> IO ()-scrolledWindowGetPolicy :: ScrolledWindowClass self => self -> IO (PolicyType, PolicyType)-scrolledWindowAddWithViewport :: (ScrolledWindowClass self, WidgetClass child) => self -> child -> IO ()-data CornerType-CornerTopLeft :: CornerType-CornerBottomLeft :: CornerType-CornerTopRight :: CornerType-CornerBottomRight :: CornerType-instance Enum CornerType-instance Eq CornerType-scrolledWindowSetPlacement :: ScrolledWindowClass self => self -> CornerType -> IO ()-scrolledWindowGetPlacement :: ScrolledWindowClass self => self -> IO CornerType-data ShadowType-ShadowNone :: ShadowType-ShadowIn :: ShadowType-ShadowOut :: ShadowType-ShadowEtchedIn :: ShadowType-ShadowEtchedOut :: ShadowType-instance Enum ShadowType-instance Eq ShadowType-scrolledWindowSetShadowType :: ScrolledWindowClass self => self -> ShadowType -> IO ()-scrolledWindowGetShadowType :: ScrolledWindowClass self => self -> IO ShadowType-scrolledWindowSetHAdjustment :: ScrolledWindowClass self => self -> Adjustment -> IO ()-scrolledWindowSetVAdjustment :: ScrolledWindowClass self => self -> Adjustment -> IO ()-scrolledWindowGetHScrollbar :: ScrolledWindowClass self => self -> IO (Maybe HScrollbar)-scrolledWindowGetVScrollbar :: ScrolledWindowClass self => self -> IO (Maybe VScrollbar)-scrolledWindowHAdjustment :: ScrolledWindowClass self => Attr self Adjustment-scrolledWindowVAdjustment :: ScrolledWindowClass self => Attr self Adjustment-scrolledWindowHscrollbarPolicy :: ScrolledWindowClass self => Attr self PolicyType-scrolledWindowVscrollbarPolicy :: ScrolledWindowClass self => Attr self PolicyType-scrolledWindowWindowPlacement :: ScrolledWindowClass self => Attr self CornerType-scrolledWindowShadowType :: ScrolledWindowClass self => Attr self ShadowType-scrolledWindowPlacement :: ScrolledWindowClass self => Attr self CornerType--module Graphics.UI.Gtk.Scrolling.VScrollbar-data VScrollbar-instance GObjectClass VScrollbar-instance ObjectClass VScrollbar-instance RangeClass VScrollbar-instance ScrollbarClass VScrollbar-instance VScrollbarClass VScrollbar-instance WidgetClass VScrollbar-class ScrollbarClass o => VScrollbarClass o-instance VScrollbarClass VScrollbar-castToVScrollbar :: GObjectClass obj => obj -> VScrollbar-toVScrollbar :: VScrollbarClass o => o -> VScrollbar-vScrollbarNew :: Adjustment -> IO VScrollbar-vScrollbarNewDefaults :: IO VScrollbar--module Graphics.UI.Gtk.Selectors.ColorButton-data ColorButton-instance BinClass ColorButton-instance ButtonClass ColorButton-instance ColorButtonClass ColorButton-instance ContainerClass ColorButton-instance GObjectClass ColorButton-instance ObjectClass ColorButton-instance WidgetClass ColorButton-class ButtonClass o => ColorButtonClass o-instance ColorButtonClass ColorButton-castToColorButton :: GObjectClass obj => obj -> ColorButton-toColorButton :: ColorButtonClass o => o -> ColorButton-colorButtonNew :: IO ColorButton-colorButtonNewWithColor :: Color -> IO ColorButton-colorButtonSetColor :: ColorButtonClass self => self -> Color -> IO ()-colorButtonGetColor :: ColorButtonClass self => self -> IO Color-colorButtonSetAlpha :: ColorButtonClass self => self -> Word16 -> IO ()-colorButtonGetAlpha :: ColorButtonClass self => self -> IO Word16-colorButtonSetUseAlpha :: ColorButtonClass self => self -> Bool -> IO ()-colorButtonGetUseAlpha :: ColorButtonClass self => self -> IO Bool-colorButtonSetTitle :: ColorButtonClass self => self -> String -> IO ()-colorButtonGetTitle :: ColorButtonClass self => self -> IO String-colorButtonUseAlpha :: ColorButtonClass self => Attr self Bool-colorButtonTitle :: ColorButtonClass self => Attr self String-colorButtonAlpha :: ColorButtonClass self => Attr self Word16-onColorSet :: ColorButtonClass self => self -> IO () -> IO (ConnectId self)-afterColorSet :: ColorButtonClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.Selectors.ColorSelection-data ColorSelection-instance BoxClass ColorSelection-instance ColorSelectionClass ColorSelection-instance ContainerClass ColorSelection-instance GObjectClass ColorSelection-instance ObjectClass ColorSelection-instance VBoxClass ColorSelection-instance WidgetClass ColorSelection-class VBoxClass o => ColorSelectionClass o-instance ColorSelectionClass ColorSelection-castToColorSelection :: GObjectClass obj => obj -> ColorSelection-toColorSelection :: ColorSelectionClass o => o -> ColorSelection-colorSelectionNew :: IO ColorSelection-colorSelectionGetCurrentAlpha :: ColorSelectionClass self => self -> IO Int-colorSelectionSetCurrentAlpha :: ColorSelectionClass self => self -> Int -> IO ()-colorSelectionGetCurrentColor :: ColorSelectionClass self => self -> IO Color-colorSelectionSetCurrentColor :: ColorSelectionClass self => self -> Color -> IO ()-colorSelectionGetHasOpacityControl :: ColorSelectionClass self => self -> IO Bool-colorSelectionSetHasOpacityControl :: ColorSelectionClass self => self -> Bool -> IO ()-colorSelectionGetHasPalette :: ColorSelectionClass self => self -> IO Bool-colorSelectionSetHasPalette :: ColorSelectionClass self => self -> Bool -> IO ()-colorSelectionGetPreviousAlpha :: ColorSelectionClass self => self -> IO Int-colorSelectionSetPreviousAlpha :: ColorSelectionClass self => self -> Int -> IO ()-colorSelectionGetPreviousColor :: ColorSelectionClass self => self -> IO Color-colorSelectionSetPreviousColor :: ColorSelectionClass self => self -> Color -> IO ()-colorSelectionIsAdjusting :: ColorSelectionClass self => self -> IO Bool-colorSelectionHasOpacityControl :: ColorSelectionClass self => Attr self Bool-colorSelectionHasPalette :: ColorSelectionClass self => Attr self Bool-colorSelectionCurrentAlpha :: ColorSelectionClass self => Attr self Int-colorSelectionPreviousAlpha :: ColorSelectionClass self => Attr self Int--module Graphics.UI.Gtk.Selectors.ColorSelectionDialog-data ColorSelectionDialog-instance BinClass ColorSelectionDialog-instance ColorSelectionDialogClass ColorSelectionDialog-instance ContainerClass ColorSelectionDialog-instance DialogClass ColorSelectionDialog-instance GObjectClass ColorSelectionDialog-instance ObjectClass ColorSelectionDialog-instance WidgetClass ColorSelectionDialog-instance WindowClass ColorSelectionDialog-class DialogClass o => ColorSelectionDialogClass o-instance ColorSelectionDialogClass ColorSelectionDialog-castToColorSelectionDialog :: GObjectClass obj => obj -> ColorSelectionDialog-toColorSelectionDialog :: ColorSelectionDialogClass o => o -> ColorSelectionDialog-colorSelectionDialogNew :: String -> IO ColorSelectionDialog--module Graphics.UI.Gtk.Selectors.FileChooser-data FileChooser-instance FileChooserClass FileChooser-instance GObjectClass FileChooser-class GObjectClass o => FileChooserClass o-instance FileChooserClass FileChooser-instance FileChooserClass FileChooserButton-instance FileChooserClass FileChooserDialog-instance FileChooserClass FileChooserWidget-castToFileChooser :: GObjectClass obj => obj -> FileChooser-toFileChooser :: FileChooserClass o => o -> FileChooser-data FileChooserAction-FileChooserActionOpen :: FileChooserAction-FileChooserActionSave :: FileChooserAction-FileChooserActionSelectFolder :: FileChooserAction-FileChooserActionCreateFolder :: FileChooserAction-instance Enum FileChooserAction-data FileChooserError-FileChooserErrorNonexistent :: FileChooserError-FileChooserErrorBadFilename :: FileChooserError-instance Enum FileChooserError-instance GErrorClass FileChooserError-data FileChooserConfirmation-FileChooserConfirmationConfirm :: FileChooserConfirmation-FileChooserConfirmationAcceptFilename :: FileChooserConfirmation-FileChooserConfirmationSelectAgain :: FileChooserConfirmation-instance Enum FileChooserConfirmation-fileChooserSetAction :: FileChooserClass self => self -> FileChooserAction -> IO ()-fileChooserGetAction :: FileChooserClass self => self -> IO FileChooserAction-fileChooserSetLocalOnly :: FileChooserClass self => self -> Bool -> IO ()-fileChooserGetLocalOnly :: FileChooserClass self => self -> IO Bool-fileChooserSetSelectMultiple :: FileChooserClass self => self -> Bool -> IO ()-fileChooserGetSelectMultiple :: FileChooserClass self => self -> IO Bool-fileChooserSetCurrentName :: FileChooserClass self => self -> FilePath -> IO ()-fileChooserGetFilename :: FileChooserClass self => self -> IO (Maybe FilePath)-fileChooserSetFilename :: FileChooserClass self => self -> FilePath -> IO Bool-fileChooserSelectFilename :: FileChooserClass self => self -> FilePath -> IO Bool-fileChooserUnselectFilename :: FileChooserClass self => self -> FilePath -> IO ()-fileChooserSelectAll :: FileChooserClass self => self -> IO ()-fileChooserUnselectAll :: FileChooserClass self => self -> IO ()-fileChooserGetFilenames :: FileChooserClass self => self -> IO [FilePath]-fileChooserSetCurrentFolder :: FileChooserClass self => self -> FilePath -> IO Bool-fileChooserGetCurrentFolder :: FileChooserClass self => self -> IO (Maybe FilePath)-fileChooserGetURI :: FileChooserClass self => self -> IO (Maybe String)-fileChooserSetURI :: FileChooserClass self => self -> String -> IO Bool-fileChooserSelectURI :: FileChooserClass self => self -> String -> IO Bool-fileChooserUnselectURI :: FileChooserClass self => self -> String -> IO ()-fileChooserGetURIs :: FileChooserClass self => self -> IO [String]-fileChooserSetCurrentFolderURI :: FileChooserClass self => self -> String -> IO Bool-fileChooserGetCurrentFolderURI :: FileChooserClass self => self -> IO String-fileChooserSetPreviewWidget :: (FileChooserClass self, WidgetClass previewWidget) => self -> previewWidget -> IO ()-fileChooserGetPreviewWidget :: FileChooserClass self => self -> IO (Maybe Widget)-fileChooserSetPreviewWidgetActive :: FileChooserClass self => self -> Bool -> IO ()-fileChooserGetPreviewWidgetActive :: FileChooserClass self => self -> IO Bool-fileChooserSetUsePreviewLabel :: FileChooserClass self => self -> Bool -> IO ()-fileChooserGetUsePreviewLabel :: FileChooserClass self => self -> IO Bool-fileChooserGetPreviewFilename :: FileChooserClass self => self -> IO (Maybe FilePath)-fileChooserGetPreviewURI :: FileChooserClass self => self -> IO (Maybe String)-fileChooserSetExtraWidget :: (FileChooserClass self, WidgetClass extraWidget) => self -> extraWidget -> IO ()-fileChooserGetExtraWidget :: FileChooserClass self => self -> IO (Maybe Widget)-fileChooserAddFilter :: FileChooserClass self => self -> FileFilter -> IO ()-fileChooserRemoveFilter :: FileChooserClass self => self -> FileFilter -> IO ()-fileChooserListFilters :: FileChooserClass self => self -> IO [FileFilter]-fileChooserSetFilter :: FileChooserClass self => self -> FileFilter -> IO ()-fileChooserGetFilter :: FileChooserClass self => self -> IO (Maybe FileFilter)-fileChooserAddShortcutFolder :: FileChooserClass self => self -> FilePath -> IO ()-fileChooserRemoveShortcutFolder :: FileChooserClass self => self -> FilePath -> IO ()-fileChooserListShortcutFolders :: FileChooserClass self => self -> IO [String]-fileChooserAddShortcutFolderURI :: FileChooserClass self => self -> String -> IO ()-fileChooserRemoveShortcutFolderURI :: FileChooserClass self => self -> String -> IO ()-fileChooserListShortcutFolderURIs :: FileChooserClass self => self -> IO [String]-fileChooserErrorDomain :: GErrorDomain-fileChooserSetShowHidden :: FileChooserClass self => self -> Bool -> IO ()-fileChooserGetShowHidden :: FileChooserClass self => self -> IO Bool-fileChooserSetDoOverwriteConfirmation :: FileChooserClass self => self -> Bool -> IO ()-fileChooserGetDoOverwriteConfirmation :: FileChooserClass self => self -> IO Bool-fileChooserUsePreviewLabel :: FileChooserClass self => Attr self Bool-fileChooserShowHidden :: FileChooserClass self => Attr self Bool-fileChooserSelectMultiple :: FileChooserClass self => Attr self Bool-fileChooserPreviewWidgetActive :: FileChooserClass self => Attr self Bool-fileChooserPreviewWidget :: (FileChooserClass self, WidgetClass previewWidget) => ReadWriteAttr self (Maybe Widget) previewWidget-fileChooserLocalOnly :: FileChooserClass self => Attr self Bool-fileChooserFilter :: FileChooserClass self => ReadWriteAttr self (Maybe FileFilter) FileFilter-fileChooserExtraWidget :: (FileChooserClass self, WidgetClass extraWidget) => ReadWriteAttr self (Maybe Widget) extraWidget-fileChooserDoOverwriteConfirmation :: FileChooserClass self => Attr self Bool-fileChooserAction :: FileChooserClass self => Attr self FileChooserAction-onCurrentFolderChanged :: FileChooserClass self => self -> IO () -> IO (ConnectId self)-afterCurrentFolderChanged :: FileChooserClass self => self -> IO () -> IO (ConnectId self)-onFileActivated :: FileChooserClass self => self -> IO () -> IO (ConnectId self)-afterFileActivated :: FileChooserClass self => self -> IO () -> IO (ConnectId self)-onUpdatePreview :: FileChooserClass self => self -> IO () -> IO (ConnectId self)-afterUpdatePreview :: FileChooserClass self => self -> IO () -> IO (ConnectId self)-onConfirmOverwrite :: FileChooserClass self => self -> IO FileChooserConfirmation -> IO (ConnectId self)-afterConfirmOverwrite :: FileChooserClass self => self -> IO FileChooserConfirmation -> IO (ConnectId self)--module Graphics.UI.Gtk.Selectors.FileChooserButton-data FileChooserButton-instance BoxClass FileChooserButton-instance ContainerClass FileChooserButton-instance FileChooserButtonClass FileChooserButton-instance FileChooserClass FileChooserButton-instance GObjectClass FileChooserButton-instance HBoxClass FileChooserButton-instance ObjectClass FileChooserButton-instance WidgetClass FileChooserButton-class HBoxClass o => FileChooserButtonClass o-instance FileChooserButtonClass FileChooserButton-castToFileChooserButton :: GObjectClass obj => obj -> FileChooserButton-toFileChooserButton :: FileChooserButtonClass o => o -> FileChooserButton-fileChooserButtonNew :: String -> FileChooserAction -> IO FileChooserButton-fileChooserButtonNewWithBackend :: String -> FileChooserAction -> String -> IO FileChooserButton-fileChooserButtonNewWithDialog :: FileChooserDialogClass dialog => dialog -> IO FileChooserButton-fileChooserButtonGetTitle :: FileChooserButtonClass self => self -> IO String-fileChooserButtonSetTitle :: FileChooserButtonClass self => self -> String -> IO ()-fileChooserButtonGetWidthChars :: FileChooserButtonClass self => self -> IO Int-fileChooserButtonSetWidthChars :: FileChooserButtonClass self => self -> Int -> IO ()-fileChooserButtonDialog :: (FileChooserButtonClass self, FileChooserDialogClass fileChooserDialog) => WriteAttr self fileChooserDialog-fileChooserButtonTitle :: FileChooserButtonClass self => Attr self String-fileChooserButtonWidthChars :: FileChooserButtonClass self => Attr self Int--module Graphics.UI.Gtk.Selectors.FileChooserWidget-data FileChooserWidget-instance BoxClass FileChooserWidget-instance ContainerClass FileChooserWidget-instance FileChooserClass FileChooserWidget-instance FileChooserWidgetClass FileChooserWidget-instance GObjectClass FileChooserWidget-instance ObjectClass FileChooserWidget-instance VBoxClass FileChooserWidget-instance WidgetClass FileChooserWidget-class VBoxClass o => FileChooserWidgetClass o-instance FileChooserWidgetClass FileChooserWidget-castToFileChooserWidget :: GObjectClass obj => obj -> FileChooserWidget-toFileChooserWidget :: FileChooserWidgetClass o => o -> FileChooserWidget-data FileChooserAction-instance Enum FileChooserAction-fileChooserWidgetNew :: FileChooserAction -> IO FileChooserWidget-fileChooserWidgetNewWithBackend :: FileChooserAction -> String -> IO FileChooserWidget--module Graphics.UI.Gtk.Selectors.FileFilter-data FileFilter-instance FileFilterClass FileFilter-instance GObjectClass FileFilter-instance ObjectClass FileFilter-class ObjectClass o => FileFilterClass o-instance FileFilterClass FileFilter-castToFileFilter :: GObjectClass obj => obj -> FileFilter-toFileFilter :: FileFilterClass o => o -> FileFilter-fileFilterNew :: IO FileFilter-fileFilterSetName :: FileFilter -> String -> IO ()-fileFilterGetName :: FileFilter -> IO String-fileFilterAddMimeType :: FileFilter -> String -> IO ()-fileFilterAddPattern :: FileFilter -> String -> IO ()-fileFilterAddCustom :: FileFilter -> [FileFilterFlags] -> (Maybe String -> Maybe String -> Maybe String -> Maybe String -> IO Bool) -> IO ()-fileFilterAddPixbufFormats :: FileFilter -> IO ()-fileFilterName :: Attr FileFilter String--module Graphics.UI.Gtk.Selectors.FileSelection-data FileSelection-instance BinClass FileSelection-instance ContainerClass FileSelection-instance DialogClass FileSelection-instance FileSelectionClass FileSelection-instance GObjectClass FileSelection-instance ObjectClass FileSelection-instance WidgetClass FileSelection-instance WindowClass FileSelection-class DialogClass o => FileSelectionClass o-instance FileSelectionClass FileSelection-castToFileSelection :: GObjectClass obj => obj -> FileSelection-toFileSelection :: FileSelectionClass o => o -> FileSelection-fileSelectionNew :: String -> IO FileSelection-fileSelectionSetFilename :: FileSelectionClass self => self -> String -> IO ()-fileSelectionGetFilename :: FileSelectionClass self => self -> IO String-fileSelectionShowFileopButtons :: FileSelectionClass self => self -> IO ()-fileSelectionHideFileopButtons :: FileSelectionClass self => self -> IO ()-fileSelectionGetButtons :: FileSelectionClass fsel => fsel -> IO (Button, Button)-fileSelectionComplete :: FileSelectionClass self => self -> String -> IO ()-fileSelectionGetSelections :: FileSelectionClass self => self -> IO [String]-fileSelectionSetSelectMultiple :: FileSelectionClass self => self -> Bool -> IO ()-fileSelectionGetSelectMultiple :: FileSelectionClass self => self -> IO Bool-fileSelectionFilename :: FileSelectionClass self => Attr self String-fileSelectionShowFileops :: FileSelectionClass self => Attr self Bool-fileSelectionSelectMultiple :: FileSelectionClass self => Attr self Bool--module Graphics.UI.Gtk.Selectors.FontButton-data FontButton-instance BinClass FontButton-instance ButtonClass FontButton-instance ContainerClass FontButton-instance FontButtonClass FontButton-instance GObjectClass FontButton-instance ObjectClass FontButton-instance WidgetClass FontButton-class ButtonClass o => FontButtonClass o-instance FontButtonClass FontButton-castToFontButton :: GObjectClass obj => obj -> FontButton-toFontButton :: FontButtonClass o => o -> FontButton-fontButtonNew :: IO FontButton-fontButtonNewWithFont :: String -> IO FontButton-fontButtonSetFontName :: FontButtonClass self => self -> String -> IO Bool-fontButtonGetFontName :: FontButtonClass self => self -> IO String-fontButtonSetShowStyle :: FontButtonClass self => self -> Bool -> IO ()-fontButtonGetShowStyle :: FontButtonClass self => self -> IO Bool-fontButtonSetShowSize :: FontButtonClass self => self -> Bool -> IO ()-fontButtonGetShowSize :: FontButtonClass self => self -> IO Bool-fontButtonSetUseFont :: FontButtonClass self => self -> Bool -> IO ()-fontButtonGetUseFont :: FontButtonClass self => self -> IO Bool-fontButtonSetUseSize :: FontButtonClass self => self -> Bool -> IO ()-fontButtonGetUseSize :: FontButtonClass self => self -> IO Bool-fontButtonSetTitle :: FontButtonClass self => self -> String -> IO ()-fontButtonGetTitle :: FontButtonClass self => self -> IO String-fontButtonTitle :: FontButtonClass self => Attr self String-fontButtonFontName :: FontButtonClass self => Attr self String-fontButtonUseFont :: FontButtonClass self => Attr self Bool-fontButtonUseSize :: FontButtonClass self => Attr self Bool-fontButtonShowStyle :: FontButtonClass self => Attr self Bool-fontButtonShowSize :: FontButtonClass self => Attr self Bool-onFontSet :: FontButtonClass self => self -> IO () -> IO (ConnectId self)-afterFontSet :: FontButtonClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.Selectors.FontSelection-data FontSelection-instance BoxClass FontSelection-instance ContainerClass FontSelection-instance FontSelectionClass FontSelection-instance GObjectClass FontSelection-instance ObjectClass FontSelection-instance VBoxClass FontSelection-instance WidgetClass FontSelection-class VBoxClass o => FontSelectionClass o-instance FontSelectionClass FontSelection-castToFontSelection :: GObjectClass obj => obj -> FontSelection-toFontSelection :: FontSelectionClass o => o -> FontSelection-fontSelectionNew :: IO FontSelection-fontSelectionGetFontName :: FontSelectionClass self => self -> IO (Maybe String)-fontSelectionSetFontName :: FontSelectionClass self => self -> String -> IO Bool-fontSelectionGetPreviewText :: FontSelectionClass self => self -> IO String-fontSelectionSetPreviewText :: FontSelectionClass self => self -> String -> IO ()-fontSelectionFontName :: FontSelectionClass self => Attr self String-fontSelectionPreviewText :: FontSelectionClass self => Attr self String--module Graphics.UI.Gtk.Selectors.FontSelectionDialog-data FontSelectionDialog-instance BinClass FontSelectionDialog-instance ContainerClass FontSelectionDialog-instance DialogClass FontSelectionDialog-instance FontSelectionDialogClass FontSelectionDialog-instance GObjectClass FontSelectionDialog-instance ObjectClass FontSelectionDialog-instance WidgetClass FontSelectionDialog-instance WindowClass FontSelectionDialog-class DialogClass o => FontSelectionDialogClass o-instance FontSelectionDialogClass FontSelectionDialog-castToFontSelectionDialog :: GObjectClass obj => obj -> FontSelectionDialog-toFontSelectionDialog :: FontSelectionDialogClass o => o -> FontSelectionDialog-fontSelectionDialogNew :: String -> IO FontSelectionDialog-fontSelectionDialogGetFontName :: FontSelectionDialogClass self => self -> IO (Maybe String)-fontSelectionDialogSetFontName :: FontSelectionDialogClass self => self -> String -> IO Bool-fontSelectionDialogGetPreviewText :: FontSelectionDialogClass self => self -> IO String-fontSelectionDialogSetPreviewText :: FontSelectionDialogClass self => self -> String -> IO ()-fontSelectionDialogPreviewText :: FontSelectionDialogClass self => Attr self String--module Graphics.UI.Gtk.SourceView.SourceBuffer-data SourceBuffer-instance GObjectClass SourceBuffer-instance SourceBufferClass SourceBuffer-instance TextBufferClass SourceBuffer-class TextBufferClass o => SourceBufferClass o-instance SourceBufferClass SourceBuffer-castToSourceBuffer :: GObjectClass obj => obj -> SourceBuffer-sourceBufferNew :: Maybe SourceTagTable -> IO SourceBuffer-sourceBufferNewWithLanguage :: SourceLanguage -> IO SourceBuffer-sourceBufferSetCheckBrackets :: SourceBuffer -> Bool -> IO ()-sourceBufferGetCheckBrackets :: SourceBuffer -> IO Bool-sourceBufferSetBracketsMatchStyle :: SourceBuffer -> SourceTagStyle -> IO ()-sourceBufferSetHighlight :: SourceBuffer -> Bool -> IO ()-sourceBufferGetHighlight :: SourceBuffer -> IO Bool-sourceBufferSetMaxUndoLevels :: SourceBuffer -> Int -> IO ()-sourceBufferGetMaxUndoLevels :: SourceBuffer -> IO Int-sourceBufferSetLanguage :: SourceBuffer -> SourceLanguage -> IO ()-sourceBufferGetLanguage :: SourceBuffer -> IO SourceLanguage-sourceBufferSetEscapeChar :: SourceBuffer -> Char -> IO ()-sourceBufferGetEscapeChar :: SourceBuffer -> IO Char-sourceBufferCanUndo :: SourceBuffer -> IO Bool-sourceBufferCanRedo :: SourceBuffer -> IO Bool-sourceBufferUndo :: SourceBuffer -> IO ()-sourceBufferRedo :: SourceBuffer -> IO ()-sourceBufferBeginNotUndoableAction :: SourceBuffer -> IO ()-sourceBufferEndNotUndoableAction :: SourceBuffer -> IO ()-sourceBufferCreateMarker :: SourceBuffer -> String -> String -> TextIter -> IO SourceMarker-sourceBufferMoveMarker :: SourceBuffer -> SourceMarker -> TextIter -> IO ()-sourceBufferDeleteMarker :: SourceBuffer -> SourceMarker -> IO ()-sourceBufferGetMarker :: SourceBuffer -> String -> IO SourceMarker-sourceBufferGetMarkersInRegion :: SourceBuffer -> TextIter -> TextIter -> IO [SourceMarker]-sourceBufferGetFirstMarker :: SourceBuffer -> IO SourceMarker-sourceBufferGetLastMarker :: SourceBuffer -> IO SourceMarker-sourceBufferGetIterAtMarker :: SourceBuffer -> SourceMarker -> IO TextIter-sourceBufferGetNextMarker :: SourceBuffer -> TextIter -> IO (Maybe SourceMarker)-sourceBufferGetPrevMarker :: SourceBuffer -> TextIter -> IO (Maybe SourceMarker)--module Graphics.UI.Gtk.SourceView.SourceIter-sourceIterForwardSearch :: TextIter -> String -> [SourceSearchFlags] -> Maybe TextIter -> IO (Maybe (TextIter, TextIter))-sourceIterBackwardSearch :: TextIter -> String -> [SourceSearchFlags] -> Maybe TextIter -> IO (Maybe (TextIter, TextIter))-sourceIterFindMatchingBracket :: TextIter -> IO Bool--module Graphics.UI.Gtk.SourceView.SourceLanguage-data SourceLanguage-instance GObjectClass SourceLanguage-instance SourceLanguageClass SourceLanguage-castToSourceLanguage :: GObjectClass obj => obj -> SourceLanguage-sourceLanguageGetName :: SourceLanguage -> IO String-sourceLanguageGetSection :: SourceLanguage -> IO String-sourceLanguageGetTags :: SourceLanguage -> IO [SourceTag]-sourceLanguageGetEscapeChar :: SourceLanguage -> IO Char-sourceLanguageGetMimeTypes :: SourceLanguage -> IO [String]-sourceLanguageSetMimeTypes :: SourceLanguage -> [String] -> IO ()-sourceLanguageGetStyleScheme :: SourceLanguage -> IO SourceStyleScheme-sourceLanguageSetStyleScheme :: SourceLanguage -> SourceStyleScheme -> IO ()-sourceLanguageGetTagStyle :: SourceLanguage -> String -> IO SourceTagStyle-sourceLanguageSetTagStyle :: SourceLanguage -> String -> SourceTagStyle -> IO ()-sourceLanguageGetTagDefaultStyle :: SourceLanguage -> String -> IO SourceTagStyle--module Graphics.UI.Gtk.SourceView.SourceView-data SourceView-instance ContainerClass SourceView-instance GObjectClass SourceView-instance ObjectClass SourceView-instance SourceViewClass SourceView-instance TextViewClass SourceView-instance WidgetClass SourceView-class TextViewClass o => SourceViewClass o-instance SourceViewClass SourceView-castToSourceView :: GObjectClass obj => obj -> SourceView-sourceViewNew :: IO SourceView-sourceViewNewWithBuffer :: SourceBuffer -> IO SourceView-sourceViewSetShowLineNumbers :: SourceViewClass sv => sv -> Bool -> IO ()-sourceViewGetShowLineNumbers :: SourceViewClass sv => sv -> IO Bool-sourceViewSetShowLineMarkers :: SourceViewClass sv => sv -> Bool -> IO ()-sourceViewGetShowLineMarkers :: SourceViewClass sv => sv -> IO Bool-sourceViewSetTabsWidth :: SourceViewClass sv => sv -> Int -> IO ()-sourceViewGetTabsWidth :: SourceViewClass sv => sv -> IO Int-sourceViewSetAutoIndent :: SourceViewClass sv => sv -> Bool -> IO ()-sourceViewGetAutoIndent :: SourceViewClass sv => sv -> IO Bool-sourceViewSetInsertSpacesInsteadOfTabs :: SourceViewClass sv => sv -> Bool -> IO ()-sourceViewGetInsertSpacesInsteadOfTabs :: SourceViewClass sv => sv -> IO Bool-sourceViewSetShowMargin :: SourceViewClass sv => sv -> Bool -> IO ()-sourceViewGetShowMargin :: SourceViewClass sv => sv -> IO Bool-sourceViewSetMargin :: SourceViewClass sv => sv -> Int -> IO ()-sourceViewGetMargin :: SourceViewClass sv => sv -> IO Int-sourceViewSetMarkerPixbuf :: SourceViewClass sv => sv -> String -> Pixbuf -> IO ()-sourceViewGetMarkerPixbuf :: SourceViewClass sv => sv -> String -> IO Pixbuf-sourceViewSetSmartHomeEnd :: SourceViewClass sv => sv -> Bool -> IO ()-sourceViewGetSmartHomeEnd :: SourceViewClass sv => sv -> IO Bool--module Graphics.UI.Gtk.SourceView--module Graphics.UI.Gtk.TreeList.CellRendererPixbuf-data CellRendererPixbuf-instance CellRendererClass CellRendererPixbuf-instance CellRendererPixbufClass CellRendererPixbuf-instance GObjectClass CellRendererPixbuf-instance ObjectClass CellRendererPixbuf-class CellRendererClass o => CellRendererPixbufClass o-instance CellRendererPixbufClass CellRendererPixbuf-castToCellRendererPixbuf :: GObjectClass obj => obj -> CellRendererPixbuf-toCellRendererPixbuf :: CellRendererPixbufClass o => o -> CellRendererPixbuf-cellRendererPixbufNew :: IO CellRendererPixbuf--module Graphics.UI.Gtk.TreeList.CellRendererText-data CellRendererText-instance CellRendererClass CellRendererText-instance CellRendererTextClass CellRendererText-instance GObjectClass CellRendererText-instance ObjectClass CellRendererText-class CellRendererClass o => CellRendererTextClass o-instance CellRendererTextClass CellRendererText-castToCellRendererText :: GObjectClass obj => obj -> CellRendererText-toCellRendererText :: CellRendererTextClass o => o -> CellRendererText-cellRendererTextNew :: IO CellRendererText-cellText :: Attribute CellRendererText String-cellMarkup :: Attribute CellRendererText String-cellBackground :: Attribute CellRendererText (Maybe String)-cellForeground :: Attribute CellRendererText (Maybe String)-cellEditable :: Attribute CellRendererText (Maybe Bool)-onEdited :: TreeModelClass tm => CellRendererText -> tm -> (TreeIter -> String -> IO ()) -> IO (ConnectId CellRendererText)-afterEdited :: TreeModelClass tm => CellRendererText -> tm -> (TreeIter -> String -> IO ()) -> IO (ConnectId CellRendererText)--module Graphics.UI.Gtk.TreeList.CellRendererToggle-data CellRendererToggle-instance CellRendererClass CellRendererToggle-instance CellRendererToggleClass CellRendererToggle-instance GObjectClass CellRendererToggle-instance ObjectClass CellRendererToggle-class CellRendererClass o => CellRendererToggleClass o-instance CellRendererToggleClass CellRendererToggle-castToCellRendererToggle :: GObjectClass obj => obj -> CellRendererToggle-toCellRendererToggle :: CellRendererToggleClass o => o -> CellRendererToggle-cellRendererToggleNew :: IO CellRendererToggle-cellRendererToggleGetRadio :: CellRendererToggleClass self => self -> IO Bool-cellRendererToggleSetRadio :: CellRendererToggleClass self => self -> Bool -> IO ()-cellRendererToggleGetActive :: CellRendererToggleClass self => self -> IO Bool-cellRendererToggleSetActive :: CellRendererToggleClass self => self -> Bool -> IO ()-cellActive :: Attribute CellRendererToggle Bool-cellRadio :: Attribute CellRendererToggle Bool--module Graphics.UI.Gtk.TreeList.CellView-data CellView-instance CellViewClass CellView-instance GObjectClass CellView-instance ObjectClass CellView-instance WidgetClass CellView-class WidgetClass o => CellViewClass o-instance CellViewClass CellView-castToCellView :: GObjectClass obj => obj -> CellView-toCellView :: CellViewClass o => o -> CellView-cellViewNew :: IO CellView-cellViewNewWithMarkup :: String -> IO CellView-cellViewNewWithPixbuf :: Pixbuf -> IO CellView-cellViewNewWithText :: String -> IO CellView-cellViewSetModel :: (CellViewClass self, TreeModelClass model) => self -> Maybe model -> IO ()-cellViewSetDisplayedRow :: CellViewClass self => self -> TreePath -> IO ()-cellViewGetDisplayedRow :: CellViewClass self => self -> IO (Maybe TreePath)-cellViewGetSizeOfRow :: CellViewClass self => self -> TreePath -> IO Requisition-cellViewSetBackgroundColor :: CellViewClass self => self -> Color -> IO ()-cellViewGetCellRenderers :: CellViewClass self => self -> IO [CellRenderer]-cellViewDisplayedRow :: CellViewClass self => ReadWriteAttr self (Maybe TreePath) TreePath--module Graphics.UI.Gtk.TreeList.IconView-data IconView-instance ContainerClass IconView-instance GObjectClass IconView-instance IconViewClass IconView-instance ObjectClass IconView-instance WidgetClass IconView-class ContainerClass o => IconViewClass o-instance IconViewClass IconView-castToIconView :: GObjectClass obj => obj -> IconView-toIconView :: IconViewClass o => o -> IconView-iconViewNew :: IO IconView-iconViewNewWithModel :: TreeModelClass model => model -> IO IconView-iconViewSetModel :: (IconViewClass self, TreeModelClass model) => self -> Maybe model -> IO ()-iconViewGetModel :: IconViewClass self => self -> IO (Maybe TreeModel)-iconViewSetTextColumn :: IconViewClass self => self -> Int -> IO ()-iconViewGetTextColumn :: IconViewClass self => self -> IO Int-iconViewSetMarkupColumn :: IconViewClass self => self -> Int -> IO ()-iconViewGetMarkupColumn :: IconViewClass self => self -> IO Int-iconViewSetPixbufColumn :: IconViewClass self => self -> Int -> IO ()-iconViewGetPixbufColumn :: IconViewClass self => self -> IO Int-iconViewGetPathAtPos :: IconViewClass self => self -> Int -> Int -> IO TreePath-iconViewSelectedForeach :: IconViewClass self => self -> (TreePath -> IO ()) -> IO ()-iconViewSetSelectionMode :: IconViewClass self => self -> SelectionMode -> IO ()-iconViewGetSelectionMode :: IconViewClass self => self -> IO SelectionMode-iconViewSetOrientation :: IconViewClass self => self -> Orientation -> IO ()-iconViewGetOrientation :: IconViewClass self => self -> IO Orientation-iconViewSetColumns :: IconViewClass self => self -> Int -> IO ()-iconViewGetColumns :: IconViewClass self => self -> IO Int-iconViewSetItemWidth :: IconViewClass self => self -> Int -> IO ()-iconViewGetItemWidth :: IconViewClass self => self -> IO Int-iconViewSetSpacing :: IconViewClass self => self -> Int -> IO ()-iconViewGetSpacing :: IconViewClass self => self -> IO Int-iconViewSetRowSpacing :: IconViewClass self => self -> Int -> IO ()-iconViewGetRowSpacing :: IconViewClass self => self -> IO Int-iconViewSetColumnSpacing :: IconViewClass self => self -> Int -> IO ()-iconViewGetColumnSpacing :: IconViewClass self => self -> IO Int-iconViewSetMargin :: IconViewClass self => self -> Int -> IO ()-iconViewGetMargin :: IconViewClass self => self -> IO Int-iconViewSelectPath :: IconViewClass self => self -> TreePath -> IO ()-iconViewUnselectPath :: IconViewClass self => self -> TreePath -> IO ()-iconViewPathIsSelected :: IconViewClass self => self -> TreePath -> IO Bool-iconViewGetSelectedItems :: IconViewClass self => self -> IO [TreePath]-iconViewSelectAll :: IconViewClass self => self -> IO ()-iconViewUnselectAll :: IconViewClass self => self -> IO ()-iconViewItemActivated :: IconViewClass self => self -> TreePath -> IO ()-iconViewSelectionMode :: IconViewClass self => Attr self SelectionMode-iconViewPixbufColumn :: IconViewClass self => Attr self Int-iconViewTextColumn :: IconViewClass self => Attr self Int-iconViewMarkupColumn :: IconViewClass self => Attr self Int-iconViewModel :: (IconViewClass self, TreeModelClass model) => ReadWriteAttr self (Maybe TreeModel) (Maybe model)-iconViewColumns :: IconViewClass self => Attr self Int-iconViewItemWidth :: IconViewClass self => Attr self Int-iconViewSpacing :: IconViewClass self => Attr self Int-iconViewRowSpacing :: IconViewClass self => Attr self Int-iconViewColumnSpacing :: IconViewClass self => Attr self Int-iconViewMargin :: IconViewClass self => Attr self Int-iconViewOrientation :: IconViewClass self => Attr self Orientation-onSelectAll :: IconViewClass self => self -> IO () -> IO (ConnectId self)-afterSelectAll :: IconViewClass self => self -> IO () -> IO (ConnectId self)-onUnselectAll :: IconViewClass self => self -> IO () -> IO (ConnectId self)-afterUnselectAll :: IconViewClass self => self -> IO () -> IO (ConnectId self)-onSelectCursorItem :: IconViewClass self => self -> IO () -> IO (ConnectId self)-afterSelectCursorItem :: IconViewClass self => self -> IO () -> IO (ConnectId self)-onToggleCursorItem :: IconViewClass self => self -> IO () -> IO (ConnectId self)-afterToggleCursorItem :: IconViewClass self => self -> IO () -> IO (ConnectId self)-onActivateCursorItem :: IconViewClass self => self -> IO Bool -> IO (ConnectId self)-afterActivateCursorItem :: IconViewClass self => self -> IO Bool -> IO (ConnectId self)--module Graphics.UI.Gtk.TreeList.TreeSelection-data TreeSelection-instance GObjectClass TreeSelection-instance TreeSelectionClass TreeSelection-class GObjectClass o => TreeSelectionClass o-instance TreeSelectionClass TreeSelection-castToTreeSelection :: GObjectClass obj => obj -> TreeSelection-toTreeSelection :: TreeSelectionClass o => o -> TreeSelection-data SelectionMode-SelectionNone :: SelectionMode-SelectionSingle :: SelectionMode-SelectionBrowse :: SelectionMode-SelectionMultiple :: SelectionMode-instance Enum SelectionMode-type TreeSelectionCB = TreePath -> IO Bool-type TreeSelectionForeachCB = TreeIter -> IO ()-treeSelectionSetMode :: TreeSelectionClass self => self -> SelectionMode -> IO ()-treeSelectionGetMode :: TreeSelectionClass self => self -> IO SelectionMode-treeSelectionSetSelectFunction :: TreeSelectionClass self => self -> TreeSelectionCB -> IO ()-treeSelectionGetTreeView :: TreeSelectionClass self => self -> IO TreeView-treeSelectionGetSelected :: TreeSelectionClass self => self -> IO (Maybe TreeIter)-treeSelectionSelectedForeach :: TreeSelectionClass self => self -> TreeSelectionForeachCB -> IO ()-treeSelectionGetSelectedRows :: TreeSelectionClass self => self -> IO [TreePath]-treeSelectionCountSelectedRows :: TreeSelectionClass self => self -> IO Int-treeSelectionSelectPath :: TreeSelectionClass self => self -> TreePath -> IO ()-treeSelectionUnselectPath :: TreeSelectionClass self => self -> TreePath -> IO ()-treeSelectionPathIsSelected :: TreeSelectionClass self => self -> TreePath -> IO Bool-treeSelectionSelectIter :: TreeSelectionClass self => self -> TreeIter -> IO ()-treeSelectionUnselectIter :: TreeSelectionClass self => self -> TreeIter -> IO ()-treeSelectionIterIsSelected :: TreeSelectionClass self => self -> TreeIter -> IO Bool-treeSelectionSelectAll :: TreeSelectionClass self => self -> IO ()-treeSelectionUnselectAll :: TreeSelectionClass self => self -> IO ()-treeSelectionSelectRange :: TreeSelectionClass self => self -> TreePath -> TreePath -> IO ()-treeSelectionUnselectRange :: TreeSelectionClass self => self -> TreePath -> TreePath -> IO ()-treeSelectionMode :: TreeSelectionClass self => Attr self SelectionMode-onSelectionChanged :: TreeSelectionClass self => self -> IO () -> IO (ConnectId self)-afterSelectionChanged :: TreeSelectionClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.TreeList.TreeViewColumn-data TreeViewColumn-instance GObjectClass TreeViewColumn-instance ObjectClass TreeViewColumn-instance TreeViewColumnClass TreeViewColumn-class ObjectClass o => TreeViewColumnClass o-instance TreeViewColumnClass TreeViewColumn-castToTreeViewColumn :: GObjectClass obj => obj -> TreeViewColumn-toTreeViewColumn :: TreeViewColumnClass o => o -> TreeViewColumn-treeViewColumnNew :: IO TreeViewColumn-treeViewColumnNewWithAttributes :: CellRendererClass cr => String -> cr -> [(String, Int)] -> IO TreeViewColumn-treeViewColumnPackStart :: CellRendererClass cell => TreeViewColumn -> cell -> Bool -> IO ()-treeViewColumnPackEnd :: CellRendererClass cell => TreeViewColumn -> cell -> Bool -> IO ()-treeViewColumnClear :: TreeViewColumn -> IO ()-treeViewColumnGetCellRenderers :: TreeViewColumn -> IO [CellRenderer]-treeViewColumnAddAttribute :: CellRendererClass cellRenderer => TreeViewColumn -> cellRenderer -> String -> Int -> IO ()-treeViewColumnAddAttributes :: CellRendererClass cr => TreeViewColumn -> cr -> [(String, Int)] -> IO ()-treeViewColumnSetAttributes :: CellRendererClass cr => TreeViewColumn -> cr -> [(String, Int)] -> IO ()-treeViewColumnClearAttributes :: CellRendererClass cellRenderer => TreeViewColumn -> cellRenderer -> IO ()-treeViewColumnSetSpacing :: TreeViewColumn -> Int -> IO ()-treeViewColumnGetSpacing :: TreeViewColumn -> IO Int-treeViewColumnSetVisible :: TreeViewColumn -> Bool -> IO ()-treeViewColumnGetVisible :: TreeViewColumn -> IO Bool-treeViewColumnSetResizable :: TreeViewColumn -> Bool -> IO ()-treeViewColumnGetResizable :: TreeViewColumn -> IO Bool-data TreeViewColumnSizing-TreeViewColumnGrowOnly :: TreeViewColumnSizing-TreeViewColumnAutosize :: TreeViewColumnSizing-TreeViewColumnFixed :: TreeViewColumnSizing-instance Enum TreeViewColumnSizing-instance Eq TreeViewColumnSizing-treeViewColumnSetSizing :: TreeViewColumn -> TreeViewColumnSizing -> IO ()-treeViewColumnGetSizing :: TreeViewColumn -> IO TreeViewColumnSizing-treeViewColumnGetWidth :: TreeViewColumn -> IO Int-treeViewColumnSetFixedWidth :: TreeViewColumn -> Int -> IO ()-treeViewColumnGetFixedWidth :: TreeViewColumn -> IO Int-treeViewColumnSetMinWidth :: TreeViewColumn -> Int -> IO ()-treeViewColumnGetMinWidth :: TreeViewColumn -> IO Int-treeViewColumnSetMaxWidth :: TreeViewColumn -> Int -> IO ()-treeViewColumnGetMaxWidth :: TreeViewColumn -> IO Int-treeViewColumnClicked :: TreeViewColumn -> IO ()-treeViewColumnSetTitle :: TreeViewColumn -> String -> IO ()-treeViewColumnGetTitle :: TreeViewColumn -> IO (Maybe String)-treeViewColumnSetClickable :: TreeViewColumn -> Bool -> IO ()-treeViewColumnGetClickable :: TreeViewColumn -> IO Bool-treeViewColumnSetWidget :: WidgetClass widget => TreeViewColumn -> widget -> IO ()-treeViewColumnGetWidget :: TreeViewColumn -> IO Widget-treeViewColumnSetAlignment :: TreeViewColumn -> Float -> IO ()-treeViewColumnGetAlignment :: TreeViewColumn -> IO Float-treeViewColumnSetReorderable :: TreeViewColumn -> Bool -> IO ()-treeViewColumnGetReorderable :: TreeViewColumn -> IO Bool-treeViewColumnSetSortColumnId :: TreeViewColumn -> Int -> IO ()-treeViewColumnGetSortColumnId :: TreeViewColumn -> IO Int-treeViewColumnSetSortIndicator :: TreeViewColumn -> Bool -> IO ()-treeViewColumnGetSortIndicator :: TreeViewColumn -> IO Bool-treeViewColumnSetSortOrder :: TreeViewColumn -> SortType -> IO ()-treeViewColumnGetSortOrder :: TreeViewColumn -> IO SortType-data SortType-SortAscending :: SortType-SortDescending :: SortType-instance Enum SortType-instance Eq SortType-treeViewColumnVisible :: Attr TreeViewColumn Bool-treeViewColumnResizable :: Attr TreeViewColumn Bool-treeViewColumnWidth :: ReadAttr TreeViewColumn Int-treeViewColumnSpacing :: Attr TreeViewColumn Int-treeViewColumnSizing :: Attr TreeViewColumn TreeViewColumnSizing-treeViewColumnFixedWidth :: Attr TreeViewColumn Int-treeViewColumnMinWidth :: Attr TreeViewColumn Int-treeViewColumnMaxWidth :: Attr TreeViewColumn Int-treeViewColumnTitle :: ReadWriteAttr TreeViewColumn (Maybe String) String-treeViewColumnClickable :: Attr TreeViewColumn Bool-treeViewColumnWidget :: WidgetClass widget => ReadWriteAttr TreeViewColumn Widget widget-treeViewColumnAlignment :: Attr TreeViewColumn Float-treeViewColumnReorderable :: Attr TreeViewColumn Bool-treeViewColumnSortIndicator :: Attr TreeViewColumn Bool-treeViewColumnSortOrder :: Attr TreeViewColumn SortType-treeViewColumnSortColumnId :: Attr TreeViewColumn Int-onColClicked :: TreeViewColumnClass self => self -> IO () -> IO (ConnectId self)-afterColClicked :: TreeViewColumnClass self => self -> IO () -> IO (ConnectId self)--module Graphics.UI.Gtk.TreeList.TreeView-data TreeView-instance ContainerClass TreeView-instance GObjectClass TreeView-instance ObjectClass TreeView-instance TreeViewClass TreeView-instance WidgetClass TreeView-class ContainerClass o => TreeViewClass o-instance TreeViewClass TreeView-castToTreeView :: GObjectClass obj => obj -> TreeView-toTreeView :: TreeViewClass o => o -> TreeView-type Point = (Int, Int)-treeViewNew :: IO TreeView-treeViewNewWithModel :: TreeModelClass model => model -> IO TreeView-treeViewGetModel :: TreeViewClass self => self -> IO (Maybe TreeModel)-treeViewSetModel :: (TreeViewClass self, TreeModelClass model) => self -> model -> IO ()-treeViewGetSelection :: TreeViewClass self => self -> IO TreeSelection-treeViewGetHAdjustment :: TreeViewClass self => self -> IO (Maybe Adjustment)-treeViewSetHAdjustment :: TreeViewClass self => self -> Maybe Adjustment -> IO ()-treeViewGetVAdjustment :: TreeViewClass self => self -> IO (Maybe Adjustment)-treeViewSetVAdjustment :: TreeViewClass self => self -> Maybe Adjustment -> IO ()-treeViewGetHeadersVisible :: TreeViewClass self => self -> IO Bool-treeViewSetHeadersVisible :: TreeViewClass self => self -> Bool -> IO ()-treeViewColumnsAutosize :: TreeViewClass self => self -> IO ()-treeViewSetHeadersClickable :: TreeViewClass self => self -> Bool -> IO ()-treeViewGetRulesHint :: TreeViewClass self => self -> IO Bool-treeViewSetRulesHint :: TreeViewClass self => self -> Bool -> IO ()-treeViewAppendColumn :: TreeViewClass self => self -> TreeViewColumn -> IO Int-treeViewRemoveColumn :: TreeViewClass self => self -> TreeViewColumn -> IO Int-treeViewInsertColumn :: TreeViewClass self => self -> TreeViewColumn -> Int -> IO Int-treeViewInsertColumnWithAttributes :: (TreeViewClass self, CellRendererClass cr) => self -> Int -> String -> cr -> [(String, Int)] -> IO ()-treeViewGetColumn :: TreeViewClass self => self -> Int -> IO (Maybe TreeViewColumn)-treeViewGetColumns :: TreeViewClass self => self -> IO [TreeViewColumn]-treeViewMoveColumnAfter :: TreeViewClass self => self -> TreeViewColumn -> TreeViewColumn -> IO ()-treeViewMoveColumnFirst :: TreeViewClass self => self -> TreeViewColumn -> IO ()-treeViewSetExpanderColumn :: TreeViewClass self => self -> Maybe TreeViewColumn -> IO ()-treeViewGetExpanderColumn :: TreeViewClass self => self -> IO TreeViewColumn-treeViewSetColumnDragFunction :: TreeViewClass self => self -> Maybe (TreeViewColumn -> Maybe TreeViewColumn -> Maybe TreeViewColumn -> IO Bool) -> IO ()-treeViewScrollToPoint :: TreeViewClass self => self -> Int -> Int -> IO ()-treeViewScrollToCell :: TreeViewClass self => self -> TreePath -> TreeViewColumn -> Maybe (Float, Float) -> IO ()-treeViewSetCursor :: TreeViewClass self => self -> TreePath -> Maybe (TreeViewColumn, Bool) -> IO ()-treeViewSetCursorOnCell :: (TreeViewClass self, CellRendererClass focusCell) => self -> TreePath -> TreeViewColumn -> focusCell -> Bool -> IO ()-treeViewGetCursor :: TreeViewClass self => self -> IO (TreePath, Maybe TreeViewColumn)-treeViewRowActivated :: TreeViewClass self => self -> TreePath -> TreeViewColumn -> IO ()-treeViewExpandAll :: TreeViewClass self => self -> IO ()-treeViewCollapseAll :: TreeViewClass self => self -> IO ()-treeViewExpandToPath :: TreeViewClass self => self -> TreePath -> IO ()-treeViewExpandRow :: TreeViewClass self => self -> TreePath -> Bool -> IO Bool-treeViewCollapseRow :: TreeViewClass self => self -> TreePath -> IO Bool-treeViewMapExpandedRows :: TreeViewClass self => self -> (TreePath -> IO ()) -> IO ()-treeViewRowExpanded :: TreeViewClass self => self -> TreePath -> IO Bool-treeViewGetReorderable :: TreeViewClass self => self -> IO Bool-treeViewSetReorderable :: TreeViewClass self => self -> Bool -> IO ()-treeViewGetPathAtPos :: TreeViewClass self => self -> Point -> IO (Maybe (TreePath, TreeViewColumn, Point))-treeViewGetCellArea :: TreeViewClass self => self -> Maybe TreePath -> TreeViewColumn -> IO Rectangle-treeViewGetBackgroundArea :: TreeViewClass self => self -> Maybe TreePath -> TreeViewColumn -> IO Rectangle-treeViewGetVisibleRect :: TreeViewClass self => self -> IO Rectangle-treeViewWidgetToTreeCoords :: TreeViewClass self => self -> Point -> IO Point-treeViewTreeToWidgetCoords :: TreeViewClass self => self -> Point -> IO Point-treeViewCreateRowDragIcon :: TreeViewClass self => self -> TreePath -> IO Pixmap-treeViewGetEnableSearch :: TreeViewClass self => self -> IO Bool-treeViewSetEnableSearch :: TreeViewClass self => self -> Bool -> IO ()-treeViewGetSearchColumn :: TreeViewClass self => self -> IO Int-treeViewSetSearchColumn :: TreeViewClass self => self -> Int -> IO ()-treeViewSetSearchEqualFunc :: TreeViewClass self => self -> (Int -> String -> TreeIter -> IO Bool) -> IO ()-treeViewGetFixedHeightMode :: TreeViewClass self => self -> IO Bool-treeViewSetFixedHeightMode :: TreeViewClass self => self -> Bool -> IO ()-treeViewGetHoverSelection :: TreeViewClass self => self -> IO Bool-treeViewSetHoverSelection :: TreeViewClass self => self -> Bool -> IO ()-treeViewGetHoverExpand :: TreeViewClass self => self -> IO Bool-treeViewSetHoverExpand :: TreeViewClass self => self -> Bool -> IO ()-treeViewModel :: (TreeViewClass self, TreeModelClass model) => ReadWriteAttr self (Maybe TreeModel) model-treeViewHAdjustment :: TreeViewClass self => Attr self (Maybe Adjustment)-treeViewVAdjustment :: TreeViewClass self => Attr self (Maybe Adjustment)-treeViewHeadersVisible :: TreeViewClass self => Attr self Bool-treeViewHeadersClickable :: TreeViewClass self => Attr self Bool-treeViewExpanderColumn :: TreeViewClass self => ReadWriteAttr self TreeViewColumn (Maybe TreeViewColumn)-treeViewReorderable :: TreeViewClass self => Attr self Bool-treeViewRulesHint :: TreeViewClass self => Attr self Bool-treeViewEnableSearch :: TreeViewClass self => Attr self Bool-treeViewSearchColumn :: TreeViewClass self => Attr self Int-treeViewFixedHeightMode :: TreeViewClass self => Attr self Bool-treeViewHoverSelection :: TreeViewClass self => Attr self Bool-treeViewHoverExpand :: TreeViewClass self => Attr self Bool-onColumnsChanged :: TreeViewClass self => self -> IO () -> IO (ConnectId self)-afterColumnsChanged :: TreeViewClass self => self -> IO () -> IO (ConnectId self)-onCursorChanged :: TreeViewClass self => self -> IO () -> IO (ConnectId self)-afterCursorChanged :: TreeViewClass self => self -> IO () -> IO (ConnectId self)-onRowActivated :: TreeViewClass self => self -> (TreePath -> TreeViewColumn -> IO ()) -> IO (ConnectId self)-afterRowActivated :: TreeViewClass self => self -> (TreePath -> TreeViewColumn -> IO ()) -> IO (ConnectId self)-onRowCollapsed :: TreeViewClass self => self -> (TreeIter -> TreePath -> IO ()) -> IO (ConnectId self)-afterRowCollapsed :: TreeViewClass self => self -> (TreeIter -> TreePath -> IO ()) -> IO (ConnectId self)-onRowExpanded :: TreeViewClass self => self -> (TreeIter -> TreePath -> IO ()) -> IO (ConnectId self)-afterRowExpanded :: TreeViewClass self => self -> (TreeIter -> TreePath -> IO ()) -> IO (ConnectId self)-onStartInteractiveSearch :: TreeViewClass self => self -> IO () -> IO (ConnectId self)-afterStartInteractiveSearch :: TreeViewClass self => self -> IO () -> IO (ConnectId self)-onTestCollapseRow :: TreeViewClass self => self -> (TreeIter -> TreePath -> IO Bool) -> IO (ConnectId self)-afterTestCollapseRow :: TreeViewClass self => self -> (TreeIter -> TreePath -> IO Bool) -> IO (ConnectId self)-onTestExpandRow :: TreeViewClass self => self -> (TreeIter -> TreePath -> IO Bool) -> IO (ConnectId self)-afterTestExpandRow :: TreeViewClass self => self -> (TreeIter -> TreePath -> IO Bool) -> IO (ConnectId self)--module Graphics.UI.Gtk.Windows.AboutDialog-data AboutDialog-instance AboutDialogClass AboutDialog-instance BinClass AboutDialog-instance ContainerClass AboutDialog-instance DialogClass AboutDialog-instance GObjectClass AboutDialog-instance ObjectClass AboutDialog-instance WidgetClass AboutDialog-instance WindowClass AboutDialog-class DialogClass o => AboutDialogClass o-instance AboutDialogClass AboutDialog-castToAboutDialog :: GObjectClass obj => obj -> AboutDialog-toAboutDialog :: AboutDialogClass o => o -> AboutDialog-aboutDialogNew :: IO AboutDialog-aboutDialogGetName :: AboutDialogClass self => self -> IO String-aboutDialogSetName :: AboutDialogClass self => self -> String -> IO ()-aboutDialogGetVersion :: AboutDialogClass self => self -> IO String-aboutDialogSetVersion :: AboutDialogClass self => self -> String -> IO ()-aboutDialogGetCopyright :: AboutDialogClass self => self -> IO String-aboutDialogSetCopyright :: AboutDialogClass self => self -> String -> IO ()-aboutDialogGetComments :: AboutDialogClass self => self -> IO String-aboutDialogSetComments :: AboutDialogClass self => self -> String -> IO ()-aboutDialogGetLicense :: AboutDialogClass self => self -> IO (Maybe String)-aboutDialogSetLicense :: AboutDialogClass self => self -> Maybe String -> IO ()-aboutDialogGetWebsite :: AboutDialogClass self => self -> IO String-aboutDialogSetWebsite :: AboutDialogClass self => self -> String -> IO ()-aboutDialogGetWebsiteLabel :: AboutDialogClass self => self -> IO String-aboutDialogSetWebsiteLabel :: AboutDialogClass self => self -> String -> IO ()-aboutDialogSetAuthors :: AboutDialogClass self => self -> [String] -> IO ()-aboutDialogGetAuthors :: AboutDialogClass self => self -> IO [String]-aboutDialogSetArtists :: AboutDialogClass self => self -> [String] -> IO ()-aboutDialogGetArtists :: AboutDialogClass self => self -> IO [String]-aboutDialogSetDocumenters :: AboutDialogClass self => self -> [String] -> IO ()-aboutDialogGetDocumenters :: AboutDialogClass self => self -> IO [String]-aboutDialogGetTranslatorCredits :: AboutDialogClass self => self -> IO String-aboutDialogSetTranslatorCredits :: AboutDialogClass self => self -> String -> IO ()-aboutDialogGetLogo :: AboutDialogClass self => self -> IO Pixbuf-aboutDialogSetLogo :: AboutDialogClass self => self -> Maybe Pixbuf -> IO ()-aboutDialogGetLogoIconName :: AboutDialogClass self => self -> IO String-aboutDialogSetLogoIconName :: AboutDialogClass self => self -> Maybe String -> IO ()-aboutDialogSetEmailHook :: (String -> IO ()) -> IO ()-aboutDialogSetUrlHook :: (String -> IO ()) -> IO ()-aboutDialogGetWrapLicense :: AboutDialogClass self => self -> IO Bool-aboutDialogSetWrapLicense :: AboutDialogClass self => self -> Bool -> IO ()-aboutDialogName :: AboutDialogClass self => Attr self String-aboutDialogVersion :: AboutDialogClass self => Attr self String-aboutDialogCopyright :: AboutDialogClass self => Attr self String-aboutDialogComments :: AboutDialogClass self => Attr self String-aboutDialogLicense :: AboutDialogClass self => Attr self (Maybe String)-aboutDialogWebsite :: AboutDialogClass self => Attr self String-aboutDialogWebsiteLabel :: AboutDialogClass self => Attr self String-aboutDialogAuthors :: AboutDialogClass self => Attr self [String]-aboutDialogDocumenters :: AboutDialogClass self => Attr self [String]-aboutDialogArtists :: AboutDialogClass self => Attr self [String]-aboutDialogTranslatorCredits :: AboutDialogClass self => Attr self String-aboutDialogLogo :: AboutDialogClass self => ReadWriteAttr self Pixbuf (Maybe Pixbuf)-aboutDialogLogoIconName :: AboutDialogClass self => ReadWriteAttr self String (Maybe String)-aboutDialogWrapLicense :: AboutDialogClass self => Attr self Bool--module Graphics.UI.Gtk.Windows.Dialog-data Dialog-instance BinClass Dialog-instance ContainerClass Dialog-instance DialogClass Dialog-instance GObjectClass Dialog-instance ObjectClass Dialog-instance WidgetClass Dialog-instance WindowClass Dialog-class WindowClass o => DialogClass o-instance DialogClass AboutDialog-instance DialogClass ColorSelectionDialog-instance DialogClass Dialog-instance DialogClass FileChooserDialog-instance DialogClass FileSelection-instance DialogClass FontSelectionDialog-instance DialogClass InputDialog-instance DialogClass MessageDialog-castToDialog :: GObjectClass obj => obj -> Dialog-toDialog :: DialogClass o => o -> Dialog-dialogNew :: IO Dialog-dialogGetUpper :: DialogClass dc => dc -> IO VBox-dialogGetActionArea :: DialogClass dc => dc -> IO HBox-dialogRun :: DialogClass self => self -> IO ResponseId-dialogResponse :: DialogClass self => self -> ResponseId -> IO ()-data ResponseId-ResponseNone :: ResponseId-ResponseReject :: ResponseId-ResponseAccept :: ResponseId-ResponseDeleteEvent :: ResponseId-ResponseOk :: ResponseId-ResponseCancel :: ResponseId-ResponseClose :: ResponseId-ResponseYes :: ResponseId-ResponseNo :: ResponseId-ResponseApply :: ResponseId-ResponseHelp :: ResponseId-ResponseUser :: Int -> ResponseId-instance Show ResponseId-dialogAddButton :: DialogClass self => self -> String -> ResponseId -> IO Button-dialogAddActionWidget :: (DialogClass self, WidgetClass child) => self -> child -> ResponseId -> IO ()-dialogGetHasSeparator :: DialogClass self => self -> IO Bool-dialogSetDefaultResponse :: DialogClass self => self -> ResponseId -> IO ()-dialogSetHasSeparator :: DialogClass self => self -> Bool -> IO ()-dialogSetResponseSensitive :: DialogClass self => self -> ResponseId -> Bool -> IO ()-dialogHasSeparator :: DialogClass self => Attr self Bool-onResponse :: DialogClass self => self -> (ResponseId -> IO ()) -> IO (ConnectId self)-afterResponse :: DialogClass self => self -> (ResponseId -> IO ()) -> IO (ConnectId self)--module Graphics.UI.Gtk.Windows.Window-data Window-instance BinClass Window-instance ContainerClass Window-instance GObjectClass Window-instance ObjectClass Window-instance WidgetClass Window-instance WindowClass Window-class BinClass o => WindowClass o-instance WindowClass AboutDialog-instance WindowClass ColorSelectionDialog-instance WindowClass Dialog-instance WindowClass FileChooserDialog-instance WindowClass FileSelection-instance WindowClass FontSelectionDialog-instance WindowClass InputDialog-instance WindowClass MessageDialog-instance WindowClass Plug-instance WindowClass Window-castToWindow :: GObjectClass obj => obj -> Window-toWindow :: WindowClass o => o -> Window-data WindowType-WindowToplevel :: WindowType-WindowPopup :: WindowType-instance Enum WindowType-instance Eq WindowType-data WindowEdge-WindowEdgeNorthWest :: WindowEdge-WindowEdgeNorth :: WindowEdge-WindowEdgeNorthEast :: WindowEdge-WindowEdgeWest :: WindowEdge-WindowEdgeEast :: WindowEdge-WindowEdgeSouthWest :: WindowEdge-WindowEdgeSouth :: WindowEdge-WindowEdgeSouthEast :: WindowEdge-instance Enum WindowEdge-data WindowTypeHint-WindowTypeHintNormal :: WindowTypeHint-WindowTypeHintDialog :: WindowTypeHint-WindowTypeHintMenu :: WindowTypeHint-WindowTypeHintToolbar :: WindowTypeHint-WindowTypeHintSplashscreen :: WindowTypeHint-WindowTypeHintUtility :: WindowTypeHint-WindowTypeHintDock :: WindowTypeHint-WindowTypeHintDesktop :: WindowTypeHint-instance Enum WindowTypeHint-data Gravity-GravityNorthWest :: Gravity-GravityNorth :: Gravity-GravityNorthEast :: Gravity-GravityWest :: Gravity-GravityCenter :: Gravity-GravityEast :: Gravity-GravitySouthWest :: Gravity-GravitySouth :: Gravity-GravitySouthEast :: Gravity-GravityStatic :: Gravity-instance Enum Gravity-windowNew :: IO Window-windowSetTitle :: WindowClass self => self -> String -> IO ()-windowGetTitle :: WindowClass self => self -> IO String-windowSetResizable :: WindowClass self => self -> Bool -> IO ()-windowGetResizable :: WindowClass self => self -> IO Bool-windowActivateFocus :: WindowClass self => self -> IO Bool-windowActivateDefault :: WindowClass self => self -> IO Bool-windowSetModal :: WindowClass self => self -> Bool -> IO ()-windowGetModal :: WindowClass self => self -> IO Bool-windowSetDefaultSize :: WindowClass self => self -> Int -> Int -> IO ()-windowGetDefaultSize :: WindowClass self => self -> IO (Int, Int)-windowSetPolicy :: WindowClass self => self -> Bool -> Bool -> Bool -> IO ()-windowSetPosition :: WindowClass self => self -> WindowPosition -> IO ()-data WindowPosition-WinPosNone :: WindowPosition-WinPosCenter :: WindowPosition-WinPosMouse :: WindowPosition-WinPosCenterAlways :: WindowPosition-WinPosCenterOnParent :: WindowPosition-instance Enum WindowPosition-instance Eq WindowPosition-windowSetTransientFor :: (WindowClass self, WindowClass parent) => self -> parent -> IO ()-windowGetTransientFor :: WindowClass self => self -> IO (Maybe Window)-windowSetDestroyWithParent :: WindowClass self => self -> Bool -> IO ()-windowGetDestroyWithParent :: WindowClass self => self -> IO Bool-windowIsActive :: WindowClass self => self -> IO Bool-windowHasToplevelFocus :: WindowClass self => self -> IO Bool-windowPresent :: WindowClass self => self -> IO ()-windowDeiconify :: WindowClass self => self -> IO ()-windowIconify :: WindowClass self => self -> IO ()-windowMaximize :: WindowClass self => self -> IO ()-windowUnmaximize :: WindowClass self => self -> IO ()-windowFullscreen :: WindowClass self => self -> IO ()-windowUnfullscreen :: WindowClass self => self -> IO ()-windowSetKeepAbove :: WindowClass self => self -> Bool -> IO ()-windowSetKeepBelow :: WindowClass self => self -> Bool -> IO ()-windowSetSkipTaskbarHint :: WindowClass self => self -> Bool -> IO ()-windowGetSkipTaskbarHint :: WindowClass self => self -> IO Bool-windowSetSkipPagerHint :: WindowClass self => self -> Bool -> IO ()-windowGetSkipPagerHint :: WindowClass self => self -> IO Bool-windowSetAcceptFocus :: WindowClass self => self -> Bool -> IO ()-windowGetAcceptFocus :: WindowClass self => self -> IO Bool-windowSetFocusOnMap :: WindowClass self => self -> Bool -> IO ()-windowGetFocusOnMap :: WindowClass self => self -> IO Bool-windowSetDecorated :: WindowClass self => self -> Bool -> IO ()-windowGetDecorated :: WindowClass self => self -> IO Bool-windowSetFrameDimensions :: WindowClass self => self -> Int -> Int -> Int -> Int -> IO ()-windowSetRole :: WindowClass self => self -> String -> IO ()-windowGetRole :: WindowClass self => self -> IO (Maybe String)-windowStick :: WindowClass self => self -> IO ()-windowUnstick :: WindowClass self => self -> IO ()-windowAddAccelGroup :: WindowClass self => self -> AccelGroup -> IO ()-windowRemoveAccelGroup :: WindowClass self => self -> AccelGroup -> IO ()-windowSetIcon :: WindowClass self => self -> Pixbuf -> IO ()-windowSetIconName :: WindowClass self => self -> String -> IO ()-windowGetIconName :: WindowClass self => self -> IO String-windowSetDefaultIconName :: String -> IO ()-windowSetGravity :: WindowClass self => self -> Gravity -> IO ()-windowGetGravity :: WindowClass self => self -> IO Gravity-windowSetScreen :: WindowClass self => self -> Screen -> IO ()-windowGetScreen :: WindowClass self => self -> IO Screen-windowBeginResizeDrag :: WindowClass self => self -> WindowEdge -> Int -> Int -> Int -> Word32 -> IO ()-windowBeginMoveDrag :: WindowClass self => self -> Int -> Int -> Int -> Word32 -> IO ()-windowSetTypeHint :: WindowClass self => self -> WindowTypeHint -> IO ()-windowGetTypeHint :: WindowClass self => self -> IO WindowTypeHint-windowGetIcon :: WindowClass self => self -> IO Pixbuf-windowGetPosition :: WindowClass self => self -> IO (Int, Int)-windowGetSize :: WindowClass self => self -> IO (Int, Int)-windowMove :: WindowClass self => self -> Int -> Int -> IO ()-windowResize :: WindowClass self => self -> Int -> Int -> IO ()-windowSetIconFromFile :: WindowClass self => self -> FilePath -> IO Bool-windowSetAutoStartupNotification :: Bool -> IO ()-windowPresentWithTime :: WindowClass self => self -> Word32 -> IO ()-windowSetUrgencyHint :: WindowClass self => self -> Bool -> IO ()-windowGetUrgencyHint :: WindowClass self => self -> IO Bool-windowTitle :: WindowClass self => Attr self String-windowType :: WindowClass self => Attr self WindowType-windowAllowShrink :: WindowClass self => Attr self Bool-windowAllowGrow :: WindowClass self => Attr self Bool-windowResizable :: WindowClass self => Attr self Bool-windowModal :: WindowClass self => Attr self Bool-windowWindowPosition :: WindowClass self => Attr self WindowPosition-windowDefaultWidth :: WindowClass self => Attr self Int-windowDefaultHeight :: WindowClass self => Attr self Int-windowDestroyWithParent :: WindowClass self => Attr self Bool-windowIcon :: WindowClass self => Attr self Pixbuf-windowScreen :: WindowClass self => Attr self Screen-windowTypeHint :: WindowClass self => Attr self WindowTypeHint-windowSkipTaskbarHint :: WindowClass self => Attr self Bool-windowSkipPagerHint :: WindowClass self => Attr self Bool-windowUrgencyHint :: WindowClass self => Attr self Bool-windowAcceptFocus :: WindowClass self => Attr self Bool-windowFocusOnMap :: WindowClass self => Attr self Bool-windowDecorated :: WindowClass self => Attr self Bool-windowGravity :: WindowClass self => Attr self Gravity-windowTransientFor :: (WindowClass self, WindowClass parent) => ReadWriteAttr self (Maybe Window) parent-onFrameEvent :: WindowClass self => self -> (Event -> IO Bool) -> IO (ConnectId self)-afterFrameEvent :: WindowClass self => self -> (Event -> IO Bool) -> IO (ConnectId self)-onSetFocus :: (WindowClass self, WidgetClass foc) => self -> (foc -> IO ()) -> IO (ConnectId self)-afterSetFocus :: (WindowClass self, WidgetClass foc) => self -> (foc -> IO ()) -> IO (ConnectId self)--module Graphics.UI.Gtk.Selectors.FileChooserDialog-data FileChooserDialog-instance BinClass FileChooserDialog-instance ContainerClass FileChooserDialog-instance DialogClass FileChooserDialog-instance FileChooserClass FileChooserDialog-instance FileChooserDialogClass FileChooserDialog-instance GObjectClass FileChooserDialog-instance ObjectClass FileChooserDialog-instance WidgetClass FileChooserDialog-instance WindowClass FileChooserDialog-class DialogClass o => FileChooserDialogClass o-instance FileChooserDialogClass FileChooserDialog-castToFileChooserDialog :: GObjectClass obj => obj -> FileChooserDialog-toFileChooserDialog :: FileChooserDialogClass o => o -> FileChooserDialog-fileChooserDialogNew :: Maybe String -> Maybe Window -> FileChooserAction -> [(String, ResponseId)] -> IO FileChooserDialog-fileChooserDialogNewWithBackend :: Maybe String -> Maybe Window -> FileChooserAction -> [(String, ResponseId)] -> String -> IO FileChooserDialog--module Graphics.UI.Gtk.Abstract.Misc-data Misc-instance GObjectClass Misc-instance MiscClass Misc-instance ObjectClass Misc-instance WidgetClass Misc-class WidgetClass o => MiscClass o-instance MiscClass AccelLabel-instance MiscClass Arrow-instance MiscClass Image-instance MiscClass Label-instance MiscClass Misc-instance MiscClass TipsQuery-castToMisc :: GObjectClass obj => obj -> Misc-toMisc :: MiscClass o => o -> Misc-miscSetAlignment :: MiscClass self => self -> Float -> Float -> IO ()-miscGetAlignment :: MiscClass self => self -> IO (Double, Double)-miscSetPadding :: MiscClass self => self -> Int -> Int -> IO ()-miscGetPadding :: MiscClass self => self -> IO (Int, Int)-miscXalign :: MiscClass self => Attr self Float-miscYalign :: MiscClass self => Attr self Float-miscXpad :: MiscClass self => Attr self Int-miscYpad :: MiscClass self => Attr self Int--module Graphics.UI.Gtk.Abstract.Paned-data Paned-instance ContainerClass Paned-instance GObjectClass Paned-instance ObjectClass Paned-instance PanedClass Paned-instance WidgetClass Paned-class ContainerClass o => PanedClass o-instance PanedClass HPaned-instance PanedClass Paned-instance PanedClass VPaned-castToPaned :: GObjectClass obj => obj -> Paned-toPaned :: PanedClass o => o -> Paned-panedAdd1 :: (PanedClass self, WidgetClass child) => self -> child -> IO ()-panedAdd2 :: (PanedClass self, WidgetClass child) => self -> child -> IO ()-panedPack1 :: (PanedClass self, WidgetClass child) => self -> child -> Bool -> Bool -> IO ()-panedPack2 :: (PanedClass self, WidgetClass child) => self -> child -> Bool -> Bool -> IO ()-panedSetPosition :: PanedClass self => self -> Int -> IO ()-panedGetPosition :: PanedClass self => self -> IO Int-panedGetChild1 :: PanedClass self => self -> IO (Maybe Widget)-panedGetChild2 :: PanedClass self => self -> IO (Maybe Widget)-panedPosition :: PanedClass self => Attr self Int-panedPositionSet :: PanedClass self => Attr self Bool-panedMinPosition :: PanedClass self => ReadAttr self Int-panedMaxPosition :: PanedClass self => ReadAttr self Int-panedChildResize :: (PanedClass self, WidgetClass child) => child -> Attr self Bool-panedChildShrink :: (PanedClass self, WidgetClass child) => child -> Attr self Bool-onCycleChildFocus :: PanedClass self => self -> (Bool -> IO Bool) -> IO (ConnectId self)-afterCycleChildFocus :: PanedClass self => self -> (Bool -> IO Bool) -> IO (ConnectId self)-onToggleHandleFocus :: PanedClass self => self -> IO Bool -> IO (ConnectId self)-afterToggleHandleFocus :: PanedClass self => self -> IO Bool -> IO (ConnectId self)-onMoveHandle :: PanedClass self => self -> (ScrollType -> IO Bool) -> IO (ConnectId self)-afterMoveHandle :: PanedClass self => self -> (ScrollType -> IO Bool) -> IO (ConnectId self)-onCycleHandleFocus :: PanedClass self => self -> (Bool -> IO Bool) -> IO (ConnectId self)-afterCycleHandleFocus :: PanedClass self => self -> (Bool -> IO Bool) -> IO (ConnectId self)-onAcceptPosition :: PanedClass self => self -> IO Bool -> IO (ConnectId self)-afterAcceptPosition :: PanedClass self => self -> IO Bool -> IO (ConnectId self)-onCancelPosition :: PanedClass self => self -> IO Bool -> IO (ConnectId self)-afterCancelPosition :: PanedClass self => self -> IO Bool -> IO (ConnectId self)--module Graphics.UI.Gtk.Layout.Fixed-data Fixed-instance ContainerClass Fixed-instance FixedClass Fixed-instance GObjectClass Fixed-instance ObjectClass Fixed-instance WidgetClass Fixed-class ContainerClass o => FixedClass o-instance FixedClass Fixed-castToFixed :: GObjectClass obj => obj -> Fixed-toFixed :: FixedClass o => o -> Fixed-fixedNew :: IO Fixed-fixedPut :: (FixedClass self, WidgetClass widget) => self -> widget -> (Int, Int) -> IO ()-fixedMove :: (FixedClass self, WidgetClass widget) => self -> widget -> (Int, Int) -> IO ()-fixedSetHasWindow :: FixedClass self => self -> Bool -> IO ()-fixedGetHasWindow :: FixedClass self => self -> IO Bool-fixedHasWindow :: FixedClass self => Attr self Bool-fixedChildX :: (FixedClass self, WidgetClass child) => child -> Attr self Int-fixedChildY :: (FixedClass self, WidgetClass child) => child -> Attr self Int--module Graphics.UI.Gtk.Layout.Layout-data Layout-instance ContainerClass Layout-instance GObjectClass Layout-instance LayoutClass Layout-instance ObjectClass Layout-instance WidgetClass Layout-class ContainerClass o => LayoutClass o-instance LayoutClass Layout-castToLayout :: GObjectClass obj => obj -> Layout-toLayout :: LayoutClass o => o -> Layout-layoutNew :: Maybe Adjustment -> Maybe Adjustment -> IO Layout-layoutPut :: (LayoutClass self, WidgetClass childWidget) => self -> childWidget -> Int -> Int -> IO ()-layoutMove :: (LayoutClass self, WidgetClass childWidget) => self -> childWidget -> Int -> Int -> IO ()-layoutSetSize :: LayoutClass self => self -> Int -> Int -> IO ()-layoutGetSize :: LayoutClass self => self -> IO (Int, Int)-layoutGetHAdjustment :: LayoutClass self => self -> IO Adjustment-layoutGetVAdjustment :: LayoutClass self => self -> IO Adjustment-layoutSetHAdjustment :: LayoutClass self => self -> Adjustment -> IO ()-layoutSetVAdjustment :: LayoutClass self => self -> Adjustment -> IO ()-layoutGetDrawWindow :: Layout -> IO DrawWindow-layoutHAdjustment :: LayoutClass self => Attr self Adjustment-layoutVAdjustment :: LayoutClass self => Attr self Adjustment-layoutWidth :: LayoutClass self => Attr self Int-layoutHeight :: LayoutClass self => Attr self Int-layoutChildX :: (LayoutClass self, WidgetClass child) => child -> Attr self Int-layoutChildY :: (LayoutClass self, WidgetClass child) => child -> Attr self Int-onSetScrollAdjustments :: LayoutClass self => self -> (Adjustment -> Adjustment -> IO ()) -> IO (ConnectId self)-afterSetScrollAdjustments :: LayoutClass self => self -> (Adjustment -> Adjustment -> IO ()) -> IO (ConnectId self)--module Graphics.UI.Gtk.Layout.Notebook-data Notebook-instance ContainerClass Notebook-instance GObjectClass Notebook-instance NotebookClass Notebook-instance ObjectClass Notebook-instance WidgetClass Notebook-class ContainerClass o => NotebookClass o-instance NotebookClass Notebook-castToNotebook :: GObjectClass obj => obj -> Notebook-toNotebook :: NotebookClass o => o -> Notebook-notebookNew :: IO Notebook-notebookAppendPage :: (NotebookClass self, WidgetClass child) => self -> child -> String -> IO Int-notebookAppendPageMenu :: (NotebookClass self, WidgetClass child, WidgetClass tabLabel, WidgetClass menuLabel) => self -> child -> tabLabel -> menuLabel -> IO Int-notebookPrependPage :: (NotebookClass self, WidgetClass child) => self -> child -> String -> IO Int-notebookPrependPageMenu :: (NotebookClass self, WidgetClass child, WidgetClass tabLabel, WidgetClass menuLabel) => self -> child -> tabLabel -> menuLabel -> IO Int-notebookInsertPage :: (NotebookClass self, WidgetClass child) => self -> child -> String -> Int -> IO Int-notebookInsertPageMenu :: (NotebookClass self, WidgetClass child, WidgetClass tabLabel, WidgetClass menuLabel) => self -> child -> tabLabel -> menuLabel -> Int -> IO Int-notebookRemovePage :: NotebookClass self => self -> Int -> IO ()-notebookPageNum :: (NotebookClass self, WidgetClass w) => self -> w -> IO (Maybe Int)-notebookSetCurrentPage :: NotebookClass self => self -> Int -> IO ()-notebookNextPage :: NotebookClass self => self -> IO ()-notebookPrevPage :: NotebookClass self => self -> IO ()-notebookReorderChild :: (NotebookClass self, WidgetClass child) => self -> child -> Int -> IO ()-data PositionType-PosLeft :: PositionType-PosRight :: PositionType-PosTop :: PositionType-PosBottom :: PositionType-instance Enum PositionType-instance Eq PositionType-notebookSetTabPos :: NotebookClass self => self -> PositionType -> IO ()-notebookGetTabPos :: NotebookClass self => self -> IO PositionType-notebookSetShowTabs :: NotebookClass self => self -> Bool -> IO ()-notebookGetShowTabs :: NotebookClass self => self -> IO Bool-notebookSetShowBorder :: NotebookClass self => self -> Bool -> IO ()-notebookGetShowBorder :: NotebookClass self => self -> IO Bool-notebookSetScrollable :: NotebookClass self => self -> Bool -> IO ()-notebookGetScrollable :: NotebookClass self => self -> IO Bool-notebookSetTabBorder :: NotebookClass self => self -> Int -> IO ()-notebookSetTabHBorder :: NotebookClass self => self -> Int -> IO ()-notebookSetTabVBorder :: NotebookClass self => self -> Int -> IO ()-notebookSetPopup :: NotebookClass self => self -> Bool -> IO ()-notebookGetCurrentPage :: NotebookClass self => self -> IO Int-notebookSetMenuLabel :: (NotebookClass self, WidgetClass child, WidgetClass menuLabel) => self -> child -> Maybe menuLabel -> IO ()-notebookGetMenuLabel :: (NotebookClass self, WidgetClass child) => self -> child -> IO (Maybe Widget)-notebookSetMenuLabelText :: (NotebookClass self, WidgetClass child) => self -> child -> String -> IO ()-notebookGetMenuLabelText :: (NotebookClass self, WidgetClass child) => self -> child -> IO (Maybe String)-notebookGetNthPage :: NotebookClass self => self -> Int -> IO (Maybe Widget)-notebookGetNPages :: NotebookClass self => self -> IO Int-notebookGetTabLabel :: (NotebookClass self, WidgetClass child) => self -> child -> IO (Maybe Widget)-notebookGetTabLabelText :: (NotebookClass self, WidgetClass child) => self -> child -> IO (Maybe String)-data Packing-PackRepel :: Packing-PackGrow :: Packing-PackNatural :: Packing-instance Enum Packing-instance Eq Packing-data PackType-PackStart :: PackType-PackEnd :: PackType-instance Enum PackType-instance Eq PackType-notebookQueryTabLabelPacking :: (NotebookClass self, WidgetClass child) => self -> child -> IO (Packing, PackType)-notebookSetTabLabelPacking :: (NotebookClass self, WidgetClass child) => self -> child -> Packing -> PackType -> IO ()-notebookSetHomogeneousTabs :: NotebookClass self => self -> Bool -> IO ()-notebookSetTabLabel :: (NotebookClass self, WidgetClass child, WidgetClass tabLabel) => self -> child -> tabLabel -> IO ()-notebookSetTabLabelText :: (NotebookClass self, WidgetClass child) => self -> child -> String -> IO ()-notebookPage :: NotebookClass self => Attr self Int-notebookTabPos :: NotebookClass self => Attr self PositionType-notebookTabBorder :: NotebookClass self => WriteAttr self Int-notebookTabHborder :: NotebookClass self => Attr self Int-notebookTabVborder :: NotebookClass self => Attr self Int-notebookShowTabs :: NotebookClass self => Attr self Bool-notebookShowBorder :: NotebookClass self => Attr self Bool-notebookScrollable :: NotebookClass self => Attr self Bool-notebookEnablePopup :: NotebookClass self => Attr self Bool-notebookHomogeneous :: NotebookClass self => Attr self Bool-notebookCurrentPage :: NotebookClass self => Attr self Int-notebookChildTabLabel :: (NotebookClass self, WidgetClass child) => child -> Attr self String-notebookChildMenuLabel :: (NotebookClass self, WidgetClass child) => child -> Attr self String-notebookChildPosition :: (NotebookClass self, WidgetClass child) => child -> Attr self Int-notebookChildTabPacking :: (NotebookClass self, WidgetClass child) => child -> Attr self Packing-notebookChildTabPackType :: (NotebookClass self, WidgetClass child) => child -> Attr self PackType-onSwitchPage :: NotebookClass nb => nb -> (Int -> IO ()) -> IO (ConnectId nb)-afterSwitchPage :: NotebookClass nb => nb -> (Int -> IO ()) -> IO (ConnectId nb)--module Graphics.UI.Gtk.Layout.Table-data Table-instance ContainerClass Table-instance GObjectClass Table-instance ObjectClass Table-instance TableClass Table-instance WidgetClass Table-class ContainerClass o => TableClass o-instance TableClass Table-castToTable :: GObjectClass obj => obj -> Table-toTable :: TableClass o => o -> Table-tableNew :: Int -> Int -> Bool -> IO Table-tableResize :: TableClass self => self -> Int -> Int -> IO ()-data AttachOptions-Expand :: AttachOptions-Shrink :: AttachOptions-Fill :: AttachOptions-instance Bounded AttachOptions-instance Enum AttachOptions-instance Eq AttachOptions-instance Flags AttachOptions-tableAttach :: (TableClass self, WidgetClass child) => self -> child -> Int -> Int -> Int -> Int -> [AttachOptions] -> [AttachOptions] -> Int -> Int -> IO ()-tableAttachDefaults :: (TableClass self, WidgetClass widget) => self -> widget -> Int -> Int -> Int -> Int -> IO ()-tableSetRowSpacing :: TableClass self => self -> Int -> Int -> IO ()-tableGetRowSpacing :: TableClass self => self -> Int -> IO Int-tableSetColSpacing :: TableClass self => self -> Int -> Int -> IO ()-tableGetColSpacing :: TableClass self => self -> Int -> IO Int-tableSetRowSpacings :: TableClass self => self -> Int -> IO ()-tableGetDefaultRowSpacing :: TableClass self => self -> IO Int-tableSetColSpacings :: TableClass self => self -> Int -> IO ()-tableGetDefaultColSpacing :: TableClass self => self -> IO Int-tableSetHomogeneous :: TableClass self => self -> Bool -> IO ()-tableGetHomogeneous :: TableClass self => self -> IO Bool-tableNRows :: TableClass self => Attr self Int-tableNColumns :: TableClass self => Attr self Int-tableRowSpacing :: TableClass self => Attr self Int-tableColumnSpacing :: TableClass self => Attr self Int-tableHomogeneous :: TableClass self => Attr self Bool-tableChildLeftAttach :: (TableClass self, WidgetClass child) => child -> Attr self Int-tableChildRightAttach :: (TableClass self, WidgetClass child) => child -> Attr self Int-tableChildTopAttach :: (TableClass self, WidgetClass child) => child -> Attr self Int-tableChildBottomAttach :: (TableClass self, WidgetClass child) => child -> Attr self Int-tableChildXOptions :: (TableClass self, WidgetClass child) => child -> Attr self [AttachOptions]-tableChildYOptions :: (TableClass self, WidgetClass child) => child -> Attr self [AttachOptions]-tableChildXPadding :: (TableClass self, WidgetClass child) => child -> Attr self Int-tableChildYPadding :: (TableClass self, WidgetClass child) => child -> Attr self Int--module Graphics.UI.Gtk.MenuComboToolbar.Menu-data Menu-instance ContainerClass Menu-instance GObjectClass Menu-instance MenuClass Menu-instance MenuShellClass Menu-instance ObjectClass Menu-instance WidgetClass Menu-class MenuShellClass o => MenuClass o-instance MenuClass Menu-castToMenu :: GObjectClass obj => obj -> Menu-toMenu :: MenuClass o => o -> Menu-menuNew :: IO Menu-menuReorderChild :: (MenuClass self, MenuItemClass child) => self -> child -> Int -> IO ()-menuPopup :: MenuClass self => self -> Event -> IO ()-menuSetAccelGroup :: MenuClass self => self -> AccelGroup -> IO ()-menuGetAccelGroup :: MenuClass self => self -> IO AccelGroup-menuSetAccelPath :: MenuClass self => self -> String -> IO ()-menuSetTitle :: MenuClass self => self -> String -> IO ()-menuGetTitle :: MenuClass self => self -> IO (Maybe String)-menuPopdown :: MenuClass self => self -> IO ()-menuReposition :: MenuClass self => self -> IO ()-menuGetActive :: MenuClass self => self -> IO MenuItem-menuSetActive :: MenuClass self => self -> Int -> IO ()-menuSetTearoffState :: MenuClass self => self -> Bool -> IO ()-menuGetTearoffState :: MenuClass self => self -> IO Bool-menuAttachToWidget :: (MenuClass self, WidgetClass attachWidget) => self -> attachWidget -> IO ()-menuDetach :: MenuClass self => self -> IO ()-menuGetAttachWidget :: MenuClass self => self -> IO (Maybe Widget)-menuSetScreen :: MenuClass self => self -> Maybe Screen -> IO ()-menuSetMonitor :: MenuClass self => self -> Int -> IO ()-menuAttach :: (MenuClass self, MenuItemClass child) => self -> child -> Int -> Int -> Int -> Int -> IO ()-menuGetForAttachWidget :: WidgetClass widget => widget -> IO [Menu]-menuTearoffState :: MenuClass self => Attr self Bool-menuAccelGroup :: MenuClass self => Attr self AccelGroup-menuActive :: MenuClass self => ReadWriteAttr self MenuItem Int-menuTitle :: MenuClass self => ReadWriteAttr self (Maybe String) String-menuChildLeftAttach :: (MenuClass self, WidgetClass child) => child -> Attr self Int-menuChildRightAttach :: (MenuClass self, WidgetClass child) => child -> Attr self Int-menuChildTopAttach :: (MenuClass self, WidgetClass child) => child -> Attr self Int-menuChildBottomAttach :: (MenuClass self, WidgetClass child) => child -> Attr self Int--module Graphics.UI.Gtk.MenuComboToolbar.Toolbar-data Toolbar-instance ContainerClass Toolbar-instance GObjectClass Toolbar-instance ObjectClass Toolbar-instance ToolbarClass Toolbar-instance WidgetClass Toolbar-class ContainerClass o => ToolbarClass o-instance ToolbarClass Toolbar-castToToolbar :: GObjectClass obj => obj -> Toolbar-toToolbar :: ToolbarClass o => o -> Toolbar-data Orientation-OrientationHorizontal :: Orientation-OrientationVertical :: Orientation-instance Enum Orientation-instance Eq Orientation-data ToolbarStyle-ToolbarIcons :: ToolbarStyle-ToolbarText :: ToolbarStyle-ToolbarBoth :: ToolbarStyle-ToolbarBothHoriz :: ToolbarStyle-instance Enum ToolbarStyle-instance Eq ToolbarStyle-toolbarNew :: IO Toolbar-toolbarInsertNewButton :: ToolbarClass self => self -> Int -> String -> Maybe (String, String) -> IO Button-toolbarAppendNewButton :: ToolbarClass self => self -> String -> Maybe (String, String) -> IO Button-toolbarPrependNewButton :: ToolbarClass self => self -> String -> Maybe (String, String) -> IO Button-toolbarInsertNewToggleButton :: ToolbarClass self => self -> Int -> String -> Maybe (String, String) -> IO ToggleButton-toolbarAppendNewToggleButton :: ToolbarClass self => self -> String -> Maybe (String, String) -> IO ToggleButton-toolbarPrependNewToggleButton :: ToolbarClass self => self -> String -> Maybe (String, String) -> IO ToggleButton-toolbarInsertNewRadioButton :: (ToolbarClass self, RadioButtonClass rb) => self -> Int -> String -> Maybe (String, String) -> Maybe rb -> IO RadioButton-toolbarAppendNewRadioButton :: (ToolbarClass self, RadioButtonClass rb) => self -> String -> Maybe (String, String) -> Maybe rb -> IO RadioButton-toolbarPrependNewRadioButton :: (ToolbarClass self, RadioButtonClass rb) => self -> String -> Maybe (String, String) -> Maybe rb -> IO RadioButton-toolbarInsertNewWidget :: (ToolbarClass self, WidgetClass w) => self -> Int -> w -> Maybe (String, String) -> IO ()-toolbarAppendNewWidget :: (ToolbarClass self, WidgetClass w) => self -> w -> Maybe (String, String) -> IO ()-toolbarPrependNewWidget :: (ToolbarClass self, WidgetClass w) => self -> w -> Maybe (String, String) -> IO ()-toolbarSetOrientation :: ToolbarClass self => self -> Orientation -> IO ()-toolbarGetOrientation :: ToolbarClass self => self -> IO Orientation-toolbarSetStyle :: ToolbarClass self => self -> ToolbarStyle -> IO ()-toolbarGetStyle :: ToolbarClass self => self -> IO ToolbarStyle-toolbarUnsetStyle :: ToolbarClass self => self -> IO ()-toolbarSetTooltips :: ToolbarClass self => self -> Bool -> IO ()-toolbarGetTooltips :: ToolbarClass self => self -> IO Bool-type IconSize = Int-iconSizeInvalid :: IconSize-iconSizeSmallToolbar :: IconSize-iconSizeLargeToolbar :: IconSize-toolbarSetIconSize :: ToolbarClass self => self -> IconSize -> IO ()-toolbarGetIconSize :: ToolbarClass self => self -> IO IconSize-toolbarInsert :: (ToolbarClass self, ToolItemClass item) => self -> item -> Int -> IO ()-toolbarGetItemIndex :: (ToolbarClass self, ToolItemClass item) => self -> item -> IO Int-toolbarGetNItems :: ToolbarClass self => self -> IO Int-toolbarGetNthItem :: ToolbarClass self => self -> Int -> IO (Maybe ToolItem)-toolbarGetDropIndex :: ToolbarClass self => self -> (Int, Int) -> IO Int-toolbarSetDropHighlightItem :: (ToolbarClass self, ToolItemClass toolItem) => self -> Maybe toolItem -> Int -> IO ()-toolbarSetShowArrow :: ToolbarClass self => self -> Bool -> IO ()-toolbarGetShowArrow :: ToolbarClass self => self -> IO Bool-data ReliefStyle-ReliefNormal :: ReliefStyle-ReliefHalf :: ReliefStyle-ReliefNone :: ReliefStyle-instance Enum ReliefStyle-instance Eq ReliefStyle-toolbarGetReliefStyle :: ToolbarClass self => self -> IO ReliefStyle-toolbarOrientation :: ToolbarClass self => Attr self Orientation-toolbarShowArrow :: ToolbarClass self => Attr self Bool-toolbarTooltips :: ToolbarClass self => Attr self Bool-toolbarStyle :: ToolbarClass self => Attr self ToolbarStyle-toolbarChildExpand :: (ToolbarClass self, WidgetClass child) => child -> Attr self Bool-toolbarChildHomogeneous :: (ToolbarClass self, WidgetClass child) => child -> Attr self Bool-onOrientationChanged :: ToolbarClass self => self -> (Orientation -> IO ()) -> IO (ConnectId self)-afterOrientationChanged :: ToolbarClass self => self -> (Orientation -> IO ()) -> IO (ConnectId self)-onStyleChanged :: ToolbarClass self => self -> (ToolbarStyle -> IO ()) -> IO (ConnectId self)-afterStyleChanged :: ToolbarClass self => self -> (ToolbarStyle -> IO ()) -> IO (ConnectId self)-onPopupContextMenu :: ToolbarClass self => self -> (Int -> Int -> Int -> IO Bool) -> IO (ConnectId self)-afterPopupContextMenu :: ToolbarClass self => self -> (Int -> Int -> Int -> IO Bool) -> IO (ConnectId self)--module Graphics.UI.Gtk.Abstract.Container-data Container-instance ContainerClass Container-instance GObjectClass Container-instance ObjectClass Container-instance WidgetClass Container-class WidgetClass o => ContainerClass o-instance ContainerClass AboutDialog-instance ContainerClass Alignment-instance ContainerClass AspectFrame-instance ContainerClass Bin-instance ContainerClass Box-instance ContainerClass Button-instance ContainerClass ButtonBox-instance ContainerClass CList-instance ContainerClass CTree-instance ContainerClass CheckButton-instance ContainerClass CheckMenuItem-instance ContainerClass ColorButton-instance ContainerClass ColorSelection-instance ContainerClass ColorSelectionDialog-instance ContainerClass Combo-instance ContainerClass ComboBox-instance ContainerClass ComboBoxEntry-instance ContainerClass Container-instance ContainerClass Dialog-instance ContainerClass EventBox-instance ContainerClass Expander-instance ContainerClass FileChooserButton-instance ContainerClass FileChooserDialog-instance ContainerClass FileChooserWidget-instance ContainerClass FileSelection-instance ContainerClass Fixed-instance ContainerClass FontButton-instance ContainerClass FontSelection-instance ContainerClass FontSelectionDialog-instance ContainerClass Frame-instance ContainerClass GammaCurve-instance ContainerClass HBox-instance ContainerClass HButtonBox-instance ContainerClass HPaned-instance ContainerClass HandleBox-instance ContainerClass IconView-instance ContainerClass ImageMenuItem-instance ContainerClass InputDialog-instance ContainerClass Item-instance ContainerClass Layout-instance ContainerClass List-instance ContainerClass ListItem-instance ContainerClass Menu-instance ContainerClass MenuBar-instance ContainerClass MenuItem-instance ContainerClass MenuShell-instance ContainerClass MenuToolButton-instance ContainerClass MessageDialog-instance ContainerClass MozEmbed-instance ContainerClass Notebook-instance ContainerClass OptionMenu-instance ContainerClass Paned-instance ContainerClass Plug-instance ContainerClass RadioButton-instance ContainerClass RadioMenuItem-instance ContainerClass RadioToolButton-instance ContainerClass ScrolledWindow-instance ContainerClass SeparatorMenuItem-instance ContainerClass SeparatorToolItem-instance ContainerClass Socket-instance ContainerClass SourceView-instance ContainerClass Statusbar-instance ContainerClass Table-instance ContainerClass TearoffMenuItem-instance ContainerClass TextView-instance ContainerClass ToggleButton-instance ContainerClass ToggleToolButton-instance ContainerClass ToolButton-instance ContainerClass ToolItem-instance ContainerClass Toolbar-instance ContainerClass TreeView-instance ContainerClass VBox-instance ContainerClass VButtonBox-instance ContainerClass VPaned-instance ContainerClass Viewport-instance ContainerClass Window-castToContainer :: GObjectClass obj => obj -> Container-toContainer :: ContainerClass o => o -> Container-type ContainerForeachCB = Widget -> IO ()-data ResizeMode-ResizeParent :: ResizeMode-ResizeQueue :: ResizeMode-ResizeImmediate :: ResizeMode-instance Enum ResizeMode-instance Eq ResizeMode-containerAdd :: (ContainerClass self, WidgetClass widget) => self -> widget -> IO ()-containerRemove :: (ContainerClass self, WidgetClass widget) => self -> widget -> IO ()-containerForeach :: ContainerClass self => self -> ContainerForeachCB -> IO ()-containerForall :: ContainerClass self => self -> ContainerForeachCB -> IO ()-containerGetChildren :: ContainerClass self => self -> IO [Widget]-data DirectionType-DirTabForward :: DirectionType-DirTabBackward :: DirectionType-DirUp :: DirectionType-DirDown :: DirectionType-DirLeft :: DirectionType-DirRight :: DirectionType-instance Enum DirectionType-instance Eq DirectionType-containerSetFocusChild :: (ContainerClass self, WidgetClass child) => self -> child -> IO ()-containerSetFocusChain :: ContainerClass self => self -> [Widget] -> IO ()-containerGetFocusChain :: ContainerClass self => self -> IO (Maybe [Widget])-containerUnsetFocusChain :: ContainerClass self => self -> IO ()-containerSetFocusVAdjustment :: ContainerClass self => self -> Adjustment -> IO ()-containerGetFocusVAdjustment :: ContainerClass self => self -> IO (Maybe Adjustment)-containerSetFocusHAdjustment :: ContainerClass self => self -> Adjustment -> IO ()-containerGetFocusHAdjustment :: ContainerClass self => self -> IO (Maybe Adjustment)-containerResizeChildren :: ContainerClass self => self -> IO ()-containerSetBorderWidth :: ContainerClass self => self -> Int -> IO ()-containerGetBorderWidth :: ContainerClass self => self -> IO Int-containerGetResizeMode :: ContainerClass self => self -> IO ResizeMode-containerSetResizeMode :: ContainerClass self => self -> ResizeMode -> IO ()-containerResizeMode :: ContainerClass self => Attr self ResizeMode-containerBorderWidth :: ContainerClass self => Attr self Int-containerChild :: (ContainerClass self, WidgetClass widget) => WriteAttr self widget-containerFocusHAdjustment :: ContainerClass self => ReadWriteAttr self (Maybe Adjustment) Adjustment-containerFocusVAdjustment :: ContainerClass self => ReadWriteAttr self (Maybe Adjustment) Adjustment-onAdd :: ContainerClass self => self -> (Widget -> IO ()) -> IO (ConnectId self)-afterAdd :: ContainerClass self => self -> (Widget -> IO ()) -> IO (ConnectId self)-onCheckResize :: ContainerClass self => self -> IO () -> IO (ConnectId self)-afterCheckResize :: ContainerClass self => self -> IO () -> IO (ConnectId self)-onFocus :: ContainerClass con => con -> (DirectionType -> IO DirectionType) -> IO (ConnectId con)-afterFocus :: ContainerClass con => con -> (DirectionType -> IO DirectionType) -> IO (ConnectId con)-onRemove :: ContainerClass self => self -> (Widget -> IO ()) -> IO (ConnectId self)-afterRemove :: ContainerClass self => self -> (Widget -> IO ()) -> IO (ConnectId self)-onSetFocusChild :: ContainerClass self => self -> (Widget -> IO ()) -> IO (ConnectId self)-afterSetFocusChild :: ContainerClass self => self -> (Widget -> IO ()) -> IO (ConnectId self)--module Graphics.UI.Gtk.MenuComboToolbar.Combo-data Combo-instance BoxClass Combo-instance ComboClass Combo-instance ContainerClass Combo-instance GObjectClass Combo-instance HBoxClass Combo-instance ObjectClass Combo-instance WidgetClass Combo-class HBoxClass o => ComboClass o-instance ComboClass Combo-castToCombo :: GObjectClass obj => obj -> Combo-toCombo :: ComboClass o => o -> Combo-comboNew :: IO Combo-comboSetPopdownStrings :: ComboClass self => self -> [String] -> IO ()-comboSetValueInList :: ComboClass self => self -> Bool -> Bool -> IO ()-comboSetUseArrows :: ComboClass self => self -> Bool -> IO ()-comboSetUseArrowsAlways :: ComboClass self => self -> Bool -> IO ()-comboSetCaseSensitive :: ComboClass self => self -> Bool -> IO ()-comboDisableActivate :: ComboClass self => self -> IO ()-comboEnableArrowKeys :: ComboClass self => Attr self Bool-comboEnableArrowsAlways :: ComboClass self => Attr self Bool-comboCaseSensitive :: ComboClass self => Attr self Bool-comboAllowEmpty :: ComboClass self => Attr self Bool-comboValueInList :: ComboClass self => Attr self Bool--module Graphics.UI.Gtk.Abstract.ButtonBox-data ButtonBox-instance BoxClass ButtonBox-instance ButtonBoxClass ButtonBox-instance ContainerClass ButtonBox-instance GObjectClass ButtonBox-instance ObjectClass ButtonBox-instance WidgetClass ButtonBox-class BoxClass o => ButtonBoxClass o-instance ButtonBoxClass ButtonBox-instance ButtonBoxClass HButtonBox-instance ButtonBoxClass VButtonBox-castToButtonBox :: GObjectClass obj => obj -> ButtonBox-toButtonBox :: ButtonBoxClass o => o -> ButtonBox-data ButtonBoxStyle-ButtonboxDefaultStyle :: ButtonBoxStyle-ButtonboxSpread :: ButtonBoxStyle-ButtonboxEdge :: ButtonBoxStyle-ButtonboxStart :: ButtonBoxStyle-ButtonboxEnd :: ButtonBoxStyle-instance Enum ButtonBoxStyle-instance Eq ButtonBoxStyle-buttonBoxGetLayout :: ButtonBoxClass self => self -> IO ButtonBoxStyle-buttonBoxSetLayout :: ButtonBoxClass self => self -> ButtonBoxStyle -> IO ()-buttonBoxSetChildSecondary :: (ButtonBoxClass self, WidgetClass child) => self -> child -> Bool -> IO ()-buttonBoxGetChildSecondary :: (ButtonBoxClass self, WidgetClass child) => self -> child -> IO Bool-buttonBoxLayoutStyle :: ButtonBoxClass self => Attr self ButtonBoxStyle-buttonBoxChildSecondary :: (ButtonBoxClass self, WidgetClass child) => child -> Attr self Bool--module Graphics.UI.Gtk.Abstract.Box-data Box-instance BoxClass Box-instance ContainerClass Box-instance GObjectClass Box-instance ObjectClass Box-instance WidgetClass Box-class ContainerClass o => BoxClass o-instance BoxClass Box-instance BoxClass ButtonBox-instance BoxClass ColorSelection-instance BoxClass Combo-instance BoxClass FileChooserButton-instance BoxClass FileChooserWidget-instance BoxClass FontSelection-instance BoxClass GammaCurve-instance BoxClass HBox-instance BoxClass HButtonBox-instance BoxClass Statusbar-instance BoxClass VBox-instance BoxClass VButtonBox-castToBox :: GObjectClass obj => obj -> Box-toBox :: BoxClass o => o -> Box-data Packing-PackRepel :: Packing-PackGrow :: Packing-PackNatural :: Packing-instance Enum Packing-instance Eq Packing-boxPackStart :: (BoxClass self, WidgetClass child) => self -> child -> Packing -> Int -> IO ()-boxPackEnd :: (BoxClass self, WidgetClass child) => self -> child -> Packing -> Int -> IO ()-boxPackStartDefaults :: (BoxClass self, WidgetClass widget) => self -> widget -> IO ()-boxPackEndDefaults :: (BoxClass self, WidgetClass widget) => self -> widget -> IO ()-boxGetHomogeneous :: BoxClass self => self -> IO Bool-boxSetHomogeneous :: BoxClass self => self -> Bool -> IO ()-boxGetSpacing :: BoxClass self => self -> IO Int-boxSetSpacing :: BoxClass self => self -> Int -> IO ()-boxReorderChild :: (BoxClass self, WidgetClass child) => self -> child -> Int -> IO ()-boxQueryChildPacking :: (BoxClass self, WidgetClass child) => self -> child -> IO (Packing, Int, PackType)-boxSetChildPacking :: (BoxClass self, WidgetClass child) => self -> child -> Packing -> Int -> PackType -> IO ()-boxSpacing :: BoxClass self => Attr self Int-boxHomogeneous :: BoxClass self => Attr self Bool-boxChildPacking :: (BoxClass self, WidgetClass child) => child -> Attr self Packing-boxChildPadding :: (BoxClass self, WidgetClass child) => child -> Attr self Int-boxChildPackType :: (BoxClass self, WidgetClass child) => child -> Attr self PackType-boxChildPosition :: (BoxClass self, WidgetClass child) => child -> Attr self Int--module Graphics.UI.Gtk.Abstract.Bin-data Bin-instance BinClass Bin-instance ContainerClass Bin-instance GObjectClass Bin-instance ObjectClass Bin-instance WidgetClass Bin-class ContainerClass o => BinClass o-instance BinClass AboutDialog-instance BinClass Alignment-instance BinClass AspectFrame-instance BinClass Bin-instance BinClass Button-instance BinClass CheckButton-instance BinClass CheckMenuItem-instance BinClass ColorButton-instance BinClass ColorSelectionDialog-instance BinClass ComboBox-instance BinClass ComboBoxEntry-instance BinClass Dialog-instance BinClass EventBox-instance BinClass Expander-instance BinClass FileChooserDialog-instance BinClass FileSelection-instance BinClass FontButton-instance BinClass FontSelectionDialog-instance BinClass Frame-instance BinClass HandleBox-instance BinClass ImageMenuItem-instance BinClass InputDialog-instance BinClass Item-instance BinClass ListItem-instance BinClass MenuItem-instance BinClass MenuToolButton-instance BinClass MessageDialog-instance BinClass MozEmbed-instance BinClass OptionMenu-instance BinClass Plug-instance BinClass RadioButton-instance BinClass RadioMenuItem-instance BinClass RadioToolButton-instance BinClass ScrolledWindow-instance BinClass SeparatorMenuItem-instance BinClass SeparatorToolItem-instance BinClass TearoffMenuItem-instance BinClass ToggleButton-instance BinClass ToggleToolButton-instance BinClass ToolButton-instance BinClass ToolItem-instance BinClass Viewport-instance BinClass Window-castToBin :: GObjectClass obj => obj -> Bin-toBin :: BinClass o => o -> Bin-binGetChild :: BinClass self => self -> IO (Maybe Widget)--module Graphics.Rendering.Cairo.Matrix-data Matrix-Matrix :: Double -> Double -> Double -> Double -> Double -> Double -> Matrix-instance Eq Matrix-instance Num Matrix-instance Show Matrix-instance Storable Matrix-type MatrixPtr = Ptr Matrix-identity :: Matrix-translate :: Double -> Double -> Matrix -> Matrix-scale :: Double -> Double -> Matrix -> Matrix-rotate :: Double -> Matrix -> Matrix-transformDistance :: Matrix -> (Double, Double) -> (Double, Double)-transformPoint :: Matrix -> (Double, Double) -> (Double, Double)-scalarMultiply :: Double -> Matrix -> Matrix-adjoint :: Matrix -> Matrix-invert :: Matrix -> Matrix--module Graphics.Rendering.Cairo-renderWith :: MonadIO m => Surface -> Render a -> m a-save :: Render ()-restore :: Render ()-status :: Render Status-withTargetSurface :: (Surface -> Render a) -> Render a-setSourceRGB :: Double -> Double -> Double -> Render ()-setSourceRGBA :: Double -> Double -> Double -> Double -> Render ()-setSource :: Pattern -> Render ()-setSourceSurface :: Surface -> Double -> Double -> Render ()-getSource :: Render Pattern-setAntialias :: Antialias -> Render ()-setDash :: [Double] -> Double -> Render ()-setFillRule :: FillRule -> Render ()-getFillRule :: Render FillRule-setLineCap :: LineCap -> Render ()-getLineCap :: Render LineCap-setLineJoin :: LineJoin -> Render ()-getLineJoin :: Render LineJoin-setLineWidth :: Double -> Render ()-getLineWidth :: Render Double-setMiterLimit :: Double -> Render ()-getMiterLimit :: Render Double-setOperator :: Operator -> Render ()-getOperator :: Render Operator-setTolerance :: Double -> Render ()-getTolerance :: Render Double-clip :: Render ()-clipPreserve :: Render ()-resetClip :: Render ()-fill :: Render ()-fillPreserve :: Render ()-fillExtents :: Render (Double, Double, Double, Double)-inFill :: Double -> Double -> Render Bool-mask :: Pattern -> Render ()-maskSurface :: Surface -> Double -> Double -> Render ()-paint :: Render ()-paintWithAlpha :: Double -> Render ()-stroke :: Render ()-strokePreserve :: Render ()-strokeExtents :: Render (Double, Double, Double, Double)-inStroke :: Double -> Double -> Render Bool-copyPage :: Render ()-showPage :: Render ()-getCurrentPoint :: Render (Double, Double)-newPath :: Render ()-closePath :: Render ()-arc :: Double -> Double -> Double -> Double -> Double -> Render ()-arcNegative :: Double -> Double -> Double -> Double -> Double -> Render ()-curveTo :: Double -> Double -> Double -> Double -> Double -> Double -> Render ()-lineTo :: Double -> Double -> Render ()-moveTo :: Double -> Double -> Render ()-rectangle :: Double -> Double -> Double -> Double -> Render ()-textPath :: String -> Render ()-relCurveTo :: Double -> Double -> Double -> Double -> Double -> Double -> Render ()-relLineTo :: Double -> Double -> Render ()-relMoveTo :: Double -> Double -> Render ()-withRGBPattern :: Double -> Double -> Double -> (Pattern -> Render a) -> Render a-withRGBAPattern :: Double -> Double -> Double -> Double -> (Pattern -> Render a) -> Render a-withPatternForSurface :: Surface -> (Pattern -> Render a) -> Render a-withLinearPattern :: Double -> Double -> Double -> Double -> (Pattern -> Render a) -> Render a-withRadialPattern :: Double -> Double -> Double -> Double -> Double -> Double -> (Pattern -> Render a) -> Render a-patternAddColorStopRGB :: Pattern -> Double -> Double -> Double -> Double -> Render ()-patternAddColorStopRGBA :: Pattern -> Double -> Double -> Double -> Double -> Double -> Render ()-patternSetMatrix :: Pattern -> Matrix -> Render ()-patternGetMatrix :: Pattern -> Render Matrix-patternSetExtend :: Pattern -> Extend -> Render ()-patternGetExtend :: Pattern -> Render Extend-patternSetFilter :: Pattern -> Filter -> Render ()-patternGetFilter :: Pattern -> Render Filter-translate :: Double -> Double -> Render ()-scale :: Double -> Double -> Render ()-rotate :: Double -> Render ()-transform :: Matrix -> Render ()-setMatrix :: Matrix -> Render ()-getMatrix :: Render Matrix-identityMatrix :: Render ()-userToDevice :: Double -> Double -> Render (Double, Double)-userToDeviceDistance :: Double -> Double -> Render (Double, Double)-deviceToUser :: Double -> Double -> Render (Double, Double)-deviceToUserDistance :: Double -> Double -> Render (Double, Double)-selectFontFace :: String -> FontSlant -> FontWeight -> Render ()-setFontSize :: Double -> Render ()-setFontMatrix :: Matrix -> Render ()-getFontMatrix :: Render Matrix-showText :: String -> Render ()-fontExtents :: Render FontExtents-textExtents :: String -> Render TextExtents-fontOptionsCreate :: Render FontOptions-fontOptionsCopy :: FontOptions -> Render FontOptions-fontOptionsMerge :: FontOptions -> FontOptions -> Render ()-fontOptionsHash :: FontOptions -> Render Int-fontOptionsEqual :: FontOptions -> FontOptions -> Render Bool-fontOptionsSetAntialias :: FontOptions -> Antialias -> Render ()-fontOptionsGetAntialias :: FontOptions -> Render Antialias-fontOptionsSetSubpixelOrder :: FontOptions -> SubpixelOrder -> Render ()-fontOptionsGetSubpixelOrder :: FontOptions -> Render SubpixelOrder-fontOptionsSetHintStyle :: FontOptions -> HintStyle -> Render ()-fontOptionsGetHintStyle :: FontOptions -> Render HintStyle-fontOptionsSetHintMetrics :: FontOptions -> HintMetrics -> Render ()-fontOptionsGetHintMetrics :: FontOptions -> Render HintMetrics-withSimilarSurface :: Surface -> Content -> Int -> Int -> (Surface -> IO a) -> IO a-renderWithSimilarSurface :: Content -> Int -> Int -> (Surface -> Render a) -> Render a-surfaceGetFontOptions :: Surface -> Render FontOptions-surfaceMarkDirty :: Surface -> Render ()-surfaceMarkDirtyRectangle :: Surface -> Int -> Int -> Int -> Int -> Render ()-surfaceSetDeviceOffset :: Surface -> Double -> Double -> Render ()-withImageSurface :: Format -> Int -> Int -> (Surface -> IO a) -> IO a-imageSurfaceGetWidth :: Surface -> Render Int-imageSurfaceGetHeight :: Surface -> Render Int-withImageSurfaceFromPNG :: FilePath -> (Surface -> IO a) -> IO a-surfaceWriteToPNG :: Surface -> FilePath -> IO ()-version :: Int-versionString :: String-data Matrix-instance Eq Matrix-instance Num Matrix-instance Show Matrix-instance Storable Matrix-data Surface-data Pattern-data Status-StatusSuccess :: Status-StatusNoMemory :: Status-StatusInvalidRestore :: Status-StatusInvalidPopGroup :: Status-StatusNoCurrentPoint :: Status-StatusInvalidMatrix :: Status-StatusInvalidStatus :: Status-StatusNullPointer :: Status-StatusInvalidString :: Status-StatusInvalidPathData :: Status-StatusReadError :: Status-StatusWriteError :: Status-StatusSurfaceFinished :: Status-StatusSurfaceTypeMismatch :: Status-StatusPatternTypeMismatch :: Status-StatusInvalidContent :: Status-StatusInvalidFormat :: Status-StatusInvalidVisual :: Status-StatusFileNotFound :: Status-StatusInvalidDash :: Status-instance Enum Status-instance Eq Status-data Operator-OperatorClear :: Operator-OperatorSource :: Operator-OperatorOver :: Operator-OperatorIn :: Operator-OperatorOut :: Operator-OperatorAtop :: Operator-OperatorDest :: Operator-OperatorDestOver :: Operator-OperatorDestIn :: Operator-OperatorDestOut :: Operator-OperatorDestAtop :: Operator-OperatorXor :: Operator-OperatorAdd :: Operator-OperatorSaturate :: Operator-instance Enum Operator-data Antialias-AntialiasDefault :: Antialias-AntialiasNone :: Antialias-AntialiasGray :: Antialias-AntialiasSubpixel :: Antialias-instance Enum Antialias-data FillRule-FillRuleWinding :: FillRule-FillRuleEvenOdd :: FillRule-instance Enum FillRule-data LineCap-LineCapButt :: LineCap-LineCapRound :: LineCap-LineCapSquare :: LineCap-instance Enum LineCap-data LineJoin-LineJoinMiter :: LineJoin-LineJoinRound :: LineJoin-LineJoinBevel :: LineJoin-instance Enum LineJoin-data ScaledFont-data FontFace-data Glyph-data TextExtents-TextExtents :: Double -> Double -> Double -> Double -> Double -> Double -> TextExtents-textExtentsXbearing :: TextExtents -> Double-textExtentsYbearing :: TextExtents -> Double-textExtentsWidth :: TextExtents -> Double-textExtentsHeight :: TextExtents -> Double-textExtentsXadvance :: TextExtents -> Double-textExtentsYadvance :: TextExtents -> Double-instance Storable TextExtents-data FontExtents-FontExtents :: Double -> Double -> Double -> Double -> Double -> FontExtents-fontExtentsAscent :: FontExtents -> Double-fontExtentsDescent :: FontExtents -> Double-fontExtentsHeight :: FontExtents -> Double-fontExtentsMaxXadvance :: FontExtents -> Double-fontExtentsMaxYadvance :: FontExtents -> Double-instance Storable FontExtents-data FontSlant-FontSlantNormal :: FontSlant-FontSlantItalic :: FontSlant-FontSlantOblique :: FontSlant-instance Enum FontSlant-data FontWeight-FontWeightNormal :: FontWeight-FontWeightBold :: FontWeight-instance Enum FontWeight-data SubpixelOrder-SubpixelOrderDefault :: SubpixelOrder-SubpixelOrderRgb :: SubpixelOrder-SubpixelOrderBgr :: SubpixelOrder-SubpixelOrderVrgb :: SubpixelOrder-SubpixelOrderVbgr :: SubpixelOrder-instance Enum SubpixelOrder-data HintStyle-HintStyleDefault :: HintStyle-HintStyleNone :: HintStyle-HintStyleSlight :: HintStyle-HintStyleMedium :: HintStyle-HintStyleFull :: HintStyle-instance Enum HintStyle-data HintMetrics-HintMetricsDefault :: HintMetrics-HintMetricsOff :: HintMetrics-HintMetricsOn :: HintMetrics-instance Enum HintMetrics-data FontOptions-data Path-data Content-ContentColor :: Content-ContentAlpha :: Content-ContentColorAlpha :: Content-instance Enum Content-data Format-FormatARGB32 :: Format-FormatRGB24 :: Format-FormatA8 :: Format-FormatA1 :: Format-instance Enum Format-data Extend-ExtendNone :: Extend-ExtendRepeat :: Extend-ExtendReflect :: Extend-instance Enum Extend-data Filter-FilterFast :: Filter-FilterGood :: Filter-FilterBest :: Filter-FilterNearest :: Filter-FilterBilinear :: Filter-FilterGaussian :: Filter-instance Enum Filter--module Graphics.UI.Gtk.Cairo-cairoFontMapNew :: IO FontMap-cairoFontMapSetResolution :: Double -> FontMap -> IO ()-cairoFontMapGetResolution :: FontMap -> IO Double-cairoCreateContext :: Maybe FontMap -> IO PangoContext-cairoContextSetResolution :: PangoContext -> Double -> IO ()-cairoContextGetResolution :: PangoContext -> IO Double-cairoContextSetFontOptions :: PangoContext -> FontOptions -> IO ()-cairoContextGetFontOptions :: PangoContext -> IO FontOptions-renderWithDrawable :: DrawableClass drawable => drawable -> Render a -> IO a-setSourceColor :: Color -> Render ()-setSourcePixbuf :: Pixbuf -> Double -> Double -> Render ()-region :: Region -> Render ()-updateContext :: PangoContext -> Render ()-createLayout :: String -> Render PangoLayout-updateLayout :: PangoLayout -> Render ()-showGlyphString :: GlyphItem -> Render ()-showLayoutLine :: LayoutLine -> Render ()-showLayout :: PangoLayout -> Render ()-glyphStringPath :: GlyphItem -> Render ()-layoutLinePath :: LayoutLine -> Render ()-layoutPath :: PangoLayout -> Render ()--module Graphics.UI.Gtk--module Graphics.UI.Gtk.Mogul.NewWidget-newTextBuffer :: Maybe TextTagTable -> IO TextBuffer-newLabel :: Maybe String -> IO Label-newNamedLabel :: WidgetName -> Maybe String -> IO Label-newAccelLabel :: String -> IO AccelLabel-newNamedAccelLabel :: WidgetName -> String -> IO AccelLabel-newArrow :: ArrowType -> ShadowType -> IO Arrow-newNamedArrow :: WidgetName -> ArrowType -> ShadowType -> IO Arrow-newImageFromFile :: FilePath -> IO Image-newNamedImageFromFile :: WidgetName -> FilePath -> IO Image-newAlignment :: Float -> Float -> Float -> Float -> IO Alignment-newNamedAlignment :: WidgetName -> Float -> Float -> Float -> Float -> IO Alignment-newFrame :: IO Frame-newNamedFrame :: WidgetName -> IO Frame-newAspectFrame :: Float -> Float -> Maybe Float -> IO AspectFrame-newNamedAspectFrame :: WidgetName -> Float -> Float -> Maybe Float -> IO AspectFrame-newButton :: IO Button-newNamedButton :: WidgetName -> IO Button-newButtonWithLabel :: String -> IO Button-newNamedButtonWithLabel :: WidgetName -> String -> IO Button-newButtonWithMnemonic :: String -> IO Button-newNamedButtonWithMnemonic :: WidgetName -> String -> IO Button-newButtonFromStock :: String -> IO Button-newNamedButtonFromStock :: WidgetName -> String -> IO Button-newToggleButton :: IO ToggleButton-newNamedToggleButton :: WidgetName -> IO ToggleButton-newToggleButtonWithLabel :: String -> IO ToggleButton-newNamedToggleButtonWithLabel :: WidgetName -> String -> IO ToggleButton-newCheckButton :: IO CheckButton-newNamedCheckButton :: WidgetName -> IO CheckButton-newCheckButtonWithLabel :: String -> IO CheckButton-newNamedCheckButtonWithLabel :: WidgetName -> String -> IO CheckButton-newCheckButtonWithMnemonic :: String -> IO CheckButton-newNamedCheckButtonWithMnemonic :: WidgetName -> String -> IO CheckButton-newRadioButton :: IO RadioButton-newNamedRadioButton :: WidgetName -> IO RadioButton-newRadioButtonWithLabel :: String -> IO RadioButton-newNamedRadioButtonWithLabel :: WidgetName -> String -> IO RadioButton-newRadioButtonJoinGroup :: RadioButton -> IO RadioButton-newNamedRadioButtonJoinGroup :: WidgetName -> RadioButton -> IO RadioButton-newRadioButtonJoinGroupWithLabel :: RadioButton -> String -> IO RadioButton-newNamedRadioButtonJoinGroupWithLabel :: WidgetName -> RadioButton -> String -> IO RadioButton-newOptionMenu :: IO OptionMenu-newNamedOptionMenu :: WidgetName -> IO OptionMenu-newMenuItem :: IO MenuItem-newNamedMenuItem :: WidgetName -> IO MenuItem-newMenuItemWithLabel :: String -> IO MenuItem-newNamedMenuItemWithLabel :: WidgetName -> String -> IO MenuItem-newCheckMenuItem :: IO CheckMenuItem-newNamedCheckMenuItem :: WidgetName -> IO CheckMenuItem-newCheckMenuItemWithLabel :: String -> IO CheckMenuItem-newNamedCheckMenuItemWithLabel :: WidgetName -> String -> IO CheckMenuItem-newRadioMenuItem :: IO RadioMenuItem-newNamedRadioMenuItem :: WidgetName -> IO RadioMenuItem-newRadioMenuItemWithLabel :: String -> IO RadioMenuItem-newNamedRadioMenuItemWithLabel :: WidgetName -> String -> IO RadioMenuItem-newRadioMenuItemJoinGroup :: RadioMenuItem -> IO RadioMenuItem-newNamedRadioMenuItemJoinGroup :: WidgetName -> RadioMenuItem -> IO RadioMenuItem-newRadioMenuItemJoinGroupWithLabel :: RadioMenuItem -> String -> IO RadioMenuItem-newNamedRadioMenuItemJoinGroupWithLabel :: WidgetName -> RadioMenuItem -> String -> IO RadioMenuItem-newTearoffMenuItem :: IO TearoffMenuItem-newNamedTearoffMenuItem :: WidgetName -> IO TearoffMenuItem-newWindow :: IO Window-newNamedWindow :: WidgetName -> IO Window-newDialog :: IO Dialog-newNamedDialog :: WidgetName -> IO Dialog-newEventBox :: IO EventBox-newNamedEventBox :: WidgetName -> IO EventBox-newHandleBox :: IO HandleBox-newNamedHandleBox :: WidgetName -> IO HandleBox-newScrolledWindow :: Maybe Adjustment -> Maybe Adjustment -> IO ScrolledWindow-newNamedScrolledWindow :: WidgetName -> Maybe Adjustment -> Maybe Adjustment -> IO ScrolledWindow-newViewport :: Adjustment -> Adjustment -> IO Viewport-newNamedViewport :: WidgetName -> Adjustment -> Adjustment -> IO Viewport-newVBox :: Bool -> Int -> IO VBox-newNamedVBox :: WidgetName -> Bool -> Int -> IO VBox-newHBox :: Bool -> Int -> IO HBox-newNamedHBox :: WidgetName -> Bool -> Int -> IO HBox-newCombo :: IO Combo-newNamedCombo :: WidgetName -> IO Combo-newStatusbar :: IO Statusbar-newNamedStatusbar :: WidgetName -> IO Statusbar-newHPaned :: IO HPaned-newNamedHPaned :: WidgetName -> IO HPaned-newVPaned :: IO VPaned-newNamedVPaned :: WidgetName -> IO VPaned-newLayout :: Maybe Adjustment -> Maybe Adjustment -> IO Layout-newNamedLayout :: WidgetName -> Maybe Adjustment -> Maybe Adjustment -> IO Layout-newMenu :: IO Menu-newNamedMenu :: WidgetName -> IO Menu-newMenuBar :: IO MenuBar-newNamedMenuBar :: WidgetName -> IO MenuBar-newNotebook :: IO Notebook-newNamedNotebook :: WidgetName -> IO Notebook-newTable :: Int -> Int -> Bool -> IO Table-newNamedTable :: WidgetName -> Int -> Int -> Bool -> IO Table-newTextView :: IO TextView-newNamedTextView :: WidgetName -> IO TextView-newToolbar :: IO Toolbar-newNamedToolbar :: WidgetName -> IO Toolbar-newCalendar :: IO Calendar-newNamedCalendar :: WidgetName -> IO Calendar-newEntry :: IO Entry-newNamedEntry :: WidgetName -> IO Entry-newSpinButton :: Adjustment -> Double -> Int -> IO SpinButton-newNamedSpinButton :: String -> Adjustment -> Double -> Int -> IO SpinButton-newSpinButtonWithRange :: Double -> Double -> Double -> IO SpinButton-newNamedSpinButtonWithRange :: WidgetName -> Double -> Double -> Double -> IO SpinButton-newHScale :: Adjustment -> IO HScale-newNamedHScale :: WidgetName -> Adjustment -> IO HScale-newVScale :: Adjustment -> IO VScale-newNamedVScale :: WidgetName -> Adjustment -> IO VScale-newHScrollbar :: Adjustment -> IO HScrollbar-newNamedHScrollbar :: WidgetName -> Adjustment -> IO HScrollbar-newVScrollbar :: Adjustment -> IO VScrollbar-newNamedVScrollbar :: WidgetName -> Adjustment -> IO VScrollbar-newHSeparator :: IO HSeparator-newNamedHSeparator :: WidgetName -> IO HSeparator-newVSeparator :: IO VSeparator-newNamedVSeparator :: WidgetName -> IO VSeparator-newProgressBar :: IO ProgressBar-newNamedProgressBar :: WidgetName -> IO ProgressBar-newAdjustment :: Double -> Double -> Double -> Double -> Double -> Double -> IO Adjustment-newTooltips :: IO Tooltips-newTreeView :: TreeModelClass tm => tm -> IO TreeView-newNamedTreeView :: TreeModelClass tm => WidgetName -> tm -> IO TreeView-newTreeViewWithModel :: TreeModelClass tm => tm -> IO TreeView-newNamedTreeViewWithModel :: TreeModelClass tm => WidgetName -> tm -> IO TreeView-newTreeViewColumn :: IO TreeViewColumn-newIconFactory :: IO IconFactory--module Graphics.UI.Gtk.Mogul.MDialog-assureDialog :: String -> (Dialog -> IO ()) -> (Dialog -> IO ()) -> IO ()--module Graphics.UI.Gtk.Mogul.TreeList-data ListSkel-emptyListSkel :: IO ListSkel-listSkelAddAttribute :: CellRendererClass cr => ListSkel -> Attribute cr argTy -> IO (Association cr, TreeIter -> IO argTy, TreeIter -> argTy -> IO ())-newListStore :: ListSkel -> IO ListStore-data TreeSkel-emptyTreeSkel :: IO TreeSkel-treeSkelAddAttribute :: CellRendererClass r => TreeSkel -> Attribute r argTy -> IO (Association r, TreeIter -> IO argTy, TreeIter -> argTy -> IO ())-newTreeStore :: TreeSkel -> IO TreeStore-data Association cr-data Renderer cr-treeViewColumnNewText :: TreeViewColumn -> Bool -> Bool -> IO (Renderer CellRendererText)-treeViewColumnNewPixbuf :: TreeViewColumn -> Bool -> Bool -> IO (Renderer CellRendererPixbuf)-treeViewColumnNewToggle :: TreeViewColumn -> Bool -> Bool -> IO (Renderer CellRendererToggle)-treeViewColumnAssociate :: CellRendererClass r => Renderer r -> [Association r] -> IO ()-cellRendererSetAttribute :: CellRendererClass cr => Renderer cr -> Attribute cr val -> val -> IO ()-cellRendererGetAttribute :: CellRendererClass cr => Renderer cr -> Attribute cr val -> IO val-onEdited :: TreeModelClass tm => Renderer CellRendererText -> tm -> (TreeIter -> String -> IO ()) -> IO (ConnectId CellRendererText)-afterEdited :: TreeModelClass tm => Renderer CellRendererText -> tm -> (TreeIter -> String -> IO ()) -> IO (ConnectId CellRendererText)--module Graphics.UI.Gtk.Mogul-
− scripts/hoogle/src/Web/res/noresults.inc
@@ -1,7 +0,0 @@-<div id="failure">
-	Your search returned no results:
-	<ul>
-		<li>Make sure you are using the search engine properly, it only searches for Haskell functions</li>
-		<li>Try a smaller substring, for example, if you searched for <tt>mapConcat</tt>, try searching for either <tt>map</tt> or <tt>concat</tt> individually.</li>
-	</ul>
-</div>
− scripts/hoogle/src/Web/res/prefix.inc
@@ -1,63 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-		<title>$ - Hoogle</title>
-		<link type="text/css" rel="stylesheet" href="res/hoogle.css" />
-
-		<script type="text/javascript">
-function addHoogle()
-{
-	addEngine('hoogle','png','Programming','4691');
-}
-
-function addEngine(name,ext,cat,pid)
-{
-  if ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) {
-    window.sidebar.addSearchEngine(
-      "http://mycroft.mozdev.org/install.php/" + pid + "/" + name + ".src",
-      "http://mycroft.mozdev.org/install.php/" + pid + "/" + name + "."+ ext, name, cat );
-  } else {
-    alert("You will need a browser which supports Sherlock to install this plugin.");
-  }
-}
-
-function on_load()
-{
-	document.getElementById('txt').focus();
-}
-		</script>
-	</head>
-	<body onload="on_load()" id="answers">
-
-<table id="header">
-	<tr>
-		<td style="text-align:left;">
-			<a href="http://www.haskell.org/">haskell.org</a>
-		</td>
-		<td style="text-align:right;">
-			<!--[if IE]>
-			<div style="display:none;">
-			<![endif]-->
-			<a href="javascript:addHoogle()">Firefox plugin</a> |
-			<!--[if IE]>
-			</div>
-			<![endif]-->
-			<a href="http://www.haskell.org/haskellwiki/Hoogle/Tutorial">Tutorial</a> |
-			<a href="http://www.haskell.org/haskellwiki/Hoogle">Manual</a>
-		</td>
-</table>
-
-<div id="logo">
-	<a href=".">
-		<img src="res/hoogle_small.png" alt="Hoogle" />
-	</a>
-</div>
-
-<form action="?" method="get">
-	<div>
-		<input name="q" id="txt" type="text" style="width:300px;margin-right:5px;" value="$" />
-		<input style="padding-left:15px;padding-right:15px;" type="submit" value="Search" />
-	</div>
-</form>
-
− scripts/hoogle/src/Web/res/prefix_gtk.inc
@@ -1,65 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-		<title>$ - Hoogle</title>
-		<link type="text/css" rel="stylesheet" href="res/hoogle.css" />
-
-		<script type="text/javascript">
-function addHoogle()
-{
-	addEngine('hoogle','png','Programming','4691');
-}
-
-function addEngine(name,ext,cat,pid)
-{
-  if ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) {
-    window.sidebar.addSearchEngine(
-      "http://mycroft.mozdev.org/install.php/" + pid + "/" + name + ".src",
-      "http://mycroft.mozdev.org/install.php/" + pid + "/" + name + "."+ ext, name, cat );
-  } else {
-    alert("You will need a browser which supports Sherlock to install this plugin.");
-  }
-}
-
-function on_load()
-{
-	document.getElementById('txt').focus();
-}
-		</script>
-	</head>
-	<body onload="on_load()" id="answers">
-
-<table id="header">
-	<tr>
-		<td style="text-align:left;">
-			<a href="http://www.haskell.org/">haskell.org</a>
-		</td>
-		<td style="text-align:right;">
-			<!--[if IE]>
-			<div style="display:none;">
-			<![endif]-->
-			<a href="javascript:addHoogle()">Firefox plugin</a> |
-			<!--[if IE]>
-			</div>
-			<![endif]-->
-			<a href="http://www.haskell.org/haskellwiki/Hoogle/Tutorial">Tutorial</a> |
-			<a href="http://www.haskell.org/haskellwiki/Hoogle">Manual</a>
-		</td>
-</table>
-
-<div id="logo" style="vertical-align: middle">
-	<a href=".">
-		<img src="res/hoogle_small.png" alt="Hoogle" />
-	</a>
-	<a href="http://www.haskell.org/gtk2hs/">Gtk2Hs:</a> 
-</div>
-
-<form action="?" method="get">
-	<div>
-		<input type="hidden" name="package" value="gtk" />
-		<input name="q" id="txt" type="text" style="width:300px;margin-right:5px;" value="$" />
-		<input style="padding-left:15px;padding-right:15px;" type="submit" value="Search" />
-	</div>
-</form>
-
− scripts/hoogle/src/Web/res/suffix.inc
@@ -1,6 +0,0 @@-<p id="footer">
-	&copy; <a href="http://www.cs.york.ac.uk/~ndm/">Neil Mitchell</a> 2004-2006
-</p>
-
-	</body>
-</html>
− scripts/hoogle/src/hoogle.txt
@@ -1,6909 +0,0 @@--- Generated by Hoogle, from Haddock HTML--- (C) Neil Mitchell 2005---module Array-(!) :: Ix a => Array a b -> a -> b-(//) :: Ix a => Array a b -> [(a,b)] -> Array a b-accum :: Ix a => (b -> c -> b) -> Array a b -> [(a,c)] -> Array a b-accumArray :: Ix a => (b -> c -> b) -> b -> (a,a) -> [(a,c)] -> Array a b-array :: Ix a => (a,a) -> [(a,b)] -> Array a b-assocs :: Ix a => Array a b -> [(a,b)]-bounds :: Ix a => Array a b -> (a,a)-elems :: Ix a => Array a b -> [b]-indices :: Ix a => Array a b -> [a]-ixmap :: (Ix a, Ix b) => (a,a) -> (a -> b) -> Array b c -> Array a c-listArray :: Ix a => (a,a) -> [b] -> Array a b--module CPUTime-cpuTimePrecision :: Integer-getCPUTime :: IO Integer--module Char-chr :: Int -> Char-digitToInt :: Char -> Int-intToDigit :: Int -> Char-isAlpha :: Char -> Bool-isAlphaNum :: Char -> Bool-isAscii :: Char -> Bool-isControl :: Char -> Bool-isDigit :: Char -> Bool-isHexDigit :: Char -> Bool-isLatin1 :: a -> Bool-isLower :: Char -> Bool-isOctDigit :: Char -> Bool-isPrint :: Char -> Bool-isSpace :: Char -> Bool-isUpper :: Char -> Bool-lexLitChar :: ReadS String-ord :: Char -> Int-readLitChar :: ReadS Char-showLitChar :: Char -> ShowS-toLower :: Char -> Char-toUpper :: Char -> Char--module Complex-(:+) :: RealFloat a => a -> a -> Complex a-cis :: RealFloat a => a -> Complex a-conjugate :: RealFloat a => Complex a -> Complex a-imagPart :: RealFloat a => Complex a -> a-magnitude :: RealFloat a => Complex a -> a-mkPolar :: RealFloat a => a -> a -> Complex a-phase :: RealFloat a => Complex a -> a-polar :: RealFloat a => Complex a -> (a,a)-realPart :: RealFloat a => Complex a -> a--module Control.Arrow-(&&&) :: Arrow a => a b c -> a b c' -> a b (c,c')-(***) :: Arrow a => a b c -> a b' c' -> a (b,b') (c,c')-(+++) :: ArrowChoice a => a b c -> a b' c' -> a (Either b b') (Either c c')-(<+>) :: ArrowPlus a => a b c -> a b c -> a b c-(<<<) :: Arrow a => a c d -> a b c -> a b d-(<<^) :: Arrow a => a c d -> (b -> c) -> a b d-(>>>) :: Arrow a => a b c -> a c d -> a b d-(>>^) :: Arrow a => a b c -> (c -> d) -> a b d-(^<<) :: Arrow a => (c -> d) -> a b c -> a b d-(^>>) :: Arrow a => (b -> c) -> a c d -> a b d-(|||) :: ArrowChoice a => a b d -> a c d -> a (Either b c) d-ArrowMonad :: (a () b) -> ArrowMonad a b-Kleisli :: a -> m b -> Kleisli m a b-app :: ArrowApply a => a (a b c,b) c-arr :: Arrow a => (b -> c) -> a b c-class Arrow a-class Arrow a => ArrowApply a-class Arrow a => ArrowChoice a-class Arrow a => ArrowLoop a-class Arrow a => ArrowZero a-class ArrowZero a => ArrowPlus a-first :: Arrow a => a b c -> a (b,d) (c,d)-instance ArrowApply a => Monad (ArrowMonad a)-instance Monad m => Arrow (Kleisli m)-instance Monad m => ArrowApply (Kleisli m)-instance Monad m => ArrowChoice (Kleisli m)-instance MonadFix m => ArrowLoop (Kleisli m)-instance MonadPlus m => ArrowPlus (Kleisli m)-instance MonadPlus m => ArrowZero (Kleisli m)-left :: ArrowChoice a => a b c -> a (Either b d) (Either c d)-leftApp :: ArrowApply a => a b c -> a (Either b d) (Either c d)-loop :: ArrowLoop a => a (b,d) (c,d) -> a b c-newtype ArrowMonad a b-newtype Kleisli m a b-pure :: Arrow a => (b -> c) -> a b c-returnA :: Arrow a => a b b-right :: ArrowChoice a => a b c -> a (Either d b) (Either d c)-runKleisli :: Kleisli m a b -> a -> m b-second :: Arrow a => a b c -> a (d,b) (d,c)-zeroArrow :: ArrowZero a => a b c--module Control.Concurrent-data ThreadId-forkIO :: IO () -> IO ThreadId-forkOS :: IO () -> IO ThreadId-instance Data ThreadId-instance Eq ThreadId-instance Ord ThreadId-instance Show ThreadId-instance Typeable ThreadId-isCurrentThreadBound :: IO Bool-killThread :: ThreadId -> IO ()-mergeIO :: [a] -> [a] -> IO [a]-myThreadId :: IO ThreadId-nmergeIO :: [[a]] -> IO [a]-rtsSupportsBoundThreads :: Bool-runInBoundThread :: IO a -> IO a-runInUnboundThread :: IO a -> IO a-threadDelay :: Int -> IO ()-threadWaitRead :: Fd -> IO ()-threadWaitWrite :: Fd -> IO ()-throwTo :: ThreadId -> Exception -> IO ()-yield :: IO ()--module Control.Concurrent.Chan-data Chan a-dupChan :: Chan a -> IO (Chan a)-getChanContents :: Chan a -> IO [a]-instance Typeable1 Chan-isEmptyChan :: Chan a -> IO Bool-newChan :: IO (Chan a)-readChan :: Chan a -> IO a-unGetChan :: Chan a -> a -> IO ()-writeChan :: Chan a -> a -> IO ()-writeList2Chan :: Chan a -> [a] -> IO ()--module Control.Concurrent.MVar-modifyMVar :: MVar a -> (a -> IO (a, b)) -> IO b-modifyMVar_ :: MVar a -> (a -> IO a) -> IO ()-readMVar :: MVar a -> IO a-swapMVar :: MVar a -> a -> IO a-withMVar :: MVar a -> (a -> IO b) -> IO b--module Control.Concurrent.QSem-data QSem-instance Typeable QSem-newQSem :: Int -> IO QSem-signalQSem :: QSem -> IO ()-waitQSem :: QSem -> IO ()--module Control.Concurrent.QSemN-data QSemN-instance Typeable QSemN-newQSemN :: Int -> IO QSemN-signalQSemN :: QSemN -> Int -> IO ()-waitQSemN :: QSemN -> Int -> IO ()--module Control.Concurrent.STM-STM-atomically-catchSTM-check :: Bool -> STM a-orElse-retry--module Control.Concurrent.STM.TChan-data TChan a-dupTChan :: TChan a -> STM (TChan a)-isEmptyTChan :: TChan a -> STM Bool-newTChan :: STM (TChan a)-readTChan :: TChan a -> STM a-unGetTChan :: TChan a -> a -> STM ()-writeTChan :: TChan a -> a -> STM ()--module Control.Concurrent.STM.TMVar-data TMVar a-isEmptyTMVar :: TMVar a -> STM Bool-newEmptyTMVar :: STM (TMVar a)-newTMVar :: a -> STM (TMVar a)-putTMVar :: TMVar a -> a -> STM ()-readTMVar :: TMVar a -> STM a-swapTMVar :: TMVar a -> a -> STM a-takeTMVar :: TMVar a -> STM a-tryPutTMVar :: TMVar a -> a -> STM Bool-tryTakeTMVar :: TMVar a -> STM (Maybe a)--module Control.Concurrent.STM.TVar-TVar-newTVar-readTVar-writeTVar--module Control.Concurrent.SampleVar-emptySampleVar :: SampleVar a -> IO ()-isEmptySampleVar :: SampleVar a -> IO Bool-newEmptySampleVar :: IO (SampleVar a)-newSampleVar :: a -> IO (SampleVar a)-readSampleVar :: SampleVar a -> IO a-type SampleVar a = MVar (Int, MVar a)-writeSampleVar :: SampleVar a -> a -> IO ()--module Control.Exception-ArithException :: ArithException -> Exception-ArrayException :: ArrayException -> Exception-AssertionFailed :: String -> Exception-AsyncException :: AsyncException -> Exception-BlockedIndefinitely :: Exception-BlockedOnDeadMVar :: Exception-Deadlock :: Exception-Denormal :: ArithException-DivideByZero :: ArithException-DynException :: Dynamic -> Exception-ErrorCall :: String -> Exception-ExitException :: ExitCode -> Exception-HeapOverflow :: AsyncException-IOException :: IOException -> Exception-IndexOutOfBounds :: String -> ArrayException-LossOfPrecision :: ArithException-NoMethodError :: String -> Exception-NonTermination :: Exception-Overflow :: ArithException-PatternMatchFail :: String -> Exception-RecConError :: String -> Exception-RecSelError :: String -> Exception-RecUpdError :: String -> Exception-StackOverflow :: AsyncException-ThreadKilled :: AsyncException-UndefinedElement :: String -> ArrayException-Underflow :: ArithException-arithExceptions :: Exception -> Maybe ArithException-assert :: Bool -> a -> a-assertions :: Exception -> Maybe String-asyncExceptions :: Exception -> Maybe AsyncException-block :: IO a -> IO a-bracket_ :: IO a -> IO b -> IO c -> IO c-catch :: IO a -> (Exception -> IO a) -> IO a-catchDyn :: Typeable exception => IO a -> (exception -> IO a) -> IO a-catchJust :: (Exception -> Maybe b) -> IO a -> (b -> IO a) -> IO a-data ArithException-data ArrayException-data AsyncException-data Exception-data IOException-dynExceptions :: Exception -> Maybe Dynamic-errorCalls :: Exception -> Maybe String-evaluate :: a -> IO a-finally :: IO a -> IO b -> IO a-getUncaughtExceptionHandler :: IO (Exception -> IO ())-handle :: (Exception -> IO a) -> IO a -> IO a-handleJust :: (Exception -> Maybe b) -> (b -> IO a) -> IO a -> IO a-instance Eq ArithException-instance Eq ArrayException-instance Eq AsyncException-instance Eq Exception-instance Eq IOException-instance Ord ArithException-instance Ord ArrayException-instance Ord AsyncException-instance Show ArithException-instance Show ArrayException-instance Show AsyncException-instance Show Exception-instance Show IOException-instance Typeable ArithException-instance Typeable ArrayException-instance Typeable AsyncException-instance Typeable Exception-instance Typeable IOException-ioErrors :: Exception -> Maybe IOError-mapException :: (Exception -> Exception) -> a -> a-setUncaughtExceptionHandler :: (Exception -> IO ()) -> IO ()-throw :: Exception -> a-throwDyn :: Typeable exception => exception -> b-throwDynTo :: Typeable exception => ThreadId -> exception -> IO ()-throwIO :: Exception -> IO a-try :: IO a -> IO (Either Exception a)-tryJust :: (Exception -> Maybe b) -> IO a -> IO (Either b a)-unblock :: IO a -> IO a-userErrors :: Exception -> Maybe String--module Control.Monad-ap :: Monad m => m (a -> b) -> m a -> m b-class Monad m => MonadPlus m-filterM :: Monad m => (a -> m Bool) -> [a] -> m [a]-foldM :: Monad m => (a -> b -> m a) -> a -> [b] -> m a-foldM_ :: Monad m => (a -> b -> m a) -> a -> [b] -> m ()-guard :: MonadPlus m => Bool -> m ()-join :: Monad m => m (m a) -> m a-liftM :: Monad m => (a1 -> r) -> m a1 -> m r-liftM2 :: Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r-liftM3 :: Monad m => (a1 -> a2 -> a3 -> r) -> m a1 -> m a2 -> m a3 -> m r-liftM4 :: Monad m => (a1 -> a2 -> a3 -> a4 -> r) -> m a1 -> m a2 -> m a3 -> m a4 -> m r-liftM5 :: Monad m => (a1 -> a2 -> a3 -> a4 -> a5 -> r) -> m a1 -> m a2 -> m a3 -> m a4 -> m a5 -> m r-mapAndUnzipM :: Monad m => (a -> m (b, c)) -> [a] -> m ([b], [c])-mplus :: MonadPlus m => m a -> m a -> m a-msum :: MonadPlus m => [m a] -> m a-mzero :: MonadPlus m => m a-replicateM :: Monad m => Int -> m a -> m [a]-replicateM_ :: Monad m => Int -> m a -> m ()-unless :: Monad m => Bool -> m () -> m ()-when :: Monad m => Bool -> m () -> m ()-zipWithM :: Monad m => (a -> b -> m c) -> [a] -> [b] -> m [c]-zipWithM_ :: Monad m => (a -> b -> m c) -> [a] -> [b] -> m ()--module Control.Monad.Cont-Cont :: ((a -> r) -> r) -> Cont r a-ContT :: ((a -> m r) -> m r) -> ContT r m a-callCC :: MonadCont m => ((a -> m b) -> m a) -> m a-class Monad m => MonadCont m-instance Functor (Cont r)-instance Monad (Cont r)-instance Monad m => Functor (ContT r m)-instance Monad m => Monad (ContT r m)-instance Monad m => MonadCont (ContT r m)-instance MonadCont (Cont r)-instance MonadIO m => MonadIO (ContT r m)-instance MonadReader r' m => MonadReader r' (ContT r m)-instance MonadState s m => MonadState s (ContT r m)-instance MonadTrans (ContT r)-mapCont :: (r -> r) -> Cont r a -> Cont r a-mapContT :: (m r -> m r) -> ContT r m a -> ContT r m a-newtype Cont r a-newtype ContT r m a-runCont :: Cont r a -> ((a -> r) -> r)-runContT :: ContT r m a -> ((a -> m r) -> m r)-withCont :: ((b -> r) -> a -> r) -> Cont r a -> Cont r b-withContT :: ((b -> m r) -> a -> m r) -> ContT r m a -> ContT r m b--module Control.Monad.Error-ErrorT :: (m (Either e a)) -> ErrorT e m a-catchError :: MonadError e m => m a -> (e -> m a) -> m a-class Error a-class Monad m => MonadError e m -instance (Error e, MonadCont m) => MonadCont (ErrorT e m)-instance (Error e, MonadIO m) => MonadIO (ErrorT e m)-instance (Error e, MonadReader r m) => MonadReader r (ErrorT e m)-instance (Error e, MonadState s m) => MonadState s (ErrorT e m)-instance (Error e, MonadWriter w m) => MonadWriter w (ErrorT e m)-instance (Monad m, Error e) => Monad (ErrorT e m)-instance (Monad m, Error e) => MonadError e (ErrorT e m)-instance (Monad m, Error e) => MonadPlus (ErrorT e m)-instance (MonadFix m, Error e) => MonadFix (ErrorT e m)-instance Error e => MonadTrans (ErrorT e)-instance Monad m => Functor (ErrorT e m)-mapErrorT :: (m (Either e a) -> n (Either e' b)) -> ErrorT e m a -> ErrorT e' n b-newtype ErrorT e m a-noMsg :: Error a => a-runErrorT :: ErrorT e m a -> (m (Either e a))-strMsg :: Error a => String -> a-throwError :: MonadError e m => e -> m a--module Control.Monad.Fix-class Monad m => MonadFix m-fix :: (a -> a) -> a-mfix :: MonadFix m => (a -> m a) -> m a--module Control.Monad.Identity-Identity :: a -> Identity a-instance Functor Identity-instance Monad Identity-instance MonadFix Identity-newtype Identity a-runIdentity :: Identity a -> a--module Control.Monad.List-ListT :: m [a] -> ListT m a-instance Monad m => Functor (ListT m)-instance Monad m => Monad (ListT m)-instance Monad m => MonadPlus (ListT m)-instance MonadCont m => MonadCont (ListT m)-instance MonadError e m => MonadError e (ListT m)-instance MonadIO m => MonadIO (ListT m)-instance MonadReader s m => MonadReader s (ListT m)-instance MonadState s m => MonadState s (ListT m)-instance MonadTrans ListT-mapListT :: (m [a] -> n [b]) -> ListT m a -> ListT n b-newtype ListT m a-runListT :: ListT m a -> m [a]--module Control.Monad.RWS-RWS :: (r -> s -> (a,s,w)) -> RWS r w s a-RWST :: (r -> s -> m (a,s,w)) -> RWST r w s m a-evalRWS :: RWS r w s a -> r -> s -> (a, w)-evalRWST :: Monad m => RWST r w s m a -> r -> s -> m (a, w)-execRWS :: RWS r w s a -> r -> s -> (s, w)-execRWST :: Monad m => RWST r w s m a -> r -> s -> m (s, w)-instance (Monoid w, Monad m) => Monad (RWST r w s m)-instance (Monoid w, Monad m) => MonadReader r (RWST r w s m)-instance (Monoid w, Monad m) => MonadState s (RWST r w s m)-instance (Monoid w, Monad m) => MonadWriter w (RWST r w s m)-instance (Monoid w, MonadCont m) => MonadCont (RWST r w s m)-instance (Monoid w, MonadError e m) => MonadError e (RWST r w s m)-instance (Monoid w, MonadFix m) => MonadFix (RWST r w s m)-instance (Monoid w, MonadIO m) => MonadIO (RWST r w s m)-instance (Monoid w, MonadPlus m) => MonadPlus (RWST r w s m)-instance Functor (RWS r w s)-instance Monad m => Functor (RWST r w s m)-instance Monoid w => Monad (RWS r w s)-instance Monoid w => MonadFix (RWS r w s)-instance Monoid w => MonadReader r (RWS r w s)-instance Monoid w => MonadState s (RWS r w s)-instance Monoid w => MonadTrans (RWST r w s)-instance Monoid w => MonadWriter w (RWS r w s)-mapRWS :: ((a, s, w) -> (b, s, w')) -> RWS r w s a -> RWS r w' s b-mapRWST :: (m (a, s, w) -> n (b, s, w')) -> RWST r w s m a -> RWST r w' s n b-newtype RWS r w s a-newtype RWST r w s m a-runRWS :: RWS r w s a -> (r -> s -> (a,s,w))-runRWST :: RWST r w s m a -> (r -> s -> m (a,s,w))-withRWS :: (r' -> s -> (r, s)) -> RWS r w s a -> RWS r' w s a-withRWST :: (r' -> s -> (r, s)) -> RWST r w s m a -> RWST r' w s m a--module Control.Monad.Reader-Reader :: r -> a -> Reader r a-ReaderT :: r -> m a -> ReaderT r m a-ask :: MonadReader r m => m r-asks :: MonadReader r m => (r -> a) -> m a-class Monad m => MonadReader r m -instance Functor (Reader r)-instance Monad (Reader r)-instance Monad m => Functor (ReaderT r m)-instance Monad m => Monad (ReaderT r m)-instance Monad m => MonadReader r (ReaderT r m)-instance MonadCont m => MonadCont (ReaderT r m)-instance MonadError e m => MonadError e (ReaderT r m)-instance MonadFix (Reader r)-instance MonadFix m => MonadFix (ReaderT r m)-instance MonadIO m => MonadIO (ReaderT r m)-instance MonadPlus m => MonadPlus (ReaderT r m)-instance MonadReader r (Reader r)-instance MonadState s m => MonadState s (ReaderT r m)-instance MonadTrans (ReaderT r)-instance MonadWriter w m => MonadWriter w (ReaderT r m)-local :: MonadReader r m => (r -> r) -> m a -> m a-mapReader :: (a -> b) -> Reader r a -> Reader r b-mapReaderT :: (m a -> n b) -> ReaderT w m a -> ReaderT w n b-newtype Reader r a-newtype ReaderT r m a-runReader :: Reader r a -> r -> a-runReaderT :: ReaderT r m a -> r -> m a-withReader :: (r' -> r) -> Reader r a -> Reader r' a-withReaderT :: (r' -> r) -> ReaderT r m a -> ReaderT r' m a--module Control.Monad.ST-data RealWorld-data ST s a-fixST :: (a -> ST s a) -> ST s a-instance (Typeable s, Typeable a) => Data (ST s a)-instance Functor (ST s)-instance MArray (STArray s) e (ST s)-instance Monad (ST s)-instance MonadFix (ST s)-instance Show (ST s a)-instance Typeable RealWorld-instance Typeable2 ST-runST :: (ST s a) -> a-stToIO :: ST RealWorld a -> IO a-unsafeIOToST :: IO a -> ST s a-unsafeInterleaveST :: ST s a -> ST s a--module Control.Monad.ST.Lazy-lazyToStrictST :: ST s a -> ST s a-strictToLazyST :: ST s a -> ST s a--module Control.Monad.State-State :: (s -> (a,s)) -> State s a-StateT :: (s -> m (a,s)) -> StateT s m a-class Monad m => MonadState s m -evalState :: State s a -> s -> a-evalStateT :: Monad m => StateT s m a -> s -> m a-execState :: State s a -> s -> s-execStateT :: Monad m => StateT s m a -> s -> m s-get :: MonadState s m => m s-gets :: MonadState s m => (s -> a) -> m a-instance Functor (State s)-instance Monad (State s)-instance Monad m => Functor (StateT s m)-instance Monad m => Monad (StateT s m)-instance Monad m => MonadState s (StateT s m)-instance MonadCont m => MonadCont (StateT s m)-instance MonadError e m => MonadError e (StateT s m)-instance MonadFix (State s)-instance MonadFix m => MonadFix (StateT s m)-instance MonadIO m => MonadIO (StateT s m)-instance MonadPlus m => MonadPlus (StateT s m)-instance MonadReader r m => MonadReader r (StateT s m)-instance MonadState s (State s)-instance MonadTrans (StateT s)-instance MonadWriter w m => MonadWriter w (StateT s m)-mapState :: ((a, s) -> (b, s)) -> State s a -> State s b-mapStateT :: (m (a, s) -> n (b, s)) -> StateT s m a -> StateT s n b-modify :: MonadState s m => (s -> s) -> m ()-newtype State s a-newtype StateT s m a-put :: MonadState s m => s -> m ()-runState :: State s a -> (s -> (a,s))-runStateT :: StateT s m a -> (s -> m (a,s))-withState :: (s -> s) -> State s a -> State s a-withStateT :: (s -> s) -> StateT s m a -> StateT s m a--module Control.Monad.Trans-class Monad m => MonadIO m-class MonadTrans t-lift :: (MonadTrans t, Monad m) => m a -> t m a-liftIO :: MonadIO m => IO a -> m a--module Control.Monad.Writer-Writer :: a,w -> Writer w a-WriterT :: (m (a,w)) -> WriterT w m a-censor :: MonadWriter w m => (w -> w) -> m a -> m a-class (Monoid w, Monad m) => MonadWriter w m -execWriter :: Writer w a -> w-execWriterT :: Monad m => WriterT w m a -> m w-instance (Monoid w, Monad m) => Monad (WriterT w m)-instance (Monoid w, Monad m) => MonadWriter w (WriterT w m)-instance (Monoid w, MonadCont m) => MonadCont (WriterT w m)-instance (Monoid w, MonadError e m) => MonadError e (WriterT w m)-instance (Monoid w, MonadFix m) => MonadFix (WriterT w m)-instance (Monoid w, MonadIO m) => MonadIO (WriterT w m)-instance (Monoid w, MonadPlus m) => MonadPlus (WriterT w m)-instance (Monoid w, MonadReader r m) => MonadReader r (WriterT w m)-instance (Monoid w, MonadState s m) => MonadState s (WriterT w m)-instance Functor (Writer w)-instance Monad m => Functor (WriterT w m)-instance Monoid w => Monad (Writer w)-instance Monoid w => MonadFix (Writer w)-instance Monoid w => MonadTrans (WriterT w)-instance Monoid w => MonadWriter w (Writer w)-listen :: MonadWriter w m => m a -> m (a,w)-listens :: MonadWriter w m => (w -> b) -> m a -> m (a, b)-mapWriter :: ((a, w) -> (b, w')) -> Writer w a -> Writer w' b-mapWriterT :: (m (a, w) -> n (b, w')) -> WriterT w m a -> WriterT w' n b-newtype Writer w a-newtype WriterT w m a-pass :: MonadWriter w m => m (a,w -> w) -> m a-runWriter :: Writer w a -> a,w-runWriterT :: WriterT w m a -> (m (a,w))-tell :: MonadWriter w m => w -> m ()--module Control.Parallel-par :: a -> b -> b--module Control.Parallel.Strategies-($|) :: (a -> b) -> Strategy a -> a -> b-($||) :: (a -> b) -> Strategy a -> a -> b-(-|) :: (a -> b) -> Strategy b -> (b -> c) -> a -> c-(-||) :: (a -> b) -> Strategy b -> (b -> c) -> a -> c-(.|) :: (b -> c) -> Strategy b -> (a -> b) -> a -> c-(.||) :: (b -> c) -> Strategy b -> (a -> b) -> a -> c-(:=) :: a -> b -> Assoc a b-(>|) :: Done -> Done -> Done-(>||) :: Done -> Done -> Done-class (NFData a, Integral a) => NFDataInt-class (NFData a, Ord a) => NFDa-class NFData a-data Assoc a b-demanding :: a -> Done -> a-force :: NFData a => a -> a-fstPairFstList :: NFData a => Strategy [(a, b)]-instance (NFData a, NFData b) => NFData (Assoc a b)-parArr :: Ix b => Strategy a -> Strategy (Array b a)-parBuffer :: Int -> Strategy a -> [a] -> [a]-parFlatMap :: Strategy [b] -> (a -> [b]) -> [a] -> [b]-parList :: Strategy a -> Strategy [a]-parListChunk :: Int -> Strategy a -> Strategy [a]-parListN :: Integral b => b -> Strategy a -> Strategy [a]-parListNth :: Int -> Strategy a -> Strategy [a]-parMap :: Strategy b -> (a -> b) -> [a] -> [b]-parPair :: Strategy a -> Strategy b -> Strategy (a, b)-parTriple :: Strategy a -> Strategy b -> Strategy c -> Strategy (a, b, c)-parZipWith :: Strategy c -> (a -> b -> c) -> [a] -> [b] -> [c]-r0 :: Strategy a-rnf :: NFData a => Strategy a-rwhnf :: Strategy a-sPar :: a -> Strategy b-sSeq :: a -> Strategy b-seqArr :: Ix b => Strategy a -> Strategy (Array b a)-seqList :: Strategy a -> Strategy [a]-seqListN :: Integral a => a -> Strategy b -> Strategy [b]-seqListNth :: Int -> Strategy b -> Strategy [b]-seqPair :: Strategy a -> Strategy b -> Strategy (a, b)-seqTriple :: Strategy a -> Strategy b -> Strategy c -> Strategy (a, b, c)-sforce :: NFData a => a -> b -> b-sparking :: a -> Done -> a-type Done = ()-type Strategy a = a -> Done-using :: a -> Strategy a -> a--module Data.Array-(!) :: Ix i => Array i e -> i -> e-(//) :: Ix i => Array i e -> [(i, e)] -> Array i e-accum :: Ix i => (e -> a -> e) -> Array i e -> [(i, a)] -> Array i e-accumArray :: Ix i => (e -> a -> e) -> e -> (i, i) -> [(i, a)] -> Array i e-array :: Ix i => (i, i) -> [(i, e)] -> Array i e-assocs :: Ix i => Array i e -> [(i, e)]-bounds :: Ix i => Array i e -> (i, i)-data Array i e-elems :: Ix i => Array i e -> [e]-indices :: Ix i => Array i e -> [i]-instance (Ix a, NFData a, NFData b) => NFData (Array a b)-instance (Ix a, Read a, Read b) => Read (Array a b)-instance (Ix a, Show a, Show b) => Show (Array a b)-instance (Ix i, Eq e) => Eq (Array i e)-instance (Ix i, Ord e) => Ord (Array i e)-instance (Typeable a, Data b, Ix a) => Data (Array a b)-instance HasBounds Array-instance IArray Array e-instance Ix i => Functor (Array i)-instance Ix i => FunctorM (Array i)-instance Typeable2 Array-ixmap :: (Ix i, Ix j) => (i, i) -> (i -> j) -> Array j e -> Array i e-listArray :: Ix i => (i, i) -> [e] -> Array i e--module Data.Array.Diff-data IOToDiffArray a i e-instance HasBounds a => HasBounds (IOToDiffArray a)-instance IArray (IOToDiffArray IOArray) e-newDiffArray :: (MArray a e IO, Ix i) => (i, i) -> [(Int, e)] -> IO (IOToDiffArray a i e)-readDiffArray :: (MArray a e IO, Ix i) => IOToDiffArray a i e -> Int -> IO e-replaceDiffArray :: (MArray a e IO, Ix i) => IOToDiffArray a i e -> [(Int, e)] -> IO (IOToDiffArray a i e)-type DiffArray = IOToDiffArray IOArray-type DiffUArray = IOToDiffArray IOUArray--module Data.Array.IArray-(!) :: (IArray a e, Ix i) => a i e -> i -> e-(//) :: (IArray a e, Ix i) => a i e -> [(i, e)] -> a i e-accum :: (IArray a e, Ix i) => (e -> e' -> e) -> a i e -> [(i, e')] -> a i e-accumArray :: (IArray a e, Ix i) => (e -> e' -> e) -> e -> (i, i) -> [(i, e')] -> a i e-amap :: (IArray a e', IArray a e, Ix i) => (e' -> e) -> a i e' -> a i e-array :: (IArray a e, Ix i) => (i, i) -> [(i, e)] -> a i e-assocs :: (IArray a e, Ix i) => a i e -> [(i, e)]-bounds :: (HasBounds a, Ix i) => a i e -> (i, i)-bounds :: (HasBounds a, Ix i) => a i e -> (i,i)-class HasBounds a-class HasBounds a => IAr-elems :: (IArray a e, Ix i) => a i e -> [e]-indices :: (HasBounds a, Ix i) => a i e -> [i]-ixmap :: (IArray a e, Ix i, Ix j) => (i, i) -> (i -> j) -> a j e -> a i e-listArray :: (IArray a e, Ix i) => (i, i) -> [e] -> a i e--module Data.Array.IO-castIOUArray :: IOUArray ix a -> IO (IOUArray ix b)-data IOArray i e-data IOUArray i e-hGetArray :: Handle -> IOUArray Int Word8 -> Int -> IO Int-hPutArray :: Handle -> IOUArray Int Word8 -> Int -> IO ()-instance Eq (IOArray i e)-instance HasBounds IOArray-instance HasBounds IOUArray-instance Typeable2 IOArray-instance Typeable2 IOUArray--module Data.Array.MArray-class (HasBounds a, Monad m) => MArray a e m-freeze :: (Ix i, MArray a e m, IArray b e) => a i e -> m (b i e)-getAssocs :: (MArray a e m, Ix i) => a i e -> m [(i, e)]-getElems :: (MArray a e m, Ix i) => a i e -> m [e]-mapArray :: (MArray a e' m, MArray a e m, Ix i) => (e' -> e) -> a i e' -> m (a i e)-mapIndices :: (MArray a e m, Ix i, Ix j) => (i, i) -> (i -> j) -> a j e -> m (a i e)-newArray :: (MArray a e m, Ix i) => (i, i) -> e -> m (a i e)-newArray :: (MArray a e m, Ix i) => (i,i) -> e -> m (a i e)-newArray_ :: (MArray a e m, Ix i) => (i, i) -> m (a i e)-newArray_ :: (MArray a e m, Ix i) => (i,i) -> m (a i e)-newListArray :: (MArray a e m, Ix i) => (i, i) -> [e] -> m (a i e)-readArray :: (MArray a e m, Ix i) => a i e -> i -> m e-thaw :: (Ix i, IArray a e, MArray b e m) => a i e -> m (b i e)-unsafeFreeze :: (Ix i, MArray a e m, IArray b e) => a i e -> m (b i e)-unsafeThaw :: (Ix i, IArray a e, MArray b e m) => a i e -> m (b i e)-writeArray :: (MArray a e m, Ix i) => a i e -> i -> e -> m ()--module Data.Array.ST-castSTUArray :: STUArray s ix a -> ST s (STUArray s ix b)-data STArray s i e-data STUArray s i a-instance Eq (STArray s i e)-instance HasBounds (STArray s)-instance HasBounds (STUArray s)-instance Typeable3 STArray-instance Typeable3 STUArray-runSTArray :: Ix i => (ST s (STArray s i e)) -> Array i e-runSTUArray :: Ix i => (ST s (STUArray s i e)) -> UArray i e--module Data.Array.Storable-data StorableArray i e-instance HasBounds StorableArray-touchStorableArray :: StorableArray i e -> IO ()-withStorableArray :: StorableArray i e -> (Ptr e -> IO a) -> IO a--module Data.Array.Unboxed-data UArray i e-instance HasBounds UArray-instance Typeable2 UArray--module Data.Bits-(.&.) :: Bits a => a -> a -> a-(.|.) :: Bits a => a -> a -> a-bit :: Bits a => Int -> a-bitSize :: Bits a => a -> Int-class Num a => Bits a-clearBit :: Bits a => a -> Int -> a-complement :: Bits a => a -> a-complementBit :: Bits a => a -> Int -> a-isSigned :: Bits a => a -> Bool-rotate :: Bits a => a -> Int -> a-rotateL :: Bits a => a -> Int -> a-rotateR :: Bits a => a -> Int -> a-setBit :: Bits a => a -> Int -> a-shift :: Bits a => a -> Int -> a-shiftL :: Bits a => a -> Int -> a-shiftR :: Bits a => a -> Int -> a-testBit :: Bits a => a -> Int -> Bool-xor :: Bits a => a -> a -> a--module Data.Char-isLatin1 :: Char -> Bool--module Data.Complex-(:+) :: !a -> !a -> Complex a-data Complex a-instance (RealFloat a, Eq a) => Eq (Complex a)-instance (RealFloat a, NFData a) => NFData (Complex a)-instance (RealFloat a, Read a) => Read (Complex a)-instance (RealFloat a, Show a) => Show (Complex a)-instance RealFloat a => Floating (Complex a)-instance RealFloat a => Fractional (Complex a)-instance RealFloat a => Num (Complex a)-instance Typeable1 Complex-polar :: RealFloat a => Complex a -> (a, a)--module Data.Dynamic-data Dynamic-dynApp :: Dynamic -> Dynamic -> Dynamic-dynApply :: Dynamic -> Dynamic -> Maybe Dynamic-fromDyn :: Typeable a => Dynamic -> a -> a-fromDynamic :: Typeable a => Dynamic -> Maybe a-instance Show Dynamic-instance Typeable Dynamic-toDyn :: Typeable a => a -> Dynamic--module Data.FiniteMap-addListToFM :: Ord key => FiniteMap key elt -> [(key, elt)] -> FiniteMap key elt-addListToFM_C :: Ord key => (elt -> elt -> elt) -> FiniteMap key elt -> [(key, elt)] -> FiniteMap key elt-addToFM :: Ord key => FiniteMap key elt -> key -> elt -> FiniteMap key elt-addToFM_C :: Ord key => (elt -> elt -> elt) -> FiniteMap key elt -> key -> elt -> FiniteMap key elt-data FiniteMap key elt-delFromFM :: Ord key => FiniteMap key elt -> key -> FiniteMap key elt-delListFromFM :: Ord key => FiniteMap key elt -> [key] -> FiniteMap key elt-elemFM :: Ord key => key -> FiniteMap key elt -> Bool-eltsFM :: FiniteMap key elt -> [elt]-eltsFM_GE :: Ord key => FiniteMap key elt -> key -> [elt]-eltsFM_LE :: Ord key => FiniteMap key elt -> key -> [elt]-emptyFM :: FiniteMap key elt-filterFM :: Ord key => (key -> elt -> Bool) -> FiniteMap key elt -> FiniteMap key elt-fmToList :: FiniteMap key elt -> [(key, elt)]-fmToList_GE :: Ord key => FiniteMap key elt -> key -> [(key, elt)]-fmToList_LE :: Ord key => FiniteMap key elt -> key -> [(key, elt)]-foldFM :: (key -> elt -> a -> a) -> a -> FiniteMap key elt -> a-foldFM_GE :: Ord key => (key -> elt -> a -> a) -> a -> key -> FiniteMap key elt -> a-foldFM_LE :: Ord key => (key -> elt -> a -> a) -> a -> key -> FiniteMap key elt -> a-instance (Data a, Data b, Ord a) => Data (FiniteMap a b)-instance (Eq key, Eq elt) => Eq (FiniteMap key elt)-instance (Show k, Show e) => Show (FiniteMap k e)-instance Functor (FiniteMap k)-instance Typeable2 FiniteMap-intersectFM :: Ord key => FiniteMap key elt -> FiniteMap key elt -> FiniteMap key elt-intersectFM_C :: Ord key => (elt1 -> elt2 -> elt3) -> FiniteMap key elt1 -> FiniteMap key elt2 -> FiniteMap key elt3-isEmptyFM :: FiniteMap key elt -> Bool-keysFM :: FiniteMap key elt -> [key]-keysFM_GE :: Ord key => FiniteMap key elt -> key -> [key]-keysFM_LE :: Ord key => FiniteMap key elt -> key -> [key]-listToFM :: Ord key => [(key, elt)] -> FiniteMap key elt-lookupFM :: Ord key => FiniteMap key elt -> key -> Maybe elt-lookupWithDefaultFM :: Ord key => FiniteMap key elt -> elt -> key -> elt-mapFM :: (key -> elt1 -> elt2) -> FiniteMap key elt1 -> FiniteMap key elt2-maxFM :: Ord key => FiniteMap key elt -> Maybe key-minFM :: Ord key => FiniteMap key elt -> Maybe key-minusFM :: Ord key => FiniteMap key elt1 -> FiniteMap key elt2 -> FiniteMap key elt1-plusFM :: Ord key => FiniteMap key elt -> FiniteMap key elt -> FiniteMap key elt-plusFM_C :: Ord key => (elt -> elt -> elt) -> FiniteMap key elt -> FiniteMap key elt -> FiniteMap key elt-sizeFM :: FiniteMap key elt -> Int-unitFM :: key -> elt -> FiniteMap key elt--module Data.FunctorM-class FunctorM f-fmapM :: (FunctorM f, Monad m) => (a -> m b) -> f a -> m (f b)-fmapM_ :: (FunctorM f, Monad m) => (a -> m b) -> f a -> m ()--module Data.Generics.Aliases-GM :: Data a => a -> m a -> GenericM' m-GQ :: GenericQ r -> GenericQ' r-GT :: Data a => a -> a -> GenericT'-Generic' :: Generic c -> Generic' c-choiceMp :: MonadPlus m => GenericM m -> GenericM m -> GenericM m-choiceQ :: MonadPlus m => GenericQ (m r) -> GenericQ (m r) -> GenericQ (m r)-data Generic' c-ext0 :: (Typeable a, Typeable b) => c a -> c b -> c a-ext1M :: (Monad m, Data d, Typeable1 t) => (d -> m d) -> (t d -> m (t d)) -> d -> m d-ext1Q :: (Data d, Typeable1 t) => (d -> q) -> (t d -> q) -> d -> q-ext1R :: (Monad m, Data d, Typeable1 t) => m d -> (m (t d)) -> m d-ext1T :: (Data d, Typeable1 t) => (d -> d) -> (t d -> t d) -> d -> d-extB :: (Typeable a, Typeable b) => a -> b -> a-extM :: (Monad m, Typeable a, Typeable b) => (a -> m a) -> (b -> m b) -> a -> m a-extMp :: (MonadPlus m, Typeable a, Typeable b) => (a -> m a) -> (b -> m b) -> a -> m a-extQ :: (Typeable a, Typeable b) => (a -> q) -> (b -> q) -> a -> q-extR :: (Monad m, Typeable a, Typeable b) => m a -> m b -> m a-extT :: (Typeable a, Typeable b) => (a -> a) -> (b -> b) -> a -> a-mkM :: (Monad m, Typeable a, Typeable b) => (b -> m b) -> a -> m a-mkMp :: (MonadPlus m, Typeable a, Typeable b) => (b -> m b) -> a -> m a-mkQ :: (Typeable a, Typeable b) => r -> (b -> r) -> a -> r-mkR :: (MonadPlus m, Typeable a, Typeable b) => m b -> m a-mkT :: (Typeable a, Typeable b) => (b -> b) -> a -> a-newtype GenericM' m-newtype GenericQ' r-newtype GenericT'-orElse :: Maybe a -> Maybe a -> Maybe a-recoverMp :: MonadPlus m => GenericM m -> GenericM m-recoverQ :: MonadPlus m => r -> GenericQ (m r) -> GenericQ (m r)-type Generic c = a -> c a-type GenericB = a-type GenericM m = a -> m a-type GenericQ r = a -> r-type GenericR m = m a-type GenericT = a -> a-unGM :: Data a => GenericM' m -> a -> m a-unGQ :: GenericQ' r -> GenericQ r-unGT :: Data a => GenericT' -> a -> a-unGeneric' :: Generic' c -> Generic c--module Data.Generics.Basics-AlgConstr :: ConIndex -> ConstrRep-AlgRep :: [Constr] -> DataRep-FloatConstr :: Double -> ConstrRep-FloatRep :: DataRep-Infix :: Fixity-IntConstr :: Integer -> ConstrRep-IntRep :: DataRep-NoRep :: DataRep-Prefix :: Fixity-StringConstr :: String -> ConstrRep-StringRep :: DataRep-class Typeable a => Data a-constrFields :: Constr -> [String]-constrFixity :: Constr -> Fixity-constrIndex :: Constr -> ConIndex-constrRep :: Constr -> ConstrRep-constrType :: Constr -> DataType-data Constr-data ConstrRep-data DataRep-data DataType-data Fixity-dataCast1 :: (Data a, Typeable1 t) => (c (t a)) -> Maybe (c a)-dataCast2 :: (Data a, Typeable2 t) => (c (t a b)) -> Maybe (c a)-dataTypeConstrs :: DataType -> [Constr]-dataTypeName :: DataType -> String-dataTypeOf :: Data a => a -> DataType-dataTypeRep :: DataType -> DataRep-fromConstr :: Data a => Constr -> a-fromConstrB :: Data a => (a) -> Constr -> a-fromConstrM :: (Monad m, Data a) => (m a) -> Constr -> m a-gfoldl :: Data a => (c (a -> b) -> a -> c b) -> (g -> c g) -> a -> c a-gmapM :: (Data a, Monad m) => (a -> m a) -> a -> m a-gmapMo :: (Data a, MonadPlus m) => (a -> m a) -> a -> m a-gmapMp :: (Data a, MonadPlus m) => (a -> m a) -> a -> m a-gmapQ :: Data a => (a -> u) -> a -> [u]-gmapQi :: Data a => Int -> (a -> u) -> a -> u-gmapQl :: Data a => (r -> r' -> r) -> r -> (a -> r') -> a -> r-gmapQr :: Data a => (r' -> r -> r) -> r -> (a -> r') -> a -> r-gmapT :: Data a => (b -> b) -> a -> a-gunfold :: Data a => (c (b -> r) -> c r) -> (r -> c r) -> Constr -> c a-indexConstr :: DataType -> ConIndex -> Constr-instance Data DataType-instance Eq Constr-instance Eq ConstrRep-instance Eq DataRep-instance Eq Fixity-instance Show Constr-instance Show ConstrRep-instance Show DataRep-instance Show DataType-instance Show Fixity-instance Typeable DataType-isAlgType :: DataType -> Bool-isNorepType :: DataType -> Bool-maxConstrIndex :: DataType -> ConIndex-mkConstr :: DataType -> String -> [String] -> Fixity -> Constr-mkDataType :: String -> [Constr] -> DataType-mkFloatConstr :: DataType -> Double -> Constr-mkFloatType :: String -> DataType-mkIntConstr :: DataType -> Integer -> Constr-mkIntType :: String -> DataType-mkNorepType :: String -> DataType-mkStringConstr :: DataType -> String -> Constr-mkStringType :: String -> DataType-readConstr :: DataType -> String -> Maybe Constr-repConstr :: DataType -> ConstrRep -> Constr-showConstr :: Constr -> String-toConstr :: Data a => a -> Constr-tyconModule :: String -> String-tyconUQname :: String -> String-type ConIndex = Int--module Data.Generics.Schemes-everything :: (r -> r -> r) -> GenericQ r -> GenericQ r-everywhere :: (a -> a) -> a -> a-everywhere' :: (a -> a) -> a -> a-everywhereBut :: GenericQ Bool -> GenericT -> GenericT-everywhereM :: Monad m => GenericM m -> GenericM m-gcount :: GenericQ Bool -> GenericQ Int-gdepth :: GenericQ Int-gfindtype :: (Data x, Typeable y) => x -> Maybe y-glength :: GenericQ Int-gnodecount :: GenericQ Int-gsize :: Data a => a -> Int-gtypecount :: Typeable a => a -> GenericQ Int-listify :: Typeable r => (r -> Bool) -> GenericQ [r]-something :: GenericQ (Maybe u) -> GenericQ (Maybe u)-somewhere :: MonadPlus m => GenericM m -> GenericM m-synthesize :: s -> (s -> s -> s) -> GenericQ (s -> s) -> GenericQ s--module Data.Generics.Text-gread :: Data a => ReadS a-gshow :: Data a => a -> String--module Data.Generics.Twins-geq :: Data a => a -> a -> Bool-gfoldlAccum :: Data d => (a -> c (d -> r) -> d -> (a, c r)) -> (a -> g -> (a, c g)) -> a -> d -> (a, c d)-gmapAccumM :: (Data d, Monad m) => (a -> d -> (a, m d)) -> a -> d -> (a, m d)-gmapAccumQ :: Data d => (a -> d -> (a, q)) -> a -> d -> (a, [q])-gmapAccumQl :: Data d => (r -> r' -> r) -> r -> (a -> d -> (a, r')) -> a -> d -> (a, r)-gmapAccumQr :: Data d => (r' -> r -> r) -> r -> (a -> d -> (a, r')) -> a -> d -> (a, r)-gmapAccumT :: Data d => (a -> d -> (a, d)) -> a -> d -> (a, d)-gzip :: (a -> b -> Maybe b) -> a -> b -> Maybe b-gzipWithM :: Monad m => GenericQ (GenericM m) -> GenericQ (GenericM m)-gzipWithQ :: GenericQ (GenericQ r) -> GenericQ (GenericQ [r])-gzipWithT :: GenericQ GenericT -> GenericQ GenericT--module Data.Graph-AcyclicSCC :: vertex -> SCC vertex-CyclicSCC :: [vertex] -> SCC vertex-bcc :: Graph -> Forest [Vertex]-buildG :: Bounds -> [Edge] -> Graph-components :: Graph -> Forest Vertex-data SCC vertex-dff :: Graph -> Forest Vertex-dfs :: Graph -> [Vertex] -> Forest Vertex-edges :: Graph -> [Edge]-flattenSCC :: SCC vertex -> [vertex]-flattenSCCs :: [SCC a] -> [a]-graphFromEdges :: Ord key => [(node, key, [key])] -> (Graph, Vertex -> (node, key, [key]), key -> Maybe Vertex)-graphFromEdges' :: Ord key => [(node, key, [key])] -> (Graph, Vertex -> (node, key, [key]))-indegree :: Graph -> Table Int-outdegree :: Graph -> Table Int-path :: Graph -> Vertex -> Vertex -> Bool-reachable :: Graph -> Vertex -> [Vertex]-scc :: Graph -> Forest Vertex-stronglyConnComp :: Ord key => [(node, key, [key])] -> [SCC node]-stronglyConnCompR :: Ord key => [(node, key, [key])] -> [SCC (node, key, [key])]-topSort :: Graph -> [Vertex]-transposeG :: Graph -> Graph-type Bounds = (Vertex, Vertex)-type Edge = (Vertex, Vertex)-type Graph = Table [Vertex]-type Table a = Array Vertex a-type Vertex = Int-vertices :: Graph -> [Vertex]--module Data.Graph.Inductive-version :: IO ()--module Data.Graph.Inductive.Basic-efilter :: DynGraph gr => (LEdge b -> Bool) -> gr a b -> gr a b-elfilter :: DynGraph gr => (b -> Bool) -> gr a b -> gr a b-gfold :: Graph gr => (Context a b -> [Node]) -> (Context a b -> c -> d) -> (Maybe d -> c -> c, c) -> [Node] -> gr a b -> c-grev :: DynGraph gr => gr a b -> gr a b-gsel :: Graph gr => (Context a b -> Bool) -> gr a b -> [Context a b]-hasLoop :: Graph gr => gr a b -> Bool-isSimple :: Graph gr => gr a b -> Bool-postorder :: Tree a -> [a]-postorderF :: [Tree a] -> [a]-preorder :: Tree a -> [a]-preorderF :: [Tree a] -> [a]-undir :: (Eq b, DynGraph gr) => gr a b -> gr a b-unlab :: DynGraph gr => gr a b -> gr () ()--module Data.Graph.Inductive.Example-a :: Gr Char ()-a' :: IO (SGr Char ())-ab :: Gr Char ()-ab' :: IO (SGr Char ())-abb :: Gr Char ()-abb' :: IO (SGr Char ())-b :: Gr Char ()-b' :: IO (SGr Char ())-c :: Gr Char ()-c' :: IO (SGr Char ())-clr479 :: Gr Char ()-clr479' :: IO (SGr Char ())-clr486 :: Gr String ()-clr486' :: IO (SGr String ())-clr489 :: Gr Char ()-clr489' :: IO (SGr Char ())-clr508 :: Gr Char Int-clr508' :: IO (SGr Char Int)-clr528 :: Gr Char Int-clr528' :: IO (SGr Char Int)-clr595 :: Gr Int Int-cyc3 :: Gr Char String-d1 :: Gr Int Int-d1' :: IO (SGr Int Int)-d3 :: Gr Int Int-d3' :: IO (SGr Int Int)-dag3 :: Gr Char ()-dag3' :: IO (SGr Char ())-dag4 :: Gr Int ()-dag4' :: IO (SGr Int ())-e :: Gr Char ()-e' :: IO (SGr Char ())-e3 :: Gr () String-e3' :: IO (SGr () String)-g3 :: Gr Char String-g3b :: Gr Char String-genLNodes :: Enum a => a -> Int -> [LNode a]-genUNodes :: Int -> [UNode]-gr1 :: Gr Int Int-kin248 :: Gr Int ()-kin248' :: IO (SGr Int ())-labUEdges :: [Edge] -> [UEdge]-loop :: Gr Char ()-loop' :: IO (SGr Char ())-noEdges :: [UEdge]-star :: Graph gr => Int -> gr () ()-starM :: GraphM m gr => Int -> m (gr () ())-ucycle :: Graph gr => Int -> gr () ()-ucycleM :: GraphM m gr => Int -> m (gr () ())-vor :: Gr String Int-vor' :: IO (SGr String Int)--module Data.Graph.Inductive.Graph-(&) :: DynGraph gr => Context a b -> gr a b -> gr a b-LP :: [LNode a] -> LPath a-buildGr :: DynGraph gr => [Context a b] -> gr a b-class Graph gr-class Graph gr => DynGraph gr-context :: Graph gr => gr a b -> Node -> Context a b-deg :: Graph gr => gr a b -> Node -> Int-deg' :: Context a b -> Int-delEdge :: DynGraph gr => Edge -> gr a b -> gr a b-delEdges :: DynGraph gr => [Edge] -> gr a b -> gr a b-delNode :: Graph gr => Node -> gr a b -> gr a b-delNodes :: Graph gr => [Node] -> gr a b -> gr a b-edges :: Graph gr => gr a b -> [Edge]-emap :: DynGraph gr => (b -> c) -> gr a b -> gr a c-empty :: Graph gr => gr a b-equal :: (Eq a, Eq b, Graph gr) => gr a b -> gr a b -> Bool-gelem :: Graph gr => Node -> gr a b -> Bool-gmap :: DynGraph gr => (Context a b -> Context c d) -> gr a b -> gr c d-indeg :: Graph gr => gr a b -> Node -> Int-indeg' :: Context a b -> Int-inn :: Graph gr => gr a b -> Node -> [LEdge b]-inn' :: Context a b -> [LEdge b]-insEdge :: DynGraph gr => LEdge b -> gr a b -> gr a b-insEdges :: DynGraph gr => [LEdge b] -> gr a b -> gr a b-insNode :: DynGraph gr => LNode a -> gr a b -> gr a b-insNodes :: DynGraph gr => [LNode a] -> gr a b -> gr a b-instance Eq a => Eq (LPath a)-instance Ord a => Ord (LPath a)-instance Show a => Show (LPath a)-isEmpty :: Graph gr => gr a b -> Bool-lab :: Graph gr => gr a b -> Node -> Maybe a-lab' :: Context a b -> a-labEdges :: Graph gr => gr a b -> [LEdge b]-labNode' :: Context a b -> LNode a-labNodes :: Graph gr => gr a b -> [LNode a]-lpre :: Graph gr => gr a b -> Node -> [(Node, b)]-lpre' :: Context a b -> [(Node, b)]-lsuc :: Graph gr => gr a b -> Node -> [(Node, b)]-lsuc' :: Context a b -> [(Node, b)]-match :: Graph gr => Node -> gr a b -> Decomp gr a b-matchAny :: Graph gr => gr a b -> GDecomp gr a b-mkGraph :: Graph gr => [LNode a] -> [LEdge b] -> gr a b-mkUGraph :: Graph gr => [Node] -> [Edge] -> gr () ()-neighbors :: Graph gr => gr a b -> Node -> [Node]-neighbors' :: Context a b -> [Node]-newNodes :: Graph gr => Int -> gr a b -> [Node]-newtype LPath a-nmap :: DynGraph gr => (a -> c) -> gr a b -> gr c b-noNodes :: Graph gr => gr a b -> Int-node' :: Context a b -> Node-nodeRange :: Graph gr => gr a b -> (Node,Node)-nodes :: Graph gr => gr a b -> [Node]-out :: Graph gr => gr a b -> Node -> [LEdge b]-out' :: Context a b -> [LEdge b]-outdeg :: Graph gr => gr a b -> Node -> Int-outdeg' :: Context a b -> Int-pre :: Graph gr => gr a b -> Node -> [Node]-pre' :: Context a b -> [Node]-suc :: Graph gr => gr a b -> Node -> [Node]-suc' :: Context a b -> [Node]-type Adj b = [(b, Node)]-type Context a b = (Adj b, Node, a, Adj b)-type Decomp g a b = (MContext a b, g a b)-type Edge = (Node, Node)-type GDecomp g a b = (Context a b, g a b)-type LEdge b = (Node, Node, b)-type LNode a = (Node, a)-type MContext a b = Maybe (Context a b)-type Node = Int-type UContext = ([Node], Node, [Node])-type UDecomp g = (Maybe UContext, g)-type UEdge = LEdge ()-type UNode = LNode ()-type UPath = [UNode]-ufold :: Graph gr => (Context a b -> c -> c) -> c -> gr a b -> c--module Data.Graph.Inductive.Graphviz-Landscape :: Orient-Portrait :: Orient-data Orient-graphviz :: (Graph g, Show a, Show b) => g a b -> String -> (Double, Double) -> (Int, Int) -> Orient -> String-graphviz' :: (Graph g, Show a, Show b) => g a b -> String-instance Eq Orient-instance Show Orient--module Data.Graph.Inductive.Internal.FiniteMap-Empty :: FiniteMap a b-Node :: Int -> (FiniteMap a b) -> (a,b) -> (FiniteMap a b) -> FiniteMap a b-accumFM :: Ord a => FiniteMap a b -> a -> (b -> b -> b) -> b -> FiniteMap a b-addToFM :: Ord a => FiniteMap a b -> a -> b -> FiniteMap a b-data FiniteMap a b-delFromFM :: Ord a => FiniteMap a b -> a -> FiniteMap a b-elemFM :: Ord a => FiniteMap a b -> a -> Bool-emptyFM :: Ord a => FiniteMap a b-fmToList :: Ord a => FiniteMap a b -> [(a, b)]-instance (Ord a, ??? a b) => Eq (FiniteMap a b)-instance (Show a, Show b, Ord a) => Show (FiniteMap a b)-isEmptyFM :: FiniteMap a b -> Bool-lookupFM :: Ord a => FiniteMap a b -> a -> Maybe b-maxFM :: Ord a => FiniteMap a b -> Maybe (a, b)-minFM :: Ord a => FiniteMap a b -> Maybe (a, b)-predFM :: Ord a => FiniteMap a b -> a -> Maybe (a, b)-rangeFM :: Ord a => FiniteMap a b -> a -> a -> [b]-sizeFM :: Ord a => FiniteMap a b -> Int-splitFM :: Ord a => FiniteMap a b -> a -> Maybe (FiniteMap a b, (a, b))-splitMinFM :: Ord a => FiniteMap a b -> Maybe (FiniteMap a b, (a, b))-succFM :: Ord a => FiniteMap a b -> a -> Maybe (a, b)-updFM :: Ord a => FiniteMap a b -> a -> (b -> b) -> FiniteMap a b--module Data.Graph.Inductive.Internal.Heap-Empty :: Heap a b-Node :: a -> b -> [Heap a b] -> Heap a b-build :: Ord a => [(a, b)] -> Heap a b-data Heap a b-deleteMin :: Ord a => Heap a b -> Heap a b-empty :: Ord a => Heap a b-findMin :: Ord a => Heap a b -> (a, b)-heapsort :: Ord a => [a] -> [a]-insert :: Ord a => (a, b) -> Heap a b -> Heap a b-instance (Ord a, Eq a, Eq b, ??? a b) => Eq (Heap a b)-instance (Show a, Ord a, Show b) => Show (Heap a b)-isEmpty :: Ord a => Heap a b -> Bool-merge :: Ord a => Heap a b -> Heap a b -> Heap a b-mergeAll :: Ord a => [Heap a b] -> Heap a b-splitMin :: Ord a => Heap a b -> (a, b, Heap a b)-toList :: Ord a => Heap a b -> [(a, b)]-unit :: Ord a => a -> b -> Heap a b--module Data.Graph.Inductive.Internal.Queue-MkQueue :: [a] -> [a] -> Queue a-mkQueue :: Queue a-queueEmpty :: Queue a -> Bool-queueGet :: Queue a -> (a, Queue a)-queuePut :: a -> Queue a -> Queue a-queuePutList :: [a] -> Queue a -> Queue a--module Data.Graph.Inductive.Internal.RootPath-getDistance :: Node -> LRTree a -> a-getLPath :: Node -> LRTree a -> LPath a-getLPathNodes :: Node -> LRTree a -> Path-getPath :: Node -> RTree -> Path-type LRTree a = [LPath a]-type RTree = [Path]--module Data.Graph.Inductive.Internal.Thread-splitPar :: Split t i r -> Split u j s -> Split (t, u) (i, j) (r, s)-splitParM :: SplitM t i r -> Split u j s -> SplitM (t, u) (i, j) (r, s)-threadList :: Collect r c -> Split t i r -> [i] -> t -> (c, t)-threadList' :: Collect r c -> Split t i r -> [i] -> t -> (c, t)-threadMaybe :: (i -> r -> a) -> Split t i r -> SplitM t j i -> SplitM t j a-threadMaybe' :: (r -> a) -> Split t i r -> Split t j (Maybe i) -> Split t j (Maybe a)-type Collect r c = (r -> c -> c, c)-type Split t i r = i -> t -> (r, t)-type SplitM t i r = Split t i (Maybe r)-type Thread t i r = (t, Split t i r)--module Data.Graph.Inductive.Monad-class Monad m => GraphM m gr-contextM :: GraphM m gr => m (gr a b) -> Node -> m (Context a b)-delNodeM :: GraphM m gr => Node -> m (gr a b) -> m (gr a b)-delNodesM :: GraphM m gr => [Node] -> m (gr a b) -> m (gr a b)-edgesM :: GraphM m gr => m (gr a b) -> m [Edge]-emptyM :: GraphM m gr => m (gr a b)-isEmptyM :: GraphM m gr => m (gr a b) -> m Bool-labEdgesM :: GraphM m gr => m (gr a b) -> m [LEdge b]-labM :: GraphM m gr => m (gr a b) -> Node -> m (Maybe a)-labNodesM :: GraphM m gr => m (gr a b) -> m [LNode a]-matchAnyM :: GraphM m gr => m (gr a b) -> m (GDecomp gr a b)-matchM :: GraphM m gr => Node -> m (gr a b) -> m (Decomp gr a b)-mkGraphM :: GraphM m gr => [LNode a] -> [LEdge b] -> m (gr a b)-mkUGraphM :: GraphM m gr => [Node] -> [Edge] -> m (gr () ())-newNodesM :: GraphM m gr => Int -> m (gr a b) -> m [Node]-noNodesM :: GraphM m gr => m (gr a b) -> m Int-nodeRangeM :: GraphM m gr => m (gr a b) -> m (Node,Node)-nodesM :: GraphM m gr => m (gr a b) -> m [Node]-ufoldM :: GraphM m gr => (Context a b -> c -> c) -> c -> m (gr a b) -> m c--module Data.Graph.Inductive.Monad.IOArray-SGr :: (GraphRep a b) -> SGr a b-data SGr a b-defaultGraphSize :: Int-emptyN :: Int -> IO (SGr a b)-instance (Show a, Show b) => Show (IO (SGr a b))-instance (Show a, Show b) => Show (SGr a b)-instance GraphM IO SGr-removeDel :: IOArray Node Bool -> Adj b -> IO (Adj b)-type Context' a b = Maybe (Adj b, a, Adj b)-type GraphRep a b = (Int, Array Node (Context' a b), IOArray Node Bool)-type USGr = SGr () ()--module Data.Graph.Inductive.NodeMap-data NodeMap a-delMapEdge :: (Ord a, DynGraph g) => NodeMap a -> (a, a) -> g a b -> g a b-delMapEdgeM :: (Ord a, DynGraph g) => (a, a) -> NodeMapM a b g ()-delMapEdges :: (Ord a, DynGraph g) => NodeMap a -> [(a, a)] -> g a b -> g a b-delMapEdgesM :: (Ord a, DynGraph g) => [(a, a)] -> NodeMapM a b g ()-delMapNode :: (Ord a, DynGraph g) => NodeMap a -> a -> g a b -> g a b-delMapNodeM :: (Ord a, DynGraph g) => a -> NodeMapM a b g ()-delMapNodes :: (Ord a, DynGraph g) => NodeMap a -> [a] -> g a b -> g a b-delMapNodesM :: (Ord a, DynGraph g) => [a] -> NodeMapM a b g ()-fromGraph :: (Ord a, Graph g) => g a b -> NodeMap a-insMapEdge :: (Ord a, DynGraph g) => NodeMap a -> (a, a, b) -> g a b -> g a b-insMapEdgeM :: (Ord a, DynGraph g) => (a, a, b) -> NodeMapM a b g ()-insMapEdges :: (Ord a, DynGraph g) => NodeMap a -> [(a, a, b)] -> g a b -> g a b-insMapEdgesM :: (Ord a, DynGraph g) => [(a, a, b)] -> NodeMapM a b g ()-insMapNode :: (Ord a, DynGraph g) => NodeMap a -> a -> g a b -> (g a b, NodeMap a, LNode a)-insMapNodeM :: (Ord a, DynGraph g) => a -> NodeMapM a b g (LNode a)-insMapNode_ :: (Ord a, DynGraph g) => NodeMap a -> a -> g a b -> g a b-insMapNodes :: (Ord a, DynGraph g) => NodeMap a -> [a] -> g a b -> (g a b, NodeMap a, [LNode a])-insMapNodesM :: (Ord a, DynGraph g) => [a] -> NodeMapM a b g [LNode a]-insMapNodes_ :: (Ord a, DynGraph g) => NodeMap a -> [a] -> g a b -> g a b-instance (Ord a, ??? a) => Show (NodeMap a)-mkEdge :: Ord a => NodeMap a -> (a, a, b) -> Maybe (LEdge b)-mkEdgeM :: (Ord a, DynGraph g) => (a, a, b) -> NodeMapM a b g (Maybe (LEdge b))-mkEdges :: Ord a => NodeMap a -> [(a, a, b)] -> Maybe [LEdge b]-mkEdgesM :: (Ord a, DynGraph g) => [(a, a, b)] -> NodeMapM a b g (Maybe [LEdge b])-mkMapGraph :: (Ord a, DynGraph g) => [a] -> [(a, a, b)] -> (g a b, NodeMap a)-mkNode :: Ord a => NodeMap a -> a -> (LNode a, NodeMap a)-mkNodeM :: (Ord a, DynGraph g) => a -> NodeMapM a b g (LNode a)-mkNode_ :: Ord a => NodeMap a -> a -> LNode a-mkNodes :: Ord a => NodeMap a -> [a] -> ([LNode a], NodeMap a)-mkNodesM :: (Ord a, DynGraph g) => [a] -> NodeMapM a b g [LNode a]-mkNodes_ :: Ord a => NodeMap a -> [a] -> [LNode a]-new :: Ord a => NodeMap a-run :: (DynGraph g, Ord a) => g a b -> NodeMapM a b g r -> (r, (NodeMap a, g a b))-run_ :: (DynGraph g, Ord a) => g a b -> NodeMapM a b g r -> g a b-type NodeMapM a b g r = State (NodeMap a, g a b) r--module Data.Graph.Inductive.Query.ArtPoint-ap :: Graph gr => gr a b -> [Node]--module Data.Graph.Inductive.Query.BCC-bcc :: DynGraph gr => gr a b -> [gr a b]--module Data.Graph.Inductive.Query.BFS-bfe :: Graph gr => Node -> gr a b -> [Edge]-bfen :: Graph gr => [Edge] -> gr a b -> [Edge]-bfs :: Graph gr => Node -> gr a b -> [Node]-bfsWith :: Graph gr => (Context a b -> c) -> Node -> gr a b -> [c]-bfsn :: Graph gr => [Node] -> gr a b -> [Node]-bfsnWith :: Graph gr => (Context a b -> c) -> [Node] -> gr a b -> [c]-bft :: Graph gr => Node -> gr a b -> RTree-esp :: Graph gr => Node -> Node -> gr a b -> Path-lbft :: Graph gr => Node -> gr a b -> LRTree b-lesp :: Graph gr => Node -> Node -> gr a b -> LPath b-level :: Graph gr => Node -> gr a b -> [(Node, Int)]-leveln :: Graph gr => [(Node, Int)] -> gr a b -> [(Node, Int)]--module Data.Graph.Inductive.Query.DFS-components :: Graph gr => gr a b -> [[Node]]-dff :: Graph gr => [Node] -> gr a b -> [Tree Node]-dff' :: Graph gr => gr a b -> [Tree Node]-dffWith :: Graph gr => CFun a b c -> [Node] -> gr a b -> [Tree c]-dffWith' :: Graph gr => CFun a b c -> gr a b -> [Tree c]-dfs :: Graph gr => [Node] -> gr a b -> [Node]-dfs' :: Graph gr => gr a b -> [Node]-dfsWith :: Graph gr => CFun a b c -> [Node] -> gr a b -> [c]-dfsWith' :: Graph gr => CFun a b c -> gr a b -> [c]-isConnected :: Graph gr => gr a b -> Bool-noComponents :: Graph gr => gr a b -> Int-rdff :: Graph gr => [Node] -> gr a b -> [Tree Node]-rdff' :: Graph gr => gr a b -> [Tree Node]-rdfs :: Graph gr => [Node] -> gr a b -> [Node]-rdfs' :: Graph gr => gr a b -> [Node]-reachable :: Graph gr => Node -> gr a b -> [Node]-scc :: Graph gr => gr a b -> [[Node]]-topsort :: Graph gr => gr a b -> [Node]-topsort' :: Graph gr => gr a b -> [a]-type CFun a b c = Context a b -> c-udff :: Graph gr => [Node] -> gr a b -> [Tree Node]-udff' :: Graph gr => gr a b -> [Tree Node]-udfs :: Graph gr => [Node] -> gr a b -> [Node]-udfs' :: Graph gr => gr a b -> [Node]--module Data.Graph.Inductive.Query.Dominators-dom :: Graph gr => gr a b -> Node -> [(Node, [Node])]--module Data.Graph.Inductive.Query.GVD-gvdIn :: (DynGraph gr, Real b) => [Node] -> gr a b -> Voronoi b-gvdOut :: (Graph gr, Real b) => [Node] -> gr a b -> Voronoi b-nearestDist :: Real b => Node -> Voronoi b -> Maybe b-nearestNode :: Real b => Node -> Voronoi b -> Maybe Node-nearestPath :: Real b => Node -> Voronoi b -> Maybe Path-type Voronoi a = LRTree a-voronoiSet :: Real b => Node -> Voronoi b -> [Node]--module Data.Graph.Inductive.Query.Indep-indep :: DynGraph gr => gr a b -> [Node]--module Data.Graph.Inductive.Query.MST-msPath :: Real b => LRTree b -> Node -> Node -> Path-msTree :: (Graph gr, Real b) => gr a b -> LRTree b-msTreeAt :: (Graph gr, Real b) => Node -> gr a b -> LRTree b--module Data.Graph.Inductive.Query.MaxFlow-augmentGraph :: (DynGraph gr, Num b, Ord b) => gr a b -> gr a (b, b, b)-getRevEdges :: (Num b, Ord b) => [(Node, Node)] -> [(Node, Node, b)]-maxFlow :: (DynGraph gr, Num b, Ord b) => gr a b -> Node -> Node -> b-maxFlowgraph :: (DynGraph gr, Num b, Ord b) => gr a b -> Node -> Node -> gr a (b, b)-mf :: (DynGraph gr, Num b, Ord b) => gr a b -> Node -> Node -> gr a (b, b, b)-mfmg :: (DynGraph gr, Num b, Ord b) => gr a (b, b, b) -> Node -> Node -> gr a (b, b, b)-updAdjList :: (Num b, Ord b) => [((b, b, b), Node)] -> Node -> b -> Bool -> [((b, b, b), Node)]-updateFlow :: (DynGraph gr, Num b, Ord b) => Path -> b -> gr a (b, b, b) -> gr a (b, b, b)--module Data.Graph.Inductive.Query.MaxFlow2-ekFused :: Network -> Node -> Node -> (Network, Double)-ekList :: Network -> Node -> Node -> (Network, Double)-ekSimple :: Network -> Node -> Node -> (Network, Double)-type Network = Gr () (Double, Double)--module Data.Graph.Inductive.Query.Monad-(><) :: (a -> b) -> (c -> d) -> (a, c) -> (b, d)-MGT :: (m g -> m (a,g)) -> GT m g a-apply :: GT m g a -> m g -> m (a, g)-apply' :: Monad m => GT m g a -> g -> m (a, g)-applyWith :: Monad m => (a -> b) -> GT m g a -> m g -> m (b, g)-applyWith' :: Monad m => (a -> b) -> GT m g a -> g -> m (b, g)-condMGT :: Monad m => (m s -> m Bool) -> GT m s a -> GT m s a -> GT m s a-condMGT' :: Monad m => (s -> Bool) -> GT m s a -> GT m s a -> GT m s a-data GT m g a-dffM :: GraphM m gr => [Node] -> GT m (gr a b) [Tree Node]-dfsGT :: GraphM m gr => [Node] -> GT m (gr a b) [Node]-dfsM :: GraphM m gr => [Node] -> m (gr a b) -> m [Node]-dfsM' :: GraphM m gr => m (gr a b) -> m [Node]-getContext :: GraphM m gr => GT m (gr a b) (Context a b)-getNode :: GraphM m gr => GT m (gr a b) Node-getNodes :: GraphM m gr => GT m (gr a b) [Node]-getNodes' :: (Graph gr, GraphM m gr) => GT m (gr a b) [Node]-graphDff :: GraphM m gr => [Node] -> m (gr a b) -> m [Tree Node]-graphDff' :: GraphM m gr => m (gr a b) -> m [Tree Node]-graphFilter :: GraphM m gr => (Context a b -> Bool) -> m (gr a b) -> m [Context a b]-graphFilterM :: GraphM m gr => (Context a b -> Bool) -> GT m (gr a b) [Context a b]-graphNodes :: GraphM m gr => m (gr a b) -> m [Node]-graphNodesM :: GraphM m gr => GT m (gr a b) [Node]-graphNodesM0 :: GraphM m gr => GT m (gr a b) [Node]-graphRec :: GraphM m gr => GT m (gr a b) c -> (c -> d -> d) -> d -> GT m (gr a b) d-graphRec' :: (Graph gr, GraphM m gr) => GT m (gr a b) c -> (c -> d -> d) -> d -> GT m (gr a b) d-graphUFold :: GraphM m gr => (Context a b -> c -> c) -> c -> GT m (gr a b) c-instance Monad m => Monad (GT m g)-mapFst :: (a -> b) -> (a, c) -> (b, c)-mapSnd :: (a -> b) -> (c, a) -> (c, b)-orP :: (a -> Bool) -> (b -> Bool) -> (a, b) -> Bool-recMGT :: Monad m => (m s -> m Bool) -> GT m s a -> (a -> b -> b) -> b -> GT m s b-recMGT' :: Monad m => (s -> Bool) -> GT m s a -> (a -> b -> b) -> b -> GT m s b-runGT :: Monad m => GT m g a -> m g -> m a-sucGT :: GraphM m gr => Node -> GT m (gr a b) (Maybe [Node])-sucM :: GraphM m gr => Node -> m (gr a b) -> m (Maybe [Node])--module Data.Graph.Inductive.Query.SP-dijkstra :: (Graph gr, Real b) => Heap b (LPath b) -> gr a b -> LRTree b-sp :: (Graph gr, Real b) => Node -> Node -> gr a b -> Path-spLength :: (Graph gr, Real b) => Node -> Node -> gr a b -> b-spTree :: (Graph gr, Real b) => Node -> gr a b -> LRTree b--module Data.Graph.Inductive.Query.TransClos-trc :: DynGraph gr => gr a b -> gr a ()--module Data.Graph.Inductive.Tree-data Gr a b-instance (Show a, Show b) => Show (Gr a b)-instance DynGraph Gr-instance Graph Gr-type UGr = Gr () ()--module Data.HashTable-data HashTable key val-delete :: HashTable key val -> key -> IO ()-fromList :: Eq key => (key -> Int32) -> [(key, val)] -> IO (HashTable key val)-hashInt :: Int -> Int32-hashString :: String -> Int32-insert :: HashTable key val -> key -> val -> IO ()-longestChain :: HashTable key val -> IO [(key, val)]-lookup :: HashTable key val -> key -> IO (Maybe val)-new :: (key -> key -> Bool) -> (key -> Int32) -> IO (HashTable key val)-prime :: Int32-toList :: HashTable key val -> IO [(key, val)]-update :: HashTable key val -> key -> val -> IO Bool--module Data.IORef-atomicModifyIORef :: IORef a -> (a -> (a, b)) -> IO b-data IORef a-instance Eq (IORef a)-instance Typeable a => Data (IORef a)-instance Typeable1 IORef-mkWeakIORef :: IORef a -> IO () -> IO (Weak (IORef a))-modifyIORef :: IORef a -> (a -> a) -> IO ()-newIORef :: a -> IO (IORef a)-readIORef :: IORef a -> IO a-writeIORef :: IORef a -> a -> IO ()--module Data.Int-data Int16-data Int32-data Int64-data Int8-instance (Ix ix, Show ix) => Show (DiffUArray ix Int16)-instance (Ix ix, Show ix) => Show (DiffUArray ix Int32)-instance (Ix ix, Show ix) => Show (DiffUArray ix Int64)-instance (Ix ix, Show ix) => Show (DiffUArray ix Int8)-instance (Ix ix, Show ix) => Show (UArray ix Int16)-instance (Ix ix, Show ix) => Show (UArray ix Int32)-instance (Ix ix, Show ix) => Show (UArray ix Int64)-instance (Ix ix, Show ix) => Show (UArray ix Int8)-instance Bits Int16-instance Bits Int32-instance Bits Int64-instance Bits Int8-instance Bounded Int16-instance Bounded Int32-instance Bounded Int64-instance Bounded Int8-instance Data Int16-instance Data Int32-instance Data Int64-instance Data Int8-instance Enum Int16-instance Enum Int32-instance Enum Int64-instance Enum Int8-instance Eq Int16-instance Eq Int32-instance Eq Int64-instance Eq Int8-instance IArray (IOToDiffArray IOUArray) Int16-instance IArray (IOToDiffArray IOUArray) Int32-instance IArray (IOToDiffArray IOUArray) Int64-instance IArray (IOToDiffArray IOUArray) Int8-instance IArray UArray Int16-instance IArray UArray Int32-instance IArray UArray Int64-instance IArray UArray Int8-instance Integral Int16-instance Integral Int32-instance Integral Int64-instance Integral Int8-instance Ix Int16-instance Ix Int32-instance Ix Int64-instance Ix Int8-instance Ix ix => Eq (UArray ix Int16)-instance Ix ix => Eq (UArray ix Int32)-instance Ix ix => Eq (UArray ix Int64)-instance Ix ix => Eq (UArray ix Int8)-instance Ix ix => Ord (UArray ix Int16)-instance Ix ix => Ord (UArray ix Int32)-instance Ix ix => Ord (UArray ix Int64)-instance Ix ix => Ord (UArray ix Int8)-instance MArray (STUArray s) Int16 (ST s)-instance MArray (STUArray s) Int32 (ST s)-instance MArray (STUArray s) Int64 (ST s)-instance MArray (STUArray s) Int8 (ST s)-instance Num Int16-instance Num Int32-instance Num Int64-instance Num Int8-instance Ord Int16-instance Ord Int32-instance Ord Int64-instance Ord Int8-instance Read Int16-instance Read Int32-instance Read Int64-instance Read Int8-instance Real Int16-instance Real Int32-instance Real Int64-instance Real Int8-instance Show Int16-instance Show Int32-instance Show Int64-instance Show Int8-instance Storable Int16-instance Storable Int32-instance Storable Int64-instance Storable Int8-instance Typeable Int16-instance Typeable Int32-instance Typeable Int64-instance Typeable Int8--module Data.IntMap-(!) :: IntMap a -> Key -> a-(\\) :: IntMap a -> IntMap b -> IntMap a-adjust :: (a -> a) -> Key -> IntMap a -> IntMap a-adjustWithKey :: (Key -> a -> a) -> Key -> IntMap a -> IntMap a-assocs :: IntMap a -> [(Key, a)]-data IntMap a-delete :: Key -> IntMap a -> IntMap a-difference :: IntMap a -> IntMap b -> IntMap a-differenceWith :: (a -> b -> Maybe a) -> IntMap a -> IntMap b -> IntMap a-differenceWithKey :: (Key -> a -> b -> Maybe a) -> IntMap a -> IntMap b -> IntMap a-elems :: IntMap a -> [a]-empty :: IntMap a-filter :: (a -> Bool) -> IntMap a -> IntMap a-filterWithKey :: (Key -> a -> Bool) -> IntMap a -> IntMap a-findWithDefault :: a -> Key -> IntMap a -> a-fold :: (a -> b -> b) -> b -> IntMap a -> b-foldWithKey :: (Key -> a -> b -> b) -> b -> IntMap a -> b-fromAscList :: [(Key, a)] -> IntMap a-fromAscListWith :: (a -> a -> a) -> [(Key, a)] -> IntMap a-fromAscListWithKey :: (Key -> a -> a -> a) -> [(Key, a)] -> IntMap a-fromDistinctAscList :: [(Key, a)] -> IntMap a-fromList :: [(Key, a)] -> IntMap a-fromListWith :: (a -> a -> a) -> [(Key, a)] -> IntMap a-fromListWithKey :: (Key -> a -> a -> a) -> [(Key, a)] -> IntMap a-insert :: Key -> a -> IntMap a -> IntMap a-insertLookupWithKey :: (Key -> a -> a -> a) -> Key -> a -> IntMap a -> (Maybe a, IntMap a)-insertWith :: (a -> a -> a) -> Key -> a -> IntMap a -> IntMap a-insertWithKey :: (Key -> a -> a -> a) -> Key -> a -> IntMap a -> IntMap a-instance Data a => Data (IntMap a)-instance Eq a => Eq (IntMap a)-instance Functor IntMap-instance Ord a => Monoid (IntMap a)-instance Ord a => Ord (IntMap a)-instance Show a => Show (IntMap a)-instance Typeable1 IntMap-intersection :: IntMap a -> IntMap b -> IntMap a-intersectionWith :: (a -> b -> a) -> IntMap a -> IntMap b -> IntMap a-intersectionWithKey :: (Key -> a -> b -> a) -> IntMap a -> IntMap b -> IntMap a-isProperSubmapOf :: Eq a => IntMap a -> IntMap a -> Bool-isProperSubmapOfBy :: (a -> b -> Bool) -> IntMap a -> IntMap b -> Bool-isSubmapOf :: Eq a => IntMap a -> IntMap a -> Bool-isSubmapOfBy :: (a -> b -> Bool) -> IntMap a -> IntMap b -> Bool-keys :: IntMap a -> [Key]-keysSet :: IntMap a -> IntSet-lookup :: Key -> IntMap a -> Maybe a-map :: (a -> b) -> IntMap a -> IntMap b-mapAccum :: (a -> b -> (a, c)) -> a -> IntMap b -> (a, IntMap c)-mapAccumWithKey :: (a -> Key -> b -> (a, c)) -> a -> IntMap b -> (a, IntMap c)-mapWithKey :: (Key -> a -> b) -> IntMap a -> IntMap b-member :: Key -> IntMap a -> Bool-null :: IntMap a -> Bool-partition :: (a -> Bool) -> IntMap a -> (IntMap a, IntMap a)-partitionWithKey :: (Key -> a -> Bool) -> IntMap a -> (IntMap a, IntMap a)-showTree :: Show a => IntMap a -> String-showTreeWith :: Show a => Bool -> Bool -> IntMap a -> String-singleton :: Key -> a -> IntMap a-size :: IntMap a -> Int-split :: Key -> IntMap a -> (IntMap a, IntMap a)-splitLookup :: Key -> IntMap a -> (IntMap a, Maybe a, IntMap a)-toAscList :: IntMap a -> [(Key, a)]-toList :: IntMap a -> [(Key, a)]-type Key = Int-union :: IntMap a -> IntMap a -> IntMap a-unionWith :: (a -> a -> a) -> IntMap a -> IntMap a -> IntMap a-unionWithKey :: (Key -> a -> a -> a) -> IntMap a -> IntMap a -> IntMap a-unions :: [IntMap a] -> IntMap a-unionsWith :: (a -> a -> a) -> [IntMap a] -> IntMap a-update :: (a -> Maybe a) -> Key -> IntMap a -> IntMap a-updateLookupWithKey :: (Key -> a -> Maybe a) -> Key -> IntMap a -> (Maybe a, IntMap a)-updateWithKey :: (Key -> a -> Maybe a) -> Key -> IntMap a -> IntMap a--module Data.IntSet-(\\) :: IntSet -> IntSet -> IntSet-data IntSet-delete :: Int -> IntSet -> IntSet-difference :: IntSet -> IntSet -> IntSet-elems :: IntSet -> [Int]-empty :: IntSet-filter :: (Int -> Bool) -> IntSet -> IntSet-fold :: (Int -> b -> b) -> b -> IntSet -> b-fromAscList :: [Int] -> IntSet-fromDistinctAscList :: [Int] -> IntSet-fromList :: [Int] -> IntSet-insert :: Int -> IntSet -> IntSet-instance Data IntSet-instance Eq IntSet-instance Monoid IntSet-instance Ord IntSet-instance Show IntSet-instance Typeable IntSet-intersection :: IntSet -> IntSet -> IntSet-isProperSubsetOf :: IntSet -> IntSet -> Bool-isSubsetOf :: IntSet -> IntSet -> Bool-map :: (Int -> Int) -> IntSet -> IntSet-member :: Int -> IntSet -> Bool-null :: IntSet -> Bool-partition :: (Int -> Bool) -> IntSet -> (IntSet, IntSet)-showTree :: IntSet -> String-showTreeWith :: Bool -> Bool -> IntSet -> String-singleton :: Int -> IntSet-size :: IntSet -> Int-split :: Int -> IntSet -> (IntSet, IntSet)-splitMember :: Int -> IntSet -> (IntSet, Bool, IntSet)-toAscList :: IntSet -> [Int]-toList :: IntSet -> [Int]-union :: IntSet -> IntSet -> IntSet-unions :: [IntSet] -> IntSet--module Data.Ix-class Ord a => Ix a--module Data.List-deleteFirstsBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]-elemIndex :: Eq a => a -> [a] -> Maybe Int-foldl' :: (a -> b -> a) -> a -> [b] -> a-foldl1' :: (a -> a -> a) -> [a] -> a-genericDrop :: Integral i => i -> [a] -> [a]-genericLength :: Num i => [b] -> i-genericReplicate :: Integral i => i -> a -> [a]-genericSplitAt :: Integral i => i -> [b] -> ([b], [b])-genericTake :: Integral i => i -> [a] -> [a]-mapAccumL :: (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y])-mapAccumR :: (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y])-maximumBy :: (a -> a -> Ordering) -> [a] -> a-minimumBy :: (a -> a -> Ordering) -> [a] -> a-partition :: (a -> Bool) -> [a] -> ([a], [a])-unfoldr :: (b -> Maybe (a, b)) -> b -> [a]-unzip4 :: [(a, b, c, d)] -> ([a], [b], [c], [d])-unzip5 :: [(a, b, c, d, e)] -> ([a], [b], [c], [d], [e])-unzip6 :: [(a, b, c, d, e, f)] -> ([a], [b], [c], [d], [e], [f])-unzip7 :: [(a, b, c, d, e, f, g)] -> ([a], [b], [c], [d], [e], [f], [g])-zip4 :: [a] -> [b] -> [c] -> [d] -> [(a, b, c, d)]-zip5 :: [a] -> [b] -> [c] -> [d] -> [e] -> [(a, b, c, d, e)]-zip6 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [(a, b, c, d, e, f)]-zip7 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [(a, b, c, d, e, f, g)]--module Data.Map-(!) :: Ord k => Map k a -> k -> a-(\\) :: Ord k => Map k a -> Map k b -> Map k a-adjust :: Ord k => (a -> a) -> k -> Map k a -> Map k a-adjustWithKey :: Ord k => (k -> a -> a) -> k -> Map k a -> Map k a-assocs :: Map k a -> [(k, a)]-data Map k a-delete :: Ord k => k -> Map k a -> Map k a-deleteAt :: Int -> Map k a -> Map k a-deleteFindMax :: Map k a -> ((k, a), Map k a)-deleteFindMin :: Map k a -> ((k, a), Map k a)-deleteMax :: Map k a -> Map k a-deleteMin :: Map k a -> Map k a-difference :: Ord k => Map k a -> Map k b -> Map k a-differenceWith :: Ord k => (a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a-differenceWithKey :: Ord k => (k -> a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a-elemAt :: Int -> Map k a -> (k, a)-elems :: Map k a -> [a]-empty :: Map k a-filter :: Ord k => (a -> Bool) -> Map k a -> Map k a-filterWithKey :: Ord k => (k -> a -> Bool) -> Map k a -> Map k a-findIndex :: Ord k => k -> Map k a -> Int-findMax :: Map k a -> (k, a)-findMin :: Map k a -> (k, a)-findWithDefault :: Ord k => a -> k -> Map k a -> a-fold :: (a -> b -> b) -> b -> Map k a -> b-foldWithKey :: (k -> a -> b -> b) -> b -> Map k a -> b-fromAscList :: Eq k => [(k, a)] -> Map k a-fromAscListWith :: Eq k => (a -> a -> a) -> [(k, a)] -> Map k a-fromAscListWithKey :: Eq k => (k -> a -> a -> a) -> [(k, a)] -> Map k a-fromDistinctAscList :: [(k, a)] -> Map k a-fromList :: Ord k => [(k, a)] -> Map k a-fromListWith :: Ord k => (a -> a -> a) -> [(k, a)] -> Map k a-fromListWithKey :: Ord k => (k -> a -> a -> a) -> [(k, a)] -> Map k a-insert :: Ord k => k -> a -> Map k a -> Map k a-insertLookupWithKey :: Ord k => (k -> a -> a -> a) -> k -> a -> Map k a -> (Maybe a, Map k a)-insertWith :: Ord k => (a -> a -> a) -> k -> a -> Map k a -> Map k a-insertWithKey :: Ord k => (k -> a -> a -> a) -> k -> a -> Map k a -> Map k a-instance (Data k, Data a, Ord k) => Data (Map k a)-instance (Eq k, Eq a) => Eq (Map k a)-instance (Ord k, Ord v) => Ord (Map k v)-instance (Show k, Show a) => Show (Map k a)-instance Functor (Map k)-instance Ord k => Monoid (Map k v)-instance Typeable2 Map-intersection :: Ord k => Map k a -> Map k b -> Map k a-intersectionWith :: Ord k => (a -> b -> c) -> Map k a -> Map k b -> Map k c-intersectionWithKey :: Ord k => (k -> a -> b -> c) -> Map k a -> Map k b -> Map k c-isProperSubmapOf :: (Ord k, Eq a) => Map k a -> Map k a -> Bool-isProperSubmapOfBy :: Ord k => (a -> b -> Bool) -> Map k a -> Map k b -> Bool-isSubmapOf :: (Ord k, Eq a) => Map k a -> Map k a -> Bool-isSubmapOfBy :: Ord k => (a -> b -> Bool) -> Map k a -> Map k b -> Bool-keys :: Map k a -> [k]-keysSet :: Map k a -> Set k-lookup :: (Monad m, Ord k) => k -> Map k a -> m a-lookupIndex :: (Monad m, Ord k) => k -> Map k a -> m Int-map :: (a -> b) -> Map k a -> Map k b-mapAccum :: (a -> b -> (a, c)) -> a -> Map k b -> (a, Map k c)-mapAccumWithKey :: (a -> k -> b -> (a, c)) -> a -> Map k b -> (a, Map k c)-mapKeys :: Ord k2 => (k1 -> k2) -> Map k1 a -> Map k2 a-mapKeysMonotonic :: (k1 -> k2) -> Map k1 a -> Map k2 a-mapKeysWith :: Ord k2 => (a -> a -> a) -> (k1 -> k2) -> Map k1 a -> Map k2 a-mapWithKey :: (k -> a -> b) -> Map k a -> Map k b-member :: Ord k => k -> Map k a -> Bool-null :: Map k a -> Bool-partition :: Ord k => (a -> Bool) -> Map k a -> (Map k a, Map k a)-partitionWithKey :: Ord k => (k -> a -> Bool) -> Map k a -> (Map k a, Map k a)-showTree :: (Show k, Show a) => Map k a -> String-showTreeWith :: (k -> a -> String) -> Bool -> Bool -> Map k a -> String-singleton :: k -> a -> Map k a-size :: Map k a -> Int-split :: Ord k => k -> Map k a -> (Map k a, Map k a)-splitLookup :: Ord k => k -> Map k a -> (Map k a, Maybe a, Map k a)-toAscList :: Map k a -> [(k, a)]-toList :: Map k a -> [(k, a)]-union :: Ord k => Map k a -> Map k a -> Map k a-unionWith :: Ord k => (a -> a -> a) -> Map k a -> Map k a -> Map k a-unionWithKey :: Ord k => (k -> a -> a -> a) -> Map k a -> Map k a -> Map k a-unions :: Ord k => [Map k a] -> Map k a-unionsWith :: Ord k => (a -> a -> a) -> [Map k a] -> Map k a-update :: Ord k => (a -> Maybe a) -> k -> Map k a -> Map k a-updateAt :: (k -> a -> Maybe a) -> Int -> Map k a -> Map k a-updateLookupWithKey :: Ord k => (k -> a -> Maybe a) -> k -> Map k a -> (Maybe a, Map k a)-updateMax :: (a -> Maybe a) -> Map k a -> Map k a-updateMaxWithKey :: (k -> a -> Maybe a) -> Map k a -> Map k a-updateMin :: (a -> Maybe a) -> Map k a -> Map k a-updateMinWithKey :: (k -> a -> Maybe a) -> Map k a -> Map k a-updateWithKey :: Ord k => (k -> a -> Maybe a) -> k -> Map k a -> Map k a-valid :: Ord k => Map k a -> Bool--module Data.Monoid-class Monoid a-mappend :: Monoid a => a -> a -> a-mconcat :: Monoid a => [a] -> a-mempty :: Monoid a => a--module Data.PackedString-appendPS :: PackedString -> PackedString -> PackedString-breakPS :: (Char -> Bool) -> PackedString -> (PackedString, PackedString)-concatPS :: [PackedString] -> PackedString-consPS :: Char -> PackedString -> PackedString-data PackedString-dropPS :: Int -> PackedString -> PackedString-dropWhilePS :: (Char -> Bool) -> PackedString -> PackedString-elemPS :: Char -> PackedString -> Bool-filterPS :: (Char -> Bool) -> PackedString -> PackedString-foldlPS :: (a -> Char -> a) -> a -> PackedString -> a-foldrPS :: (Char -> a -> a) -> a -> PackedString -> a-hGetPS :: Handle -> Int -> IO PackedString-hPutPS :: Handle -> PackedString -> IO ()-headPS :: PackedString -> Char-indexPS :: PackedString -> Int -> Char-instance Eq PackedString-instance Ord PackedString-instance Show PackedString-instance Typeable PackedString-joinPS :: PackedString -> [PackedString] -> PackedString-lengthPS :: PackedString -> Int-linesPS :: PackedString -> [PackedString]-mapPS :: (Char -> Char) -> PackedString -> PackedString-nilPS :: PackedString-nullPS :: PackedString -> Bool-packString :: String -> PackedString-reversePS :: PackedString -> PackedString-spanPS :: (Char -> Bool) -> PackedString -> (PackedString, PackedString)-splitAtPS :: Int -> PackedString -> (PackedString, PackedString)-splitPS :: Char -> PackedString -> [PackedString]-splitWithPS :: (Char -> Bool) -> PackedString -> [PackedString]-substrPS :: PackedString -> Int -> Int -> PackedString-tailPS :: PackedString -> PackedString-takePS :: Int -> PackedString -> PackedString-takeWhilePS :: (Char -> Bool) -> PackedString -> PackedString-unlinesPS :: [PackedString] -> PackedString-unpackPS :: PackedString -> String-unwordsPS :: [PackedString] -> PackedString-wordsPS :: PackedString -> [PackedString]--module Data.Queue-addToQueue :: Queue a -> a -> Queue a-data Queue a-deQueue :: Queue a -> Maybe (a, Queue a)-emptyQueue :: Queue a-instance Functor Queue-instance Typeable1 Queue-listToQueue :: [a] -> Queue a-queueToList :: Queue a -> [a]--module Data.Ratio-data Ratio a-instance (Data a, Integral a) => Data (Ratio a)-instance (Integral a, Eq a) => Eq (Ratio a)-instance (Integral a, NFData a) => NFData (Ratio a)-instance (Integral a, Read a) => Read (Ratio a)-instance Integral a => Enum (Ratio a)-instance Integral a => Fractional (Ratio a)-instance Integral a => Num (Ratio a)-instance Integral a => Ord (Ratio a)-instance Integral a => Real (Ratio a)-instance Integral a => RealFrac (Ratio a)-instance Integral a => Show (Ratio a)-instance Typeable1 Ratio--module Data.STRef-data STRef s a-instance Eq (STRef s a)-instance Typeable2 STRef-modifySTRef :: STRef s a -> (a -> a) -> ST s ()-newSTRef :: a -> ST s (STRef s a)-readSTRef :: STRef s a -> ST s a-writeSTRef :: STRef s a -> a -> ST s ()--module Data.Set-(\\) :: Ord a => Set a -> Set a -> Set a-addToSet :: Ord a => Set a -> a -> Set a-cardinality :: Set a -> Int-data Set a-delFromSet :: Ord a => Set a -> a -> Set a-delete :: Ord a => a -> Set a -> Set a-deleteFindMax :: Set a -> (a, Set a)-deleteFindMin :: Set a -> (a, Set a)-deleteMax :: Set a -> Set a-deleteMin :: Set a -> Set a-difference :: Ord a => Set a -> Set a -> Set a-elementOf :: Ord a => a -> Set a -> Bool-elems :: Set a -> [a]-empty :: Set a-emptySet :: Set a-filter :: Ord a => (a -> Bool) -> Set a -> Set a-findMax :: Set a -> a-findMin :: Set a -> a-fold :: (a -> b -> b) -> b -> Set a -> b-fromAscList :: Eq a => [a] -> Set a-fromDistinctAscList :: [a] -> Set a-fromList :: Ord a => [a] -> Set a-insert :: Ord a => a -> Set a -> Set a-instance (Data a, Ord a) => Data (Set a)-instance Eq a => Eq (Set a)-instance Ord a => Monoid (Set a)-instance Ord a => Ord (Set a)-instance Show a => Show (Set a)-instance Typeable1 Set-intersect :: Ord a => Set a -> Set a -> Set a-intersection :: Ord a => Set a -> Set a -> Set a-isEmptySet :: Set a -> Bool-isProperSubsetOf :: Ord a => Set a -> Set a -> Bool-isSubsetOf :: Ord a => Set a -> Set a -> Bool-map :: (Ord a, Ord b) => (a -> b) -> Set a -> Set b-mapMonotonic :: (a -> b) -> Set a -> Set b-mapSet :: (Ord a, Ord b) => (b -> a) -> Set b -> Set a-member :: Ord a => a -> Set a -> Bool-minusSet :: Ord a => Set a -> Set a -> Set a-mkSet :: Ord a => [a] -> Set a-null :: Set a -> Bool-partition :: Ord a => (a -> Bool) -> Set a -> (Set a, Set a)-setToList :: Set a -> [a]-showTree :: Show a => Set a -> String-showTreeWith :: Show a => Bool -> Bool -> Set a -> String-singleton :: a -> Set a-size :: Set a -> Int-split :: Ord a => a -> Set a -> (Set a, Set a)-splitMember :: Ord a => a -> Set a -> (Set a, Bool, Set a)-toAscList :: Set a -> [a]-toList :: Set a -> [a]-union :: Ord a => Set a -> Set a -> Set a-unionManySets :: Ord a => [Set a] -> Set a-unions :: Ord a => [Set a] -> Set a-unitSet :: a -> Set a-valid :: Ord a => Set a -> Bool--module Data.Tree-Node :: a -> Forest a -> Tree a-data Tree a-drawForest :: Forest String -> String-drawTree :: Tree String -> String-flatten :: Tree a -> [a]-instance Eq a => Eq (Tree a)-instance Functor Tree-instance Read a => Read (Tree a)-instance Show a => Show (Tree a)-levels :: Tree a -> [[a]]-rootLabel :: Tree a -> a-subForest :: Tree a -> Forest a-type Forest a = [Tree a]-unfoldForest :: (b -> (a, [b])) -> [b] -> Forest a-unfoldForestM :: Monad m => (b -> m (a, [b])) -> [b] -> m (Forest a)-unfoldForestM_BF :: Monad m => (b -> m (a, [b])) -> [b] -> m (Forest a)-unfoldTree :: (b -> (a, [b])) -> b -> Tree a-unfoldTreeM :: Monad m => (b -> m (a, [b])) -> b -> m (Tree a)-unfoldTreeM_BF :: Monad m => (b -> m (a, [b])) -> b -> m (Tree a)--module Data.Typeable-cast :: (Typeable a, Typeable b) => a -> Maybe b-class Typeable a-class Typeable1 t-class Typeable2 t-class Typeable3 t-class Typeable4 t-class Typeable5 t-class Typeable6 t-class Typeable7 t-data TyCon-data TypeRep-funResultTy :: TypeRep -> TypeRep -> Maybe TypeRep-gcast :: (Typeable a, Typeable b) => c a -> Maybe (c b)-gcast1 :: (Typeable1 t, Typeable1 t') => c (t a) -> Maybe (c (t' a))-gcast2 :: (Typeable2 t, Typeable2 t') => c (t a b) -> Maybe (c (t' a b))-instance Data TyCon-instance Data TypeRep-instance Eq TyCon-instance Eq TypeRep-instance Show TyCon-instance Show TypeRep-instance Typeable TyCon-instance Typeable TypeRep-mkAppTy :: TypeRep -> TypeRep -> TypeRep-mkFunTy :: TypeRep -> TypeRep -> TypeRep-mkTyCon :: String -> TyCon-mkTyConApp :: TyCon -> [TypeRep] -> TypeRep-splitTyConApp :: TypeRep -> (TyCon, [TypeRep])-tyConString :: TyCon -> String-typeOf :: Typeable a => a -> TypeRep-typeOf1 :: Typeable1 t => t a -> TypeRep-typeOf1Default :: (Typeable2 t, Typeable a) => t a b -> TypeRep-typeOf2 :: Typeable2 t => t a b -> TypeRep-typeOf2Default :: (Typeable3 t, Typeable a) => t a b c -> TypeRep-typeOf3 :: Typeable3 t => t a b c -> TypeRep-typeOf3Default :: (Typeable4 t, Typeable a) => t a b c d -> TypeRep-typeOf4 :: Typeable4 t => t a b c d -> TypeRep-typeOf4Default :: (Typeable5 t, Typeable a) => t a b c d e -> TypeRep-typeOf5 :: Typeable5 t => t a b c d e -> TypeRep-typeOf5Default :: (Typeable6 t, Typeable a) => t a b c d e f -> TypeRep-typeOf6 :: Typeable6 t => t a b c d e f -> TypeRep-typeOf6Default :: (Typeable7 t, Typeable a) => t a b c d e f g -> TypeRep-typeOf7 :: Typeable7 t => t a b c d e f g -> TypeRep-typeOfDefault :: (Typeable1 t, Typeable a) => t a -> TypeRep-typeRepArgs :: TypeRep -> [TypeRep]-typeRepTyCon :: TypeRep -> TyCon--module Data.Unique-data Unique-hashUnique :: Unique -> Int-instance Eq Unique-instance Ord Unique-newUnique :: IO Unique--module Data.Version-Version :: [Int] -> [String] -> Version-data Version-instance Eq Version-instance Ord Version-instance Read Version-instance Show Version-instance Typeable Version-parseVersion :: ReadP Version-showVersion :: Version -> String-versionBranch :: Version -> [Int]-versionTags :: Version -> [String]--module Data.Word-data Word-data Word16-data Word32-data Word64-data Word8-instance (Ix ix, Show ix) => Show (DiffUArray ix Word)-instance (Ix ix, Show ix) => Show (DiffUArray ix Word16)-instance (Ix ix, Show ix) => Show (DiffUArray ix Word32)-instance (Ix ix, Show ix) => Show (DiffUArray ix Word64)-instance (Ix ix, Show ix) => Show (DiffUArray ix Word8)-instance (Ix ix, Show ix) => Show (UArray ix Word)-instance (Ix ix, Show ix) => Show (UArray ix Word16)-instance (Ix ix, Show ix) => Show (UArray ix Word32)-instance (Ix ix, Show ix) => Show (UArray ix Word64)-instance (Ix ix, Show ix) => Show (UArray ix Word8)-instance Bits Word-instance Bits Word16-instance Bits Word32-instance Bits Word64-instance Bits Word8-instance Bounded Word-instance Bounded Word16-instance Bounded Word32-instance Bounded Word64-instance Bounded Word8-instance Data Word-instance Data Word16-instance Data Word32-instance Data Word64-instance Data Word8-instance Enum Word-instance Enum Word16-instance Enum Word32-instance Enum Word64-instance Enum Word8-instance Eq Word-instance Eq Word16-instance Eq Word32-instance Eq Word64-instance Eq Word8-instance IArray (IOToDiffArray IOUArray) Word-instance IArray (IOToDiffArray IOUArray) Word16-instance IArray (IOToDiffArray IOUArray) Word32-instance IArray (IOToDiffArray IOUArray) Word64-instance IArray (IOToDiffArray IOUArray) Word8-instance IArray UArray Word-instance IArray UArray Word16-instance IArray UArray Word32-instance IArray UArray Word64-instance IArray UArray Word8-instance Integral Word-instance Integral Word16-instance Integral Word32-instance Integral Word64-instance Integral Word8-instance Ix Word-instance Ix Word16-instance Ix Word32-instance Ix Word64-instance Ix Word8-instance Ix ix => Eq (UArray ix Word)-instance Ix ix => Eq (UArray ix Word16)-instance Ix ix => Eq (UArray ix Word32)-instance Ix ix => Eq (UArray ix Word64)-instance Ix ix => Eq (UArray ix Word8)-instance Ix ix => Ord (UArray ix Word)-instance Ix ix => Ord (UArray ix Word16)-instance Ix ix => Ord (UArray ix Word32)-instance Ix ix => Ord (UArray ix Word64)-instance Ix ix => Ord (UArray ix Word8)-instance MArray (STUArray s) Word (ST s)-instance MArray (STUArray s) Word16 (ST s)-instance MArray (STUArray s) Word32 (ST s)-instance MArray (STUArray s) Word64 (ST s)-instance MArray (STUArray s) Word8 (ST s)-instance Num Word-instance Num Word16-instance Num Word32-instance Num Word64-instance Num Word8-instance Ord Word-instance Ord Word16-instance Ord Word32-instance Ord Word64-instance Ord Word8-instance Read Word-instance Read Word16-instance Read Word32-instance Read Word64-instance Read Word8-instance Real Word-instance Real Word16-instance Real Word32-instance Real Word64-instance Real Word8-instance Show Word-instance Show Word16-instance Show Word32-instance Show Word64-instance Show Word8-instance Storable Word-instance Storable Word16-instance Storable Word32-instance Storable Word64-instance Storable Word8-instance Typeable Word-instance Typeable Word16-instance Typeable Word32-instance Typeable Word64-instance Typeable Word8--module Debug.Trace-putTraceMsg :: String -> IO ()-trace :: String -> a -> a--module Directory-createDirectory :: FilePath -> IO ()-doesDirectoryExist :: FilePath -> IO Bool-doesFileExist :: FilePath -> IO Bool-executable :: Permissions -> Bool-getCurrentDirectory :: IO FilePath-getDirectoryContents :: FilePath -> IO [FilePath]-getModificationTime :: FilePath -> IO ClockTime-getPermissions :: FilePath -> IO Permissions-readable :: Permissions -> Bool-removeDirectory :: FilePath -> IO ()-removeFile :: FilePath -> IO ()-renameDirectory :: FilePath -> FilePath -> IO ()-renameFile :: FilePath -> FilePath -> IO ()-searchable :: Permissions -> Bool-setCurrentDirectory :: FilePath -> IO ()-setPermissions :: FilePath -> Permissions -> IO ()-writable :: Permissions -> Bool--module Distribution.Compat.Directory-copyFile-createDirectoryIfMissing-findExecutable-getHomeDirectory-removeDirectoryRecursive--module Distribution.Compat.Exception-bracket-finally--module Distribution.Compat.FilePath-FilePath-breakFilePath :: FilePath -> [String]-changeFileExt :: FilePath -> String -> FilePath-commonParent :: [FilePath] -> Maybe FilePath-dllExtension :: String-dropAbsolutePrefix :: FilePath -> FilePath-dropPrefix :: FilePath -> FilePath -> FilePath-exeExtension :: String-isAbsolutePath :: FilePath -> Bool-isPathSeparator :: Char -> Bool-isRootedPath :: FilePath -> Bool-joinFileExt :: String -> String -> FilePath-joinFileName :: String -> String -> FilePath-joinPaths :: FilePath -> FilePath -> FilePath-mkSearchPath :: [FilePath] -> String-objExtension :: String-parseSearchPath :: String -> [FilePath]-pathParents :: FilePath -> [FilePath]-pathSeparator :: Char-searchPathSeparator :: Char-splitFileExt :: FilePath -> (String, String)-splitFileName :: FilePath -> (String, String)-splitFilePath :: FilePath -> (String, String, String)--module Distribution.Extension-AllowIncoherentInstances :: Extension-AllowOverlappingInstances :: Extension-AllowUndecidableInstances :: Extension-Arrows :: Extension-CPP :: Extension-ContextStack :: Extension-EmptyDataDecls :: Extension-ExistentialQuantification :: Extension-ExtensibleRecords :: Extension-FlexibleContexts :: Extension-FlexibleInstances :: Extension-ForeignFunctionInterface :: Extension-FunctionalDependencies :: Extension-Generics :: Extension-HereDocuments :: Extension-ImplicitParams :: Extension-InlinePhase :: Extension-MultiParamTypeClasses :: Extension-NamedFieldPuns :: Extension-NoImplicitPrelude :: Extension-NoMonomorphismRestriction :: Extension-OverlappingInstances :: Extension-ParallelListComp :: Extension-PolymorphicComponents :: Extension-RankNTypes :: Extension-RecursiveDo :: Extension-RestrictedTypeSynonyms :: Extension-ScopedTypeVariables :: Extension-TemplateHaskell :: Extension-TypeSynonymInstances :: Extension-UnsafeOverlappingInstances :: Extension-data Extension-extensionsToGHCFlag :: [Extension] -> ([Extension], [Opt])-extensionsToHugsFlag :: [Extension] -> ([Extension], [Opt])-extensionsToNHCFlag :: [Extension] -> ([Extension], [Opt])-instance Eq Extension-instance Read Extension-instance Show Extension-type Opt = String--module Distribution.GetOpt-NoArg :: a -> ArgDescr a-OptArg :: (Maybe String -> a) -> String -> ArgDescr a-Option :: [Char] -> [String] -> (ArgDescr a) -> String -> OptDescr a-Permute :: ArgOrder a-ReqArg :: (String -> a) -> String -> ArgDescr a-RequireOrder :: ArgOrder a-ReturnInOrder :: (String -> a) -> ArgOrder a-data ArgDescr a-data ArgOrder a-data OptDescr a-getOpt :: ArgOrder a -> [OptDescr a] -> [String] -> ([a], [String], [String])-getOpt' :: ArgOrder a -> [OptDescr a] -> [String] -> ([a], [String], [String], [String])-usageInfo :: String -> [OptDescr a] -> String--module Distribution.InstalledPackageInfo-InstalledPackageInfo :: PackageIdentifier -> License -> String -> String -> String -> String -> String -> String -> String -> String -> Bool -> [String] -> [String] -> [FilePath] -> [FilePath] -> [String] -> [String] -> [FilePath] -> [String] -> [PackageIdentifier] -> [Opt] -> [Opt] -> [Opt] -> [FilePath] -> [String] -> [FilePath] -> [FilePath] -> InstalledPackageInfo-ParseFailed :: PError -> ParseResult a-ParseOk :: a -> ParseResult a-author :: InstalledPackageInfo -> String-category :: InstalledPackageInfo -> String-ccOptions :: InstalledPackageInfo -> [Opt]-copyright :: InstalledPackageInfo -> String-data InstalledPackageInfo-data ParseResult a-depends :: InstalledPackageInfo -> [PackageIdentifier]-description :: InstalledPackageInfo -> String-emptyInstalledPackageInfo :: InstalledPackageInfo-exposed :: InstalledPackageInfo -> Bool-exposedModules :: InstalledPackageInfo -> [String]-extraLibraries :: InstalledPackageInfo -> [String]-frameworkDirs :: InstalledPackageInfo -> [FilePath]-frameworks :: InstalledPackageInfo -> [String]-haddockHTMLs :: InstalledPackageInfo -> [FilePath]-haddockInterfaces :: InstalledPackageInfo -> [FilePath]-hiddenModules :: InstalledPackageInfo -> [String]-homepage :: InstalledPackageInfo -> String-hsLibraries :: InstalledPackageInfo -> [String]-hugsOptions :: InstalledPackageInfo -> [Opt]-importDirs :: InstalledPackageInfo -> [FilePath]-includeDirs :: InstalledPackageInfo -> [FilePath]-includes :: InstalledPackageInfo -> [String]-instance Monad ParseResult-instance Read InstalledPackageInfo-instance Show InstalledPackageInfo-instance Show a => Show (ParseResult a)-ldOptions :: InstalledPackageInfo -> [Opt]-libraryDirs :: InstalledPackageInfo -> [FilePath]-license :: InstalledPackageInfo -> License-maintainer :: InstalledPackageInfo -> String-package :: InstalledPackageInfo -> PackageIdentifier-parseInstalledPackageInfo :: String -> ParseResult InstalledPackageInfo-pkgUrl :: InstalledPackageInfo -> String-showInstalledPackageInfo :: InstalledPackageInfo -> String-showInstalledPackageInfoField :: String -> Maybe (InstalledPackageInfo -> String)-stability :: InstalledPackageInfo -> String--module Distribution.License-AllRightsReserved :: License-BSD3 :: License-BSD4 :: License-GPL :: License-LGPL :: License-OtherLicense :: License-PublicDomain :: License-data License-instance Eq License-instance Read License-instance Show License--module Distribution.Package-PackageIdentifier :: String -> Version -> PackageIdentifier-data PackageIdentifier-instance Eq PackageIdentifier-instance Read PackageIdentifier-instance Show PackageIdentifier-parsePackageId :: ReadP r PackageIdentifier-parsePackageName :: ReadP r String-pkgName :: PackageIdentifier -> String-pkgVersion :: PackageIdentifier -> Version-showPackageId :: PackageIdentifier -> String--module Distribution.PackageDescription-BuildInfo :: Bool -> [String] -> [String] -> [String] -> [FilePath] -> FilePath -> [String] -> [Extension] -> [String] -> [String] -> [FilePath] -> [FilePath] -> [(CompilerFlavor,[String])] -> BuildInfo-Executable :: String -> FilePath -> BuildInfo -> Executable-Library :: [String] -> BuildInfo -> Library-PackageDescription :: PackageIdentifier -> License -> FilePath -> String -> String -> String -> String -> [(CompilerFlavor,VersionRange)] -> String -> String -> String -> String -> String -> [Dependency] -> Maybe Library -> [Executable] -> PackageDescription-StanzaField :: String -> a -> Doc -> LineNo -> String -> a -> ParseResult a -> StanzaField a-author :: PackageDescription -> String-basicStanzaFields :: [StanzaField PackageDescription]-buildDepends :: PackageDescription -> [Dependency]-buildInfo :: Executable -> BuildInfo-buildable :: BuildInfo -> Bool-cSources :: BuildInfo -> [FilePath]-category :: PackageDescription -> String-ccOptions :: BuildInfo -> [String]-copyright :: PackageDescription -> String-data BuildInfo-data Executable-data Library-data PError-data PackageDescription-data StanzaField a-description :: PackageDescription -> String-emptyBuildInfo :: BuildInfo-emptyHookedBuildInfo :: HookedBuildInfo-emptyPackageDescription :: PackageDescription-errorOut :: [String] -> [String] -> IO ()-exeModules :: PackageDescription -> [String]-exeName :: Executable -> String-executables :: PackageDescription -> [Executable]-exposedModules :: Library -> [String]-extensions :: BuildInfo -> [Extension]-extraLibDirs :: BuildInfo -> [String]-extraLibs :: BuildInfo -> [String]-fieldGet :: StanzaField a -> a -> Doc-fieldName :: StanzaField a -> String-fieldSet :: StanzaField a -> LineNo -> String -> a -> ParseResult a-frameworks :: BuildInfo -> [String]-hasLibs :: PackageDescription -> Bool-hcOptions :: CompilerFlavor -> [(CompilerFlavor, [String])] -> [String]-homepage :: PackageDescription -> String-hsSourceDir :: BuildInfo -> FilePath-includeDirs :: BuildInfo -> [FilePath]-includes :: BuildInfo -> [FilePath]-instance Eq BuildInfo-instance Eq Executable-instance Eq Library-instance Eq PackageDescription-instance Read BuildInfo-instance Read Executable-instance Read Library-instance Read PackageDescription-instance Show BuildInfo-instance Show Executable-instance Show Library-instance Show PError-instance Show PackageDescription-ldOptions :: BuildInfo -> [String]-libBuildInfo :: Library -> BuildInfo-libModules :: PackageDescription -> [String]-library :: PackageDescription -> Maybe Library-license :: PackageDescription -> License-licenseFile :: PackageDescription -> FilePath-maintainer :: PackageDescription -> String-modulePath :: Executable -> FilePath-options :: BuildInfo -> [(CompilerFlavor,[String])]-otherModules :: BuildInfo -> [String]-package :: PackageDescription -> PackageIdentifier-parseDescription :: String -> ParseResult PackageDescription-parseHookedBuildInfo :: String -> ParseResult HookedBuildInfo-pkgUrl :: PackageDescription -> String-readHookedBuildInfo :: FilePath -> IO HookedBuildInfo-readPackageDescription :: FilePath -> IO PackageDescription-sanityCheckPackage :: PackageDescription -> IO ([String], [String])-setupMessage :: String -> PackageDescription -> IO ()-showError :: PError -> String-showHookedBuildInfo :: HookedBuildInfo -> String-showPackageDescription :: PackageDescription -> String-stability :: PackageDescription -> String-synopsis :: PackageDescription -> String-testedWith :: PackageDescription -> [(CompilerFlavor,VersionRange)]-type HookedBuildInfo = (Maybe BuildInfo, [(String, BuildInfo)])-type LineNo = Int-updatePackageDescription :: HookedBuildInfo -> PackageDescription -> PackageDescription-withExe :: PackageDescription -> (Executable -> IO a) -> IO ()-withLib :: PackageDescription -> a -> (Library -> IO a) -> IO a-writeHookedBuildInfo :: FilePath -> HookedBuildInfo -> IO ()-writePackageDescription :: FilePath -> PackageDescription -> IO ()--module Distribution.PreProcess-knownSuffixHandlers :: [PPSuffixHandler]-ppAlex :: BuildInfo -> LocalBuildInfo -> PreProcessor-ppC2hs :: PreProcessor-ppCpp :: BuildInfo -> LocalBuildInfo -> PreProcessor-ppCpp' :: [String] -> BuildInfo -> LocalBuildInfo -> PreProcessor-ppGreenCard :: PreProcessor-ppHappy :: BuildInfo -> LocalBuildInfo -> PreProcessor-ppHsc2hs :: BuildInfo -> LocalBuildInfo -> PreProcessor-ppSuffixes :: [PPSuffixHandler] -> [String]-ppUnlit :: PreProcessor-preprocessSources :: PackageDescription -> LocalBuildInfo -> Int -> [PPSuffixHandler] -> IO ()-removePreprocessed :: FilePath -> [String] -> [String] -> IO ()-removePreprocessedPackage :: PackageDescription -> FilePath -> [String] -> IO ()-type PPSuffixHandler = (String, BuildInfo -> LocalBuildInfo -> PreProcessor)-type PreProcessor = FilePath -> FilePath -> Int -> IO ExitCode--module Distribution.PreProcess.Unlit-plain :: String -> String -> String-unlit :: String -> String -> String--module Distribution.Setup-BuildCmd :: Action-CleanCmd :: Action-Compiler :: CompilerFlavor -> Version -> FilePath -> FilePath -> Compiler-ConfigCmd :: ConfigFlags -> Action-ConfigFlags :: Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Int -> Bool -> ConfigFlags-CopyCmd :: (Maybe FilePath) -> Action-GHC :: CompilerFlavor-HBC :: CompilerFlavor-HaddockCmd :: Action-Helium :: CompilerFlavor-HelpCmd :: Action-Hugs :: CompilerFlavor-InstallCmd :: Bool -> Action-NHC :: CompilerFlavor-OtherCompiler :: String -> CompilerFlavor-ProgramaticaCmd :: Action-RegisterCmd :: Bool -> Bool -> Action-SDistCmd :: Action-UnregisterCmd :: Bool -> Bool -> Action-compilerFlavor :: Compiler -> CompilerFlavor-compilerPath :: Compiler -> FilePath-compilerPkgTool :: Compiler -> FilePath-compilerVersion :: Compiler -> Version-configAlex :: ConfigFlags -> Maybe FilePath-configCpphs :: ConfigFlags -> Maybe FilePath-configHaddock :: ConfigFlags -> Maybe FilePath-configHappy :: ConfigFlags -> Maybe FilePath-configHcFlavor :: ConfigFlags -> Maybe CompilerFlavor-configHcPath :: ConfigFlags -> Maybe FilePath-configHcPkg :: ConfigFlags -> Maybe FilePath-configHsc2hs :: ConfigFlags -> Maybe FilePath-configPrefix :: ConfigFlags -> Maybe FilePath-configUser :: ConfigFlags -> Bool-configVerbose :: ConfigFlags -> Int-data Action-data Compiler-data CompilerFlavor-data ConfigFlags-instance Eq Action-instance Eq Compiler-instance Eq CompilerFlavor-instance Eq ConfigFlags-instance Read Compiler-instance Read CompilerFlavor-instance Show Action-instance Show Compiler-instance Show CompilerFlavor-instance Show ConfigFlags-parseBuildArgs :: [String] -> [OptDescr a] -> IO (Int, [a], [String])-parseCleanArgs :: [String] -> [OptDescr a] -> IO (Int, [a], [String])-parseConfigureArgs :: ConfigFlags -> [String] -> [OptDescr a] -> IO (ConfigFlags, [a], [String])-parseCopyArgs :: CopyFlags -> [String] -> [OptDescr a] -> IO (CopyFlags, [a], [String])-parseGlobalArgs :: [String] -> IO (Action, [String])-parseHaddockArgs :: [String] -> [OptDescr a] -> IO (Int, [a], [String])-parseInstallArgs :: InstallFlags -> [String] -> [OptDescr a] -> IO (InstallFlags, [a], [String])-parseProgramaticaArgs :: [String] -> [OptDescr a] -> IO (Int, [a], [String])-parseRegisterArgs :: RegisterFlags -> [String] -> [OptDescr a] -> IO (RegisterFlags, [a], [String])-parseSDistArgs :: [String] -> [OptDescr a] -> IO (Int, [a], [String])-parseUnregisterArgs :: RegisterFlags -> [String] -> [OptDescr a] -> IO (RegisterFlags, [a], [String])-type CopyFlags = (Maybe FilePath, Int)-type InstallFlags = (Bool, Int)-type RegisterFlags = (Bool, Bool, Int)--module Distribution.Simple-UserHooks :: Args -> Bool -> LocalBuildInfo -> IO ExitCode -> (IO (Maybe PackageDescription)) -> [PPSuffixHandler] -> Args -> ConfigFlags -> IO HookedBuildInfo -> Args -> ConfigFlags -> LocalBuildInfo -> IO ExitCode -> Args -> Int -> IO HookedBuildInfo -> Args -> Int -> LocalBuildInfo -> IO ExitCode -> Args -> Int -> IO HookedBuildInfo -> Args -> Int -> LocalBuildInfo -> IO ExitCode -> Args -> CopyFlags -> IO HookedBuildInfo -> Args -> CopyFlags -> LocalBuildInfo -> IO ExitCode -> Args -> InstallFlags -> IO HookedBuildInfo -> Args -> InstallFlags -> LocalBuildInfo -> IO ExitCode -> Args -> Int -> IO HookedBuildInfo -> Args -> Int -> LocalBuildInfo -> IO ExitCode -> Args -> RegisterFlags -> IO HookedBuildInfo -> Args -> RegisterFlags -> LocalBuildInfo -> IO ExitCode -> Args -> RegisterFlags -> IO HookedBuildInfo -> Args -> RegisterFlags -> LocalBuildInfo -> IO ExitCode -> Args -> Int -> IO HookedBuildInfo -> Args -> Int -> LocalBuildInfo -> IO ExitCode -> Args -> Int -> IO HookedBuildInfo -> Args -> Int -> LocalBuildInfo -> IO ExitCode -> UserHooks-data UserHooks-defaultHookedPackageDesc :: IO (Maybe FilePath)-defaultMain :: IO ()-defaultMainNoRead :: PackageDescription -> IO ()-defaultMainWithHooks :: UserHooks -> IO ()-defaultUserHooks :: UserHooks-emptyUserHooks :: UserHooks-hookedPreProcessors :: UserHooks -> [PPSuffixHandler]-postBuild :: UserHooks -> Args -> Int -> LocalBuildInfo -> IO ExitCode-postClean :: UserHooks -> Args -> Int -> LocalBuildInfo -> IO ExitCode-postConf :: UserHooks -> Args -> ConfigFlags -> LocalBuildInfo -> IO ExitCode-postCopy :: UserHooks -> Args -> CopyFlags -> LocalBuildInfo -> IO ExitCode-postHaddock :: UserHooks -> Args -> Int -> LocalBuildInfo -> IO ExitCode-postInst :: UserHooks -> Args -> InstallFlags -> LocalBuildInfo -> IO ExitCode-postPFE :: UserHooks -> Args -> Int -> LocalBuildInfo -> IO ExitCode-postReg :: UserHooks -> Args -> RegisterFlags -> LocalBuildInfo -> IO ExitCode-postSDist :: UserHooks -> Args -> Int -> LocalBuildInfo -> IO ExitCode-postUnreg :: UserHooks -> Args -> RegisterFlags -> LocalBuildInfo -> IO ExitCode-preBuild :: UserHooks -> Args -> Int -> IO HookedBuildInfo-preClean :: UserHooks -> Args -> Int -> IO HookedBuildInfo-preConf :: UserHooks -> Args -> ConfigFlags -> IO HookedBuildInfo-preCopy :: UserHooks -> Args -> CopyFlags -> IO HookedBuildInfo-preHaddock :: UserHooks -> Args -> Int -> IO HookedBuildInfo-preInst :: UserHooks -> Args -> InstallFlags -> IO HookedBuildInfo-prePFE :: UserHooks -> Args -> Int -> IO HookedBuildInfo-preReg :: UserHooks -> Args -> RegisterFlags -> IO HookedBuildInfo-preSDist :: UserHooks -> Args -> Int -> IO HookedBuildInfo-preUnreg :: UserHooks -> Args -> RegisterFlags -> IO HookedBuildInfo-readDesc :: UserHooks -> (IO (Maybe PackageDescription))-runTests :: UserHooks -> Args -> Bool -> LocalBuildInfo -> IO ExitCode-type Args = [String]--module Distribution.Simple.Build-build :: PackageDescription -> LocalBuildInfo -> Int -> [PPSuffixHandler] -> IO ()--module Distribution.Simple.Configure-LocalBuildInfo :: FilePath -> Compiler -> FilePath -> [PackageIdentifier] -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> LocalBuildInfo-buildDir :: LocalBuildInfo -> FilePath-compiler :: LocalBuildInfo -> Compiler-configure :: PackageDescription -> ConfigFlags -> IO LocalBuildInfo-data LocalBuildInfo-findProgram :: String -> Maybe FilePath -> IO (Maybe FilePath)-getPersistBuildConfig :: IO LocalBuildInfo-instance Eq LocalBuildInfo-instance Read LocalBuildInfo-instance Show LocalBuildInfo-localBuildInfoFile :: FilePath-packageDeps :: LocalBuildInfo -> [PackageIdentifier]-prefix :: LocalBuildInfo -> FilePath-withAlex :: LocalBuildInfo -> Maybe FilePath-withCpphs :: LocalBuildInfo -> Maybe FilePath-withHaddock :: LocalBuildInfo -> Maybe FilePath-withHappy :: LocalBuildInfo -> Maybe FilePath-withHsc2hs :: LocalBuildInfo -> Maybe FilePath-writePersistBuildConfig :: LocalBuildInfo -> IO ()--module Distribution.Simple.GHCPackageConfig-GHCPackage :: String -> Bool -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> GHCPackageConfig-auto :: GHCPackageConfig -> Bool-c_includes :: GHCPackageConfig -> [String]-canReadLocalPackageConfig :: IO Bool-canWriteLocalPackageConfig :: IO Bool-data GHCPackageConfig-defaultGHCPackageConfig :: GHCPackageConfig-extra_cc_opts :: GHCPackageConfig -> [String]-extra_frameworks :: GHCPackageConfig -> [String]-extra_ghc_opts :: GHCPackageConfig -> [String]-extra_ld_opts :: GHCPackageConfig -> [String]-extra_libraries :: GHCPackageConfig -> [String]-framework_dirs :: GHCPackageConfig -> [String]-hs_libraries :: GHCPackageConfig -> [String]-import_dirs :: GHCPackageConfig -> [String]-include_dirs :: GHCPackageConfig -> [String]-library_dirs :: GHCPackageConfig -> [String]-localPackageConfig :: IO FilePath-maybeCreateLocalPackageConfig :: IO Bool-mkGHCPackageConfig :: PackageDescription -> LocalBuildInfo -> GHCPackageConfig-name :: GHCPackageConfig -> String-package_deps :: GHCPackageConfig -> [String]-showGHCPackageConfig :: GHCPackageConfig -> String-source_dirs :: GHCPackageConfig -> [String]--module Distribution.Simple.Install-hugsMainFilename :: Executable -> FilePath-hugsPackageDir :: PackageDescription -> LocalBuildInfo -> FilePath-hugsProgramsDirs :: PackageDescription -> LocalBuildInfo -> [FilePath]-install :: PackageDescription -> LocalBuildInfo -> (Maybe FilePath, Int) -> IO ()-mkBinDir :: PackageDescription -> LocalBuildInfo -> Maybe FilePath -> FilePath-mkLibDir :: PackageDescription -> LocalBuildInfo -> Maybe FilePath -> FilePath--module Distribution.Simple.Register-installedPkgConfigFile :: String-regScriptLocation :: FilePath-register :: PackageDescription -> LocalBuildInfo -> RegisterFlags -> IO ()-removeInstalledConfig :: IO ()-unregScriptLocation :: FilePath-unregister :: PackageDescription -> LocalBuildInfo -> RegisterFlags -> IO ()-writeInstalledConfig :: PackageDescription -> LocalBuildInfo -> IO ()--module Distribution.Simple.SrcDist-sdist :: FilePath -> FilePath -> Int -> [PPSuffixHandler] -> PackageDescription -> IO ()--module Foreign-unsafePerformIO :: IO a -> a--module Foreign.C.Error-Errno :: CInt -> Errno-e2BIG :: Errno-eACCES :: Errno-eADDRINUSE :: Errno-eADDRNOTAVAIL :: Errno-eADV :: Errno-eAFNOSUPPORT :: Errno-eAGAIN :: Errno-eALREADY :: Errno-eBADF :: Errno-eBADMSG :: Errno-eBADRPC :: Errno-eBUSY :: Errno-eCHILD :: Errno-eCOMM :: Errno-eCONNABORTED :: Errno-eCONNREFUSED :: Errno-eCONNRESET :: Errno-eDEADLK :: Errno-eDESTADDRREQ :: Errno-eDIRTY :: Errno-eDOM :: Errno-eDQUOT :: Errno-eEXIST :: Errno-eFAULT :: Errno-eFBIG :: Errno-eFTYPE :: Errno-eHOSTDOWN :: Errno-eHOSTUNREACH :: Errno-eIDRM :: Errno-eILSEQ :: Errno-eINPROGRESS :: Errno-eINTR :: Errno-eINVAL :: Errno-eIO :: Errno-eISCONN :: Errno-eISDIR :: Errno-eLOOP :: Errno-eMFILE :: Errno-eMLINK :: Errno-eMSGSIZE :: Errno-eMULTIHOP :: Errno-eNAMETOOLONG :: Errno-eNETDOWN :: Errno-eNETRESET :: Errno-eNETUNREACH :: Errno-eNFILE :: Errno-eNOBUFS :: Errno-eNODATA :: Errno-eNODEV :: Errno-eNOENT :: Errno-eNOEXEC :: Errno-eNOLCK :: Errno-eNOLINK :: Errno-eNOMEM :: Errno-eNOMSG :: Errno-eNONET :: Errno-eNOPROTOOPT :: Errno-eNOSPC :: Errno-eNOSR :: Errno-eNOSTR :: Errno-eNOSYS :: Errno-eNOTBLK :: Errno-eNOTCONN :: Errno-eNOTDIR :: Errno-eNOTEMPTY :: Errno-eNOTSOCK :: Errno-eNOTTY :: Errno-eNXIO :: Errno-eOK :: Errno-eOPNOTSUPP :: Errno-ePERM :: Errno-ePFNOSUPPORT :: Errno-ePIPE :: Errno-ePROCLIM :: Errno-ePROCUNAVAIL :: Errno-ePROGMISMATCH :: Errno-ePROGUNAVAIL :: Errno-ePROTO :: Errno-ePROTONOSUPPORT :: Errno-ePROTOTYPE :: Errno-eRANGE :: Errno-eREMCHG :: Errno-eREMOTE :: Errno-eROFS :: Errno-eRPCMISMATCH :: Errno-eRREMOTE :: Errno-eSHUTDOWN :: Errno-eSOCKTNOSUPPORT :: Errno-eSPIPE :: Errno-eSRCH :: Errno-eSRMNT :: Errno-eSTALE :: Errno-eTIME :: Errno-eTIMEDOUT :: Errno-eTOOMANYREFS :: Errno-eTXTBSY :: Errno-eUSERS :: Errno-eWOULDBLOCK :: Errno-eXDEV :: Errno-errnoToIOError :: String -> Errno -> Maybe Handle -> Maybe String -> IOError-getErrno :: IO Errno-instance Eq Errno-isValidErrno :: Errno -> Bool-newtype Errno-resetErrno :: IO ()-throwErrno :: String -> IO a-throwErrnoIf :: (a -> Bool) -> String -> IO a -> IO a-throwErrnoIfMinus1 :: Num a => String -> IO a -> IO a-throwErrnoIfMinus1Retry :: Num a => String -> IO a -> IO a-throwErrnoIfMinus1RetryMayBlock :: Num a => String -> IO a -> IO b -> IO a-throwErrnoIfMinus1RetryMayBlock_ :: Num a => String -> IO a -> IO b -> IO ()-throwErrnoIfMinus1Retry_ :: Num a => String -> IO a -> IO ()-throwErrnoIfMinus1_ :: Num a => String -> IO a -> IO ()-throwErrnoIfNull :: String -> IO (Ptr a) -> IO (Ptr a)-throwErrnoIfNullRetry :: String -> IO (Ptr a) -> IO (Ptr a)-throwErrnoIfNullRetryMayBlock :: String -> IO (Ptr a) -> IO b -> IO (Ptr a)-throwErrnoIfRetry :: (a -> Bool) -> String -> IO a -> IO a-throwErrnoIfRetryMayBlock :: (a -> Bool) -> String -> IO a -> IO b -> IO a-throwErrnoIfRetryMayBlock_ :: (a -> Bool) -> String -> IO a -> IO b -> IO ()-throwErrnoIfRetry_ :: (a -> Bool) -> String -> IO a -> IO ()-throwErrnoIf_ :: (a -> Bool) -> String -> IO a -> IO ()--module Foreign.C.String-castCCharToChar :: CChar -> Char-castCharToCChar :: Char -> CChar-charIsRepresentable :: Char -> IO Bool-newCAString :: String -> IO CString-newCAStringLen :: String -> IO CStringLen-newCString :: String -> IO CString-newCStringLen :: String -> IO CStringLen-newCWString :: String -> IO CWString-newCWStringLen :: String -> IO CWStringLen-peekCAString :: CString -> IO String-peekCAStringLen :: CStringLen -> IO String-peekCString :: CString -> IO String-peekCStringLen :: CStringLen -> IO String-peekCWString :: CWString -> IO String-peekCWStringLen :: CWStringLen -> IO String-type CString = Ptr CChar-type CStringLen = (Ptr CChar, Int)-type CWString = Ptr CWchar-type CWStringLen = (Ptr CWchar, Int)-withCAString :: String -> (CString -> IO a) -> IO a-withCAStringLen :: String -> (CStringLen -> IO a) -> IO a-withCString :: String -> (CString -> IO a) -> IO a-withCStringLen :: String -> (CStringLen -> IO a) -> IO a-withCWString :: String -> (CWString -> IO a) -> IO a-withCWStringLen :: String -> (CWStringLen -> IO a) -> IO a--module Foreign.C.Types-data CChar-data CClock-data CDouble-data CFile-data CFloat-data CFpos-data CInt-data CJmpBuf-data CLDouble-data CLLong-data CLong-data CPtrdiff-data CSChar-data CShort-data CSigAtomic-data CSize-data CTime-data CUChar-data CUInt-data CULLong-data CULong-data CUShort-data CWchar-instance Bits CChar-instance Bits CInt-instance Bits CLLong-instance Bits CLong-instance Bits CPtrdiff-instance Bits CSChar-instance Bits CShort-instance Bits CSigAtomic-instance Bits CSize-instance Bits CUChar-instance Bits CUInt-instance Bits CULLong-instance Bits CULong-instance Bits CUShort-instance Bits CWchar-instance Bounded CChar-instance Bounded CInt-instance Bounded CLLong-instance Bounded CLong-instance Bounded CPtrdiff-instance Bounded CSChar-instance Bounded CShort-instance Bounded CSigAtomic-instance Bounded CSize-instance Bounded CUChar-instance Bounded CUInt-instance Bounded CULLong-instance Bounded CULong-instance Bounded CUShort-instance Bounded CWchar-instance Enum CChar-instance Enum CClock-instance Enum CDouble-instance Enum CFloat-instance Enum CInt-instance Enum CLDouble-instance Enum CLLong-instance Enum CLong-instance Enum CPtrdiff-instance Enum CSChar-instance Enum CShort-instance Enum CSigAtomic-instance Enum CSize-instance Enum CTime-instance Enum CUChar-instance Enum CUInt-instance Enum CULLong-instance Enum CULong-instance Enum CUShort-instance Enum CWchar-instance Eq CChar-instance Eq CClock-instance Eq CDouble-instance Eq CFloat-instance Eq CInt-instance Eq CLDouble-instance Eq CLLong-instance Eq CLong-instance Eq CPtrdiff-instance Eq CSChar-instance Eq CShort-instance Eq CSigAtomic-instance Eq CSize-instance Eq CTime-instance Eq CUChar-instance Eq CUInt-instance Eq CULLong-instance Eq CULong-instance Eq CUShort-instance Eq CWchar-instance Floating CDouble-instance Floating CFloat-instance Floating CLDouble-instance Fractional CDouble-instance Fractional CFloat-instance Fractional CLDouble-instance Integral CChar-instance Integral CInt-instance Integral CLLong-instance Integral CLong-instance Integral CPtrdiff-instance Integral CSChar-instance Integral CShort-instance Integral CSigAtomic-instance Integral CSize-instance Integral CUChar-instance Integral CUInt-instance Integral CULLong-instance Integral CULong-instance Integral CUShort-instance Integral CWchar-instance Num CChar-instance Num CClock-instance Num CDouble-instance Num CFloat-instance Num CInt-instance Num CLDouble-instance Num CLLong-instance Num CLong-instance Num CPtrdiff-instance Num CSChar-instance Num CShort-instance Num CSigAtomic-instance Num CSize-instance Num CTime-instance Num CUChar-instance Num CUInt-instance Num CULLong-instance Num CULong-instance Num CUShort-instance Num CWchar-instance Ord CChar-instance Ord CClock-instance Ord CDouble-instance Ord CFloat-instance Ord CInt-instance Ord CLDouble-instance Ord CLLong-instance Ord CLong-instance Ord CPtrdiff-instance Ord CSChar-instance Ord CShort-instance Ord CSigAtomic-instance Ord CSize-instance Ord CTime-instance Ord CUChar-instance Ord CUInt-instance Ord CULLong-instance Ord CULong-instance Ord CUShort-instance Ord CWchar-instance Read CChar-instance Read CClock-instance Read CDouble-instance Read CFloat-instance Read CInt-instance Read CLDouble-instance Read CLLong-instance Read CLong-instance Read CPtrdiff-instance Read CSChar-instance Read CShort-instance Read CSigAtomic-instance Read CSize-instance Read CTime-instance Read CUChar-instance Read CUInt-instance Read CULLong-instance Read CULong-instance Read CUShort-instance Read CWchar-instance Real CChar-instance Real CClock-instance Real CDouble-instance Real CFloat-instance Real CInt-instance Real CLDouble-instance Real CLLong-instance Real CLong-instance Real CPtrdiff-instance Real CSChar-instance Real CShort-instance Real CSigAtomic-instance Real CSize-instance Real CTime-instance Real CUChar-instance Real CUInt-instance Real CULLong-instance Real CULong-instance Real CUShort-instance Real CWchar-instance RealFloat CDouble-instance RealFloat CFloat-instance RealFloat CLDouble-instance RealFrac CDouble-instance RealFrac CFloat-instance RealFrac CLDouble-instance Show CChar-instance Show CClock-instance Show CDouble-instance Show CFloat-instance Show CInt-instance Show CLDouble-instance Show CLLong-instance Show CLong-instance Show CPtrdiff-instance Show CSChar-instance Show CShort-instance Show CSigAtomic-instance Show CSize-instance Show CTime-instance Show CUChar-instance Show CUInt-instance Show CULLong-instance Show CULong-instance Show CUShort-instance Show CWchar-instance Storable CChar-instance Storable CClock-instance Storable CDouble-instance Storable CFloat-instance Storable CInt-instance Storable CLDouble-instance Storable CLLong-instance Storable CLong-instance Storable CPtrdiff-instance Storable CSChar-instance Storable CShort-instance Storable CSigAtomic-instance Storable CSize-instance Storable CTime-instance Storable CUChar-instance Storable CUInt-instance Storable CULLong-instance Storable CULong-instance Storable CUShort-instance Storable CWchar-instance Typeable CChar-instance Typeable CClock-instance Typeable CDouble-instance Typeable CFloat-instance Typeable CInt-instance Typeable CLDouble-instance Typeable CLLong-instance Typeable CLong-instance Typeable CPtrdiff-instance Typeable CSChar-instance Typeable CShort-instance Typeable CSigAtomic-instance Typeable CSize-instance Typeable CTime-instance Typeable CUChar-instance Typeable CUInt-instance Typeable CULLong-instance Typeable CULong-instance Typeable CUShort-instance Typeable CWchar--module Foreign.Concurrent-addForeignPtrFinalizer :: ForeignPtr a -> IO () -> IO ()-newForeignPtr :: Ptr a -> IO () -> IO (ForeignPtr a)--module Foreign.ForeignPtr-addForeignPtrFinalizer :: FinalizerPtr a -> ForeignPtr a -> IO ()-castForeignPtr :: ForeignPtr a -> ForeignPtr b-data ForeignPtr a-finalizeForeignPtr :: ForeignPtr a -> IO ()-instance Eq (ForeignPtr a)-instance Ord (ForeignPtr a)-instance Show (ForeignPtr a)-instance Typeable a => Data (ForeignPtr a)-instance Typeable1 ForeignPtr-mallocForeignPtr :: Storable a => IO (ForeignPtr a)-mallocForeignPtrArray :: Storable a => Int -> IO (ForeignPtr a)-mallocForeignPtrArray0 :: Storable a => Int -> IO (ForeignPtr a)-mallocForeignPtrBytes :: Int -> IO (ForeignPtr a)-newForeignPtr :: FinalizerPtr a -> Ptr a -> IO (ForeignPtr a)-newForeignPtr_ :: Ptr a -> IO (ForeignPtr a)-touchForeignPtr :: ForeignPtr a -> IO ()-type FinalizerPtr a = FunPtr (Ptr a -> IO ())-unsafeForeignPtrToPtr :: ForeignPtr a -> Ptr a-withForeignPtr :: ForeignPtr a -> (Ptr a -> IO b) -> IO b--module Foreign.Marshal.Alloc-alloca :: Storable a => (Ptr a -> IO b) -> IO b-allocaBytes :: Int -> (Ptr a -> IO b) -> IO b-finalizerFree :: FinalizerPtr a-free :: Ptr a -> IO ()-malloc :: Storable a => IO (Ptr a)-mallocBytes :: Int -> IO (Ptr a)-realloc :: Storable b => Ptr a -> IO (Ptr b)-reallocBytes :: Ptr a -> Int -> IO (Ptr a)--module Foreign.Marshal.Array-advancePtr :: Storable a => Ptr a -> Int -> Ptr a-allocaArray :: Storable a => Int -> (Ptr a -> IO b) -> IO b-allocaArray0 :: Storable a => Int -> (Ptr a -> IO b) -> IO b-copyArray :: Storable a => Ptr a -> Ptr a -> Int -> IO ()-lengthArray0 :: (Storable a, Eq a) => a -> Ptr a -> IO Int-mallocArray :: Storable a => Int -> IO (Ptr a)-mallocArray0 :: Storable a => Int -> IO (Ptr a)-moveArray :: Storable a => Ptr a -> Ptr a -> Int -> IO ()-newArray :: Storable a => [a] -> IO (Ptr a)-newArray0 :: Storable a => a -> [a] -> IO (Ptr a)-peekArray :: Storable a => Int -> Ptr a -> IO [a]-peekArray0 :: (Storable a, Eq a) => a -> Ptr a -> IO [a]-pokeArray :: Storable a => Ptr a -> [a] -> IO ()-pokeArray0 :: Storable a => a -> Ptr a -> [a] -> IO ()-reallocArray :: Storable a => Ptr a -> Int -> IO (Ptr a)-reallocArray0 :: Storable a => Ptr a -> Int -> IO (Ptr a)-withArray :: Storable a => [a] -> (Ptr a -> IO b) -> IO b-withArray0 :: Storable a => a -> [a] -> (Ptr a -> IO b) -> IO b-withArrayLen :: Storable a => [a] -> (Int -> Ptr a -> IO b) -> IO b-withArrayLen0 :: Storable a => a -> [a] -> (Int -> Ptr a -> IO b) -> IO b--module Foreign.Marshal.Error-throwIf :: (a -> Bool) -> (a -> String) -> IO a -> IO a-throwIfNeg :: (Ord a, Num a) => (a -> String) -> IO a -> IO a-throwIfNeg_ :: (Ord a, Num a) => (a -> String) -> IO a -> IO ()-throwIfNull :: String -> IO (Ptr a) -> IO (Ptr a)-throwIf_ :: (a -> Bool) -> (a -> String) -> IO a -> IO ()-void :: IO a -> IO ()--module Foreign.Marshal.Pool-data Pool-freePool :: Pool -> IO ()-newPool :: IO Pool-pooledMalloc :: Storable a => Pool -> IO (Ptr a)-pooledMallocArray :: Storable a => Pool -> Int -> IO (Ptr a)-pooledMallocArray0 :: Storable a => Pool -> Int -> IO (Ptr a)-pooledMallocBytes :: Pool -> Int -> IO (Ptr a)-pooledNew :: Storable a => Pool -> a -> IO (Ptr a)-pooledNewArray :: Storable a => Pool -> [a] -> IO (Ptr a)-pooledNewArray0 :: Storable a => Pool -> a -> [a] -> IO (Ptr a)-pooledRealloc :: Storable a => Pool -> Ptr a -> IO (Ptr a)-pooledReallocArray :: Storable a => Pool -> Ptr a -> Int -> IO (Ptr a)-pooledReallocArray0 :: Storable a => Pool -> Ptr a -> Int -> IO (Ptr a)-pooledReallocBytes :: Pool -> Ptr a -> Int -> IO (Ptr a)-withPool :: (Pool -> IO b) -> IO b--module Foreign.Marshal.Utils-copyBytes :: Ptr a -> Ptr a -> Int -> IO ()-fromBool :: Num a => Bool -> a-maybeNew :: (a -> IO (Ptr a)) -> Maybe a -> IO (Ptr a)-maybePeek :: (Ptr a -> IO b) -> Ptr a -> IO (Maybe b)-maybeWith :: (a -> (Ptr b -> IO c) -> IO c) -> Maybe a -> (Ptr b -> IO c) -> IO c-moveBytes :: Ptr a -> Ptr a -> Int -> IO ()-new :: Storable a => a -> IO (Ptr a)-toBool :: Num a => a -> Bool-with :: Storable a => a -> (Ptr a -> IO b) -> IO b-withMany :: (a -> (b -> res) -> res) -> [a] -> ([b] -> res) -> res-withObject :: Storable a => a -> (Ptr a -> IO b) -> IO b--module Foreign.Ptr-alignPtr :: Ptr a -> Int -> Ptr a-castFunPtr :: FunPtr a -> FunPtr b-castFunPtrToPtr :: FunPtr a -> Ptr b-castPtr :: Ptr a -> Ptr b-castPtrToFunPtr :: Ptr a -> FunPtr b-data FunPtr a-data Ptr a-freeHaskellFunPtr :: FunPtr a -> IO ()-instance Eq (FunPtr a)-instance Eq (Ptr a)-instance IArray (IOToDiffArray IOUArray) (FunPtr a)-instance IArray (IOToDiffArray IOUArray) (Ptr a)-instance IArray UArray (FunPtr a)-instance IArray UArray (Ptr a)-instance Ix ix => Eq (UArray ix (FunPtr a))-instance Ix ix => Eq (UArray ix (Ptr a))-instance Ix ix => Ord (UArray ix (FunPtr a))-instance Ix ix => Ord (UArray ix (Ptr a))-instance MArray (STUArray s) (FunPtr a) (ST s)-instance MArray (STUArray s) (Ptr a) (ST s)-instance Ord (FunPtr a)-instance Ord (Ptr a)-instance Show (FunPtr a)-instance Show (Ptr a)-instance Storable (FunPtr a)-instance Storable (Ptr a)-instance Typeable a => Data (Ptr a)-instance Typeable1 FunPtr-instance Typeable1 Ptr-minusPtr :: Ptr a -> Ptr b -> Int-nullFunPtr :: FunPtr a-nullPtr :: Ptr a-plusPtr :: Ptr a -> Int -> Ptr b--module Foreign.StablePtr-castPtrToStablePtr :: Ptr () -> StablePtr a-castStablePtrToPtr :: StablePtr a -> Ptr ()-data StablePtr a-deRefStablePtr :: StablePtr a -> IO a-freeStablePtr :: StablePtr a -> IO ()-instance Eq (StablePtr a)-instance IArray (IOToDiffArray IOUArray) (StablePtr a)-instance IArray UArray (StablePtr a)-instance Ix ix => Eq (UArray ix (StablePtr a))-instance MArray (STUArray s) (StablePtr a) (ST s)-instance Storable (StablePtr a)-instance Typeable a => Data (StablePtr a)-instance Typeable1 StablePtr-newStablePtr :: a -> IO (StablePtr a)--module Foreign.Storable-alignment :: Storable a => a -> Int-class Storable a-peek :: Storable a => Ptr a -> IO a-peekByteOff :: Storable a => Ptr b -> Int -> IO a-peekElemOff :: Storable a => Ptr a -> Int -> IO a-poke :: Storable a => Ptr a -> a -> IO ()-pokeByteOff :: Storable a => Ptr b -> Int -> a -> IO ()-pokeElemOff :: Storable a => Ptr a -> Int -> a -> IO ()-sizeOf :: Storable a => a -> Int--module GHC.Conc-ThreadId :: ThreadId# -> ThreadId-addMVarFinalizer :: MVar a -> IO () -> IO ()-asyncDoProc :: FunPtr (Ptr a -> IO Int) -> Ptr a -> IO Int-asyncRead :: Int -> Int -> Int -> Ptr a -> IO (Int, Int)-asyncReadBA :: Int -> Int -> Int -> Int -> MutableByteArray# RealWorld -> IO (Int, Int)-asyncWrite :: Int -> Int -> Int -> Ptr a -> IO (Int, Int)-asyncWriteBA :: Int -> Int -> Int -> Int -> MutableByteArray# RealWorld -> IO (Int, Int)-atomically :: STM a -> IO a-catchSTM :: STM a -> (Exception -> STM a) -> STM a-data MVar a-data STM a-data TVar a-instance ??? a => Typeable (STM a)-instance ??? a => Typeable (TVar a)-instance Eq (MVar a)-instance Eq (TVar a)-instance Functor STM-instance Monad STM-instance Typeable a => Data (MVar a)-instance Typeable a => Data (STM a)-instance Typeable a => Data (TVar a)-instance Typeable1 MVar-isEmptyMVar :: MVar a -> IO Bool-labelThread :: ThreadId -> String -> IO ()-newEmptyMVar :: IO (MVar a)-newMVar :: a -> IO (MVar a)-newTVar :: a -> STM (TVar a)-orElse :: STM a -> STM a -> STM a-pseq :: a -> b -> b-putMVar :: MVar a -> a -> IO ()-readTVar :: TVar a -> STM a-retry :: STM a-takeMVar :: MVar a -> IO a-tryPutMVar :: MVar a -> a -> IO Bool-tryTakeMVar :: MVar a -> IO (Maybe a)-unsafeIOToSTM :: IO a -> STM a-writeTVar :: TVar a -> a -> STM ()--module GHC.ConsoleHandler-Break :: ConsoleEvent-Catch :: (ConsoleEvent -> IO ()) -> Handler-Close :: ConsoleEvent-ControlC :: ConsoleEvent-Default :: Handler-Ignore :: Handler-Logoff :: ConsoleEvent-Shutdown :: ConsoleEvent-data ConsoleEvent-data Handler-flushConsole :: Handle -> IO ()-installHandler :: Handler -> IO Handler--module GHC.Dotnet-checkResult :: (State# RealWorld -> (#State# RealWorld, a, Addr##)) -> IO a-data Object a-marshalObject :: Object a -> (Addr# -> IO b) -> IO b-marshalString :: String -> (Addr# -> IO a) -> IO a-unmarshalObject :: Addr# -> Object a-unmarshalString :: Addr# -> String--module GHC.Exts-C# :: Char# -> Char-D# :: Double# -> Double-F# :: Float# -> Float-FunPtr :: Addr# -> FunPtr a-I# :: Int# -> Int-J# :: Int# -> ByteArray# -> Integer-Ptr :: Addr# -> Ptr a-S# :: Int# -> Integer-W# :: Word# -> Word-augment :: ((a -> b -> b) -> b -> b) -> [a] -> [a]-build :: ((a -> b -> b) -> b -> b) -> [a]-class Splittable t-iShiftL# :: Int# -> Int# -> Int#-iShiftRA# :: Int# -> Int# -> Int#-iShiftRL# :: Int# -> Int# -> Int#-shiftL# :: Word# -> Int# -> Word#-shiftRL# :: Word# -> Int# -> Word#-split :: Splittable t => t -> (t,t)--module GHC.Unicode-isAsciiLower :: Char -> Bool-isAsciiUpper :: Char -> Bool--module IO-bracket :: IO a -> (a -> IO b) -> (a -> IO c) -> IO c-bracket_ :: IO a -> (a -> IO b) -> IO c -> IO c-hClose :: Handle -> IO ()-hFileSize :: Handle -> IO Integer-hFlush :: Handle -> IO ()-hGetBuffering :: Handle -> IO BufferMode-hGetChar :: Handle -> IO Char-hGetContents :: Handle -> IO String-hGetLine :: Handle -> IO String-hGetPosn :: Handle -> IO HandlePosn-hIsClosed :: Handle -> IO Bool-hIsEOF :: Handle -> IO Bool-hIsOpen :: Handle -> IO Bool-hIsReadable :: Handle -> IO Bool-hIsSeekable :: Handle -> IO Bool-hIsWritable :: Handle -> IO Bool-hLookAhead :: Handle -> IO Char-hPrint :: Show a => Handle -> a -> IO ()-hPutChar :: Handle -> Char -> IO ()-hPutStr :: Handle -> String -> IO ()-hPutStrLn :: Handle -> String -> IO ()-hReady :: Handle -> IO Bool-hSeek :: Handle -> SeekMode -> Integer -> IO ()-hSetBuffering :: Handle -> BufferMode -> IO ()-hSetPosn :: HandlePosn -> IO ()-hWaitForInput :: Handle -> Int -> IO Bool-ioeGetErrorString :: IOError -> String-ioeGetFileName :: IOError -> Maybe FilePath-ioeGetHandle :: IOError -> Maybe Handle-isAlreadyExistsError :: IOError -> Bool-isAlreadyInUseError :: IOError -> Bool-isDoesNotExistError :: IOError -> Bool-isEOF :: IO Bool-isEOFError :: IOError -> Bool-isFullError :: IOError -> Bool-isIllegalOperation :: IOError -> Bool-isPermissionError :: IOError -> Bool-isUserError :: IOError -> Bool-openFile :: FilePath -> IOMode -> IO Handle-stderr :: Handle-stdin :: Handle-stdout :: Handle-try :: IO a -> IO (Either IOError a)--module Ix-inRange :: Ix a => (a,a) -> a -> Bool-index :: Ix a => (a,a) -> a -> Int-range :: Ix a => (a,a) -> [a]-rangeSize :: Ix a => (a,a) -> Int--module Language.Haskell.Parser-ParseFailed :: SrcLoc -> String -> ParseResult a-ParseMode :: String -> ParseMode-data ParseMode-defaultParseMode :: ParseMode-parseFilename :: ParseMode -> String-parseModule :: String -> ParseResult HsModule-parseModuleWithMode :: ParseMode -> String -> ParseResult HsModule--module Language.Haskell.Syntax-HsAlt :: SrcLoc -> HsPat -> HsGuardedAlts -> [HsDecl] -> HsAlt-HsApp :: HsExp -> HsExp -> HsExp-HsAsPat :: HsName -> HsExp -> HsExp-HsAssocLeft :: HsAssoc-HsAssocNone :: HsAssoc-HsAssocRight :: HsAssoc-HsBangedTy :: HsType -> HsBangType-HsCase :: HsExp -> [HsAlt] -> HsExp-HsChar :: Char -> HsLiteral-HsCharPrim :: Char -> HsLiteral-HsClassDecl :: SrcLoc -> HsContext -> HsName -> [HsName] -> [HsDecl] -> HsDecl-HsCon :: HsQName -> HsExp-HsConDecl :: SrcLoc -> HsName -> [HsBangType] -> HsConDecl-HsConName :: HsName -> HsCName-HsConOp :: HsName -> HsOp-HsCons :: HsSpecialCon-HsDataDecl :: SrcLoc -> HsContext -> HsName -> [HsName] -> [HsConDecl] -> [HsQName] -> HsDecl-HsDefaultDecl :: SrcLoc -> [HsType] -> HsDecl-HsDo :: [HsStmt] -> HsExp-HsDoublePrim :: Rational -> HsLiteral-HsEAbs :: HsQName -> HsExportSpec-HsEModuleContents :: Module -> HsExportSpec-HsEThingAll :: HsQName -> HsExportSpec-HsEThingWith :: HsQName -> [HsCName] -> HsExportSpec-HsEVar :: HsQName -> HsExportSpec-HsEnumFrom :: HsExp -> HsExp-HsEnumFromThen :: HsExp -> HsExp -> HsExp-HsEnumFromThenTo :: HsExp -> HsExp -> HsExp -> HsExp-HsEnumFromTo :: HsExp -> HsExp -> HsExp-HsExpTypeSig :: SrcLoc -> HsExp -> HsQualType -> HsExp-HsFieldUpdate :: HsQName -> HsExp -> HsFieldUpdate-HsFloatPrim :: Rational -> HsLiteral-HsFrac :: Rational -> HsLiteral-HsFunBind :: [HsMatch] -> HsDecl-HsFunCon :: HsSpecialCon-HsGenerator :: SrcLoc -> HsPat -> HsExp -> HsStmt-HsGuardedAlt :: SrcLoc -> HsExp -> HsExp -> HsGuardedAlt-HsGuardedAlts :: [HsGuardedAlt] -> HsGuardedAlts-HsGuardedRhs :: SrcLoc -> HsExp -> HsExp -> HsGuardedRhs-HsGuardedRhss :: [HsGuardedRhs] -> HsRhs-HsIAbs :: HsName -> HsImportSpec-HsIThingAll :: HsName -> HsImportSpec-HsIThingWith :: HsName -> [HsCName] -> HsImportSpec-HsIVar :: HsName -> HsImportSpec-HsIdent :: String -> HsName-HsIf :: HsExp -> HsExp -> HsExp -> HsExp-HsImportDecl :: SrcLoc -> Module -> Bool -> Maybe Module -> (Maybe (Bool,[HsImportSpec])) -> HsImportDecl-HsInfixApp :: HsExp -> HsQOp -> HsExp -> HsExp-HsInfixDecl :: SrcLoc -> HsAssoc -> Int -> [HsOp] -> HsDecl-HsInstDecl :: SrcLoc -> HsContext -> HsQName -> [HsType] -> [HsDecl] -> HsDecl-HsInt :: Integer -> HsLiteral-HsIntPrim :: Integer -> HsLiteral-HsIrrPat :: HsExp -> HsExp-HsLambda :: SrcLoc -> [HsPat] -> HsExp -> HsExp-HsLeftSection :: HsExp -> HsQOp -> HsExp-HsLet :: [HsDecl] -> HsExp -> HsExp-HsLetStmt :: [HsDecl] -> HsStmt-HsList :: [HsExp] -> HsExp-HsListComp :: HsExp -> [HsStmt] -> HsExp-HsListCon :: HsSpecialCon-HsLit :: HsLiteral -> HsExp-HsMatch :: SrcLoc -> HsName -> [HsPat] -> HsRhs -> [HsDecl] -> HsMatch-HsModule :: SrcLoc -> Module -> (Maybe [HsExportSpec]) -> [HsImportDecl] -> [HsDecl] -> HsModule-HsNegApp :: HsExp -> HsExp-HsNewTypeDecl :: SrcLoc -> HsContext -> HsName -> [HsName] -> HsConDecl -> [HsQName] -> HsDecl-HsPApp :: HsQName -> [HsPat] -> HsPat-HsPAsPat :: HsName -> HsPat -> HsPat-HsPFieldPat :: HsQName -> HsPat -> HsPatField-HsPInfixApp :: HsPat -> HsQName -> HsPat -> HsPat-HsPIrrPat :: HsPat -> HsPat-HsPList :: [HsPat] -> HsPat-HsPLit :: HsLiteral -> HsPat-HsPNeg :: HsPat -> HsPat-HsPParen :: HsPat -> HsPat-HsPRec :: HsQName -> [HsPatField] -> HsPat-HsPTuple :: [HsPat] -> HsPat-HsPVar :: HsName -> HsPat-HsPWildCard :: HsPat-HsParen :: HsExp -> HsExp-HsPatBind :: SrcLoc -> HsPat -> HsRhs -> [HsDecl] -> HsDecl-HsQConOp :: HsQName -> HsQOp-HsQVarOp :: HsQName -> HsQOp-HsQualType :: HsContext -> HsType -> HsQualType-HsQualifier :: HsExp -> HsStmt-HsRecConstr :: HsQName -> [HsFieldUpdate] -> HsExp-HsRecDecl :: SrcLoc -> HsName -> [([HsName],HsBangType)] -> HsConDecl-HsRecUpdate :: HsExp -> [HsFieldUpdate] -> HsExp-HsRightSection :: HsQOp -> HsExp -> HsExp-HsString :: String -> HsLiteral-HsStringPrim :: String -> HsLiteral-HsSymbol :: String -> HsName-HsTuple :: [HsExp] -> HsExp-HsTupleCon :: Int -> HsSpecialCon-HsTyApp :: HsType -> HsType -> HsType-HsTyCon :: HsQName -> HsType-HsTyFun :: HsType -> HsType -> HsType-HsTyTuple :: [HsType] -> HsType-HsTyVar :: HsName -> HsType-HsTypeDecl :: SrcLoc -> HsName -> [HsName] -> HsType -> HsDecl-HsTypeSig :: SrcLoc -> [HsName] -> HsQualType -> HsDecl-HsUnBangedTy :: HsType -> HsBangType-HsUnGuardedAlt :: HsExp -> HsGuardedAlts-HsUnGuardedRhs :: HsExp -> HsRhs-HsUnitCon :: HsSpecialCon-HsVar :: HsQName -> HsExp-HsVarName :: HsName -> HsCName-HsVarOp :: HsName -> HsOp-HsWildCard :: HsExp-Module :: String -> Module-Qual :: Module -> HsName -> HsQName-Special :: HsSpecialCon -> HsQName-SrcLoc :: String -> Int -> Int -> SrcLoc-UnQual :: HsName -> HsQName-as_name :: HsName-data HsAlt-data HsAssoc-data HsBangType-data HsCName-data HsConDecl-data HsDecl-data HsExp-data HsExportSpec-data HsFieldUpdate-data HsGuardedAlt-data HsGuardedAlts-data HsGuardedRhs-data HsImportDecl-data HsImportSpec-data HsLiteral-data HsMatch-data HsModule-data HsName-data HsOp-data HsPat-data HsPatField-data HsQName-data HsQOp-data HsQualType-data HsRhs-data HsSpecialCon-data HsStmt-data HsType-data SrcLoc-fun_tycon :: HsType-fun_tycon_name :: HsQName-hiding_name :: HsName-importAs :: HsImportDecl -> Maybe Module-importLoc :: HsImportDecl -> SrcLoc-importModule :: HsImportDecl -> Module-importQualified :: HsImportDecl -> Bool-importSpecs :: HsImportDecl -> (Maybe (Bool,[HsImportSpec]))-instance Data HsAlt-instance Data HsAssoc-instance Data HsBangType-instance Data HsCName-instance Data HsConDecl-instance Data HsDecl-instance Data HsExp-instance Data HsExportSpec-instance Data HsFieldUpdate-instance Data HsGuardedAlt-instance Data HsGuardedAlts-instance Data HsGuardedRhs-instance Data HsImportDecl-instance Data HsImportSpec-instance Data HsLiteral-instance Data HsMatch-instance Data HsModule-instance Data HsName-instance Data HsOp-instance Data HsPat-instance Data HsPatField-instance Data HsQName-instance Data HsQOp-instance Data HsQualType-instance Data HsRhs-instance Data HsSpecialCon-instance Data HsStmt-instance Data HsType-instance Data Module-instance Data SrcLoc-instance Eq HsAlt-instance Eq HsAssoc-instance Eq HsBangType-instance Eq HsCName-instance Eq HsConDecl-instance Eq HsDecl-instance Eq HsExp-instance Eq HsExportSpec-instance Eq HsFieldUpdate-instance Eq HsGuardedAlt-instance Eq HsGuardedAlts-instance Eq HsGuardedRhs-instance Eq HsImportDecl-instance Eq HsImportSpec-instance Eq HsLiteral-instance Eq HsMatch-instance Eq HsName-instance Eq HsOp-instance Eq HsPat-instance Eq HsPatField-instance Eq HsQName-instance Eq HsQOp-instance Eq HsQualType-instance Eq HsRhs-instance Eq HsSpecialCon-instance Eq HsStmt-instance Eq HsType-instance Eq Module-instance Eq SrcLoc-instance Ord HsCName-instance Ord HsName-instance Ord HsOp-instance Ord HsQName-instance Ord HsQOp-instance Ord HsSpecialCon-instance Ord Module-instance Ord SrcLoc-instance Pretty HsAlt-instance Pretty HsAssoc-instance Pretty HsBangType-instance Pretty HsCName-instance Pretty HsConDecl-instance Pretty HsDecl-instance Pretty HsExp-instance Pretty HsExportSpec-instance Pretty HsFieldUpdate-instance Pretty HsGuardedAlt-instance Pretty HsGuardedAlts-instance Pretty HsGuardedRhs-instance Pretty HsImportDecl-instance Pretty HsImportSpec-instance Pretty HsLiteral-instance Pretty HsMatch-instance Pretty HsModule-instance Pretty HsName-instance Pretty HsOp-instance Pretty HsPat-instance Pretty HsPatField-instance Pretty HsQName-instance Pretty HsQOp-instance Pretty HsQualType-instance Pretty HsRhs-instance Pretty HsStmt-instance Pretty HsType-instance Pretty Module-instance Show HsAlt-instance Show HsAssoc-instance Show HsBangType-instance Show HsCName-instance Show HsConDecl-instance Show HsDecl-instance Show HsExp-instance Show HsExportSpec-instance Show HsFieldUpdate-instance Show HsGuardedAlt-instance Show HsGuardedAlts-instance Show HsGuardedRhs-instance Show HsImportDecl-instance Show HsImportSpec-instance Show HsLiteral-instance Show HsMatch-instance Show HsModule-instance Show HsName-instance Show HsOp-instance Show HsPat-instance Show HsPatField-instance Show HsQName-instance Show HsQOp-instance Show HsQualType-instance Show HsRhs-instance Show HsSpecialCon-instance Show HsStmt-instance Show HsType-instance Show Module-instance Show SrcLoc-instance Typeable HsAlt-instance Typeable HsAssoc-instance Typeable HsBangType-instance Typeable HsCName-instance Typeable HsConDecl-instance Typeable HsDecl-instance Typeable HsExp-instance Typeable HsExportSpec-instance Typeable HsFieldUpdate-instance Typeable HsGuardedAlt-instance Typeable HsGuardedAlts-instance Typeable HsGuardedRhs-instance Typeable HsImportDecl-instance Typeable HsImportSpec-instance Typeable HsLiteral-instance Typeable HsMatch-instance Typeable HsModule-instance Typeable HsName-instance Typeable HsOp-instance Typeable HsPat-instance Typeable HsPatField-instance Typeable HsQName-instance Typeable HsQOp-instance Typeable HsQualType-instance Typeable HsRhs-instance Typeable HsSpecialCon-instance Typeable HsStmt-instance Typeable HsType-instance Typeable Module-instance Typeable SrcLoc-list_cons_name :: HsQName-list_tycon :: HsType-list_tycon_name :: HsQName-main_mod :: Module-main_name :: HsName-minus_name :: HsName-newtype Module-pling_name :: HsName-prelude_mod :: Module-qualified_name :: HsName-srcColumn :: SrcLoc -> Int-srcFilename :: SrcLoc -> String-srcLine :: SrcLoc -> Int-tuple_con :: Int -> HsExp-tuple_con_name :: Int -> HsQName-tuple_tycon :: Int -> HsType-tuple_tycon_name :: Int -> HsQName-type HsAsst = (HsQName, [HsType])-type HsContext = [HsAsst]-unit_con :: HsExp-unit_con_name :: HsQName-unit_tycon :: HsType-unit_tycon_name :: HsQName--module Language.Haskell.TH-AppE :: Exp -> Exp -> Exp-AppT :: Type -> Type -> Type-ArithSeqE :: Range -> Exp-ArrowT :: Type-AsP :: Name -> Pat -> Pat-BindS :: Pat -> Exp -> Stmt-CCall :: Callconv-CaseE :: Exp -> [Match] -> Exp-CharL :: Char -> Lit-ClassD :: Cxt -> Name -> [Name] -> [FunDep] -> [Dec] -> Dec-ClassI :: Dec -> Info-ClassOpI :: Name -> Type -> Name -> Fixity -> Info-Clause :: [Pat] -> Body -> [Dec] -> Clause-CompE :: [Stmt] -> Exp-ConE :: Name -> Exp-ConP :: Name -> [Pat] -> Pat-ConT :: Name -> Type-CondE :: Exp -> Exp -> Exp -> Exp-DataConI :: Name -> Type -> Name -> Fixity -> Info-DataD :: Cxt -> Name -> [Name] -> [Con] -> [Name] -> Dec-DoE :: [Stmt] -> Exp-DoublePrimL :: Rational -> Lit-ExportF :: Callconv -> String -> Name -> Type -> Foreign-Fixity :: Int -> FixityDirection -> Fixity-FloatPrimL :: Rational -> Lit-ForallC :: [Name] -> Cxt -> Con -> Con-ForallT :: [Name] -> Cxt -> Type -> Type-ForeignD :: Foreign -> Dec-FromR :: Exp -> Range-FromThenR :: Exp -> Exp -> Range-FromThenToR :: Exp -> Exp -> Exp -> Range-FromToR :: Exp -> Exp -> Range-FunD :: Name -> [Clause] -> Dec-FunDep :: [Name] -> [Name] -> FunDep-GuardedB :: [(Guard,Exp)] -> Body-ImportF :: Callconv -> Safety -> String -> Name -> Type -> Foreign-InfixC :: StrictType -> Name -> StrictType -> Con-InfixE :: (Maybe Exp) -> Exp -> (Maybe Exp) -> Exp-InfixL :: FixityDirection-InfixN :: FixityDirection-InfixP :: Pat -> Name -> Pat -> Pat-InfixR :: FixityDirection-InstanceD :: Cxt -> Type -> [Dec] -> Dec-IntPrimL :: Integer -> Lit-IntegerL :: Integer -> Lit-IsStrict :: Strict-LamE :: [Pat] -> Exp -> Exp-LetE :: [Dec] -> Exp -> Exp-LetS :: [Dec] -> Stmt-ListE :: [Exp] -> Exp-ListP :: [Pat] -> Pat-ListT :: Type-LitE :: Lit -> Exp-LitP :: Lit -> Pat-Match :: Pat -> Body -> [Dec] -> Match-NewtypeD :: Cxt -> Name -> [Name] -> Con -> [Name] -> Dec-NoBindS :: Exp -> Stmt-NormalB :: Exp -> Body-NormalC :: Name -> [StrictType] -> Con-NormalG :: Exp -> Guard-NotStrict :: Strict-ParS :: [[Stmt]] -> Stmt-PatG :: [Stmt] -> Guard-PrimTyConI :: Name -> Int -> Bool -> Info-RationalL :: Rational -> Lit-RecC :: Name -> [VarStrictType] -> Con-RecConE :: Name -> [FieldExp] -> Exp-RecP :: Name -> [FieldPat] -> Pat-RecUpdE :: Exp -> [FieldExp] -> Exp-Safe :: Safety-SigD :: Name -> Type -> Dec-SigE :: Exp -> Type -> Exp-SigP :: Pat -> Type -> Pat-StdCall :: Callconv-StringL :: String -> Lit-Threadsafe :: Safety-TildeP :: Pat -> Pat-TupE :: [Exp] -> Exp-TupP :: [Pat] -> Pat-TupleT :: Int -> Type-TyConI :: Dec -> Info-TySynD :: Name -> [Name] -> Type -> Dec-TyVarI :: Name -> Type -> Info-Unsafe :: Safety-ValD :: Pat -> Body -> [Dec] -> Dec-VarE :: Name -> Exp-VarI :: Name -> Type -> (Maybe Dec) -> Fixity -> Info-VarP :: Name -> Pat-VarT :: Name -> Type-WildP :: Pat-appE :: ExpQ -> ExpQ -> ExpQ-appT :: TypeQ -> TypeQ -> TypeQ-appsE :: [ExpQ] -> ExpQ-arithSeqE :: RangeQ -> ExpQ-arrowT :: TypeQ-asP :: Name -> PatQ -> PatQ-bindS :: PatQ -> ExpQ -> StmtQ-cCall :: Callconv-caseE :: ExpQ -> [MatchQ] -> ExpQ-charL :: Char -> Lit-class Ppr a-classD :: CxtQ -> Name -> [Name] -> [FunDep] -> [DecQ] -> DecQ-clause :: [PatQ] -> BodyQ -> [DecQ] -> ClauseQ-compE :: [StmtQ] -> ExpQ-conE :: Name -> ExpQ-conP :: Name -> [PatQ] -> PatQ-conT :: Name -> TypeQ-condE :: ExpQ -> ExpQ -> ExpQ -> ExpQ-currentModule :: Q String-cxt :: [TypeQ] -> CxtQ-data Body-data Callconv-data Clause-data Con-data Dec-data Exp-data FixityDirection-data Foreign-data FunDep-data Guard-data Info-data Lit-data Match-data Name-data Pat-data Q a-data Range-data Safety-data Stmt-data Strict-data Type-dataD :: CxtQ -> Name -> [Name] -> [ConQ] -> [Name] -> DecQ-defaultFixity :: Fixity-doE :: [StmtQ] -> ExpQ-doublePrimL :: Rational -> Lit-dyn :: String -> Q Exp-fieldExp :: Name -> ExpQ -> Q (Name, Exp)-fieldPat :: Name -> PatQ -> FieldPatQ-floatPrimL :: Rational -> Lit-forImpD :: Callconv -> Safety -> String -> Name -> TypeQ -> DecQ-forallT :: [Name] -> CxtQ -> TypeQ -> TypeQ-fromE :: ExpQ -> ExpQ-fromR :: ExpQ -> RangeQ-fromThenE :: ExpQ -> ExpQ -> ExpQ-fromThenR :: ExpQ -> ExpQ -> RangeQ-fromThenToE :: ExpQ -> ExpQ -> ExpQ -> ExpQ-fromThenToR :: ExpQ -> ExpQ -> ExpQ -> RangeQ-fromToE :: ExpQ -> ExpQ -> ExpQ-fromToR :: ExpQ -> ExpQ -> RangeQ-funD :: Name -> [ClauseQ] -> DecQ-global :: Name -> ExpQ-guardedB :: [Q (Guard, Exp)] -> BodyQ-infixApp :: ExpQ -> ExpQ -> ExpQ -> ExpQ-infixC :: Q (Strict, Type) -> Name -> Q (Strict, Type) -> ConQ-infixE :: Maybe ExpQ -> ExpQ -> Maybe ExpQ -> ExpQ-infixP :: PatQ -> Name -> PatQ -> PatQ-instance Eq Body-instance Eq Callconv-instance Eq Clause-instance Eq Con-instance Eq Dec-instance Eq Exp-instance Eq FixityDirection-instance Eq Foreign-instance Eq FunDep-instance Eq Guard-instance Eq Lit-instance Eq Match-instance Eq Name-instance Eq Pat-instance Eq Range-instance Eq Safety-instance Eq Stmt-instance Eq Strict-instance Eq Type-instance Monad Q-instance Ord Name-instance Ppr Clause-instance Ppr Con-instance Ppr Dec-instance Ppr Exp-instance Ppr Foreign-instance Ppr FunDep-instance Ppr Info-instance Ppr Match-instance Ppr Name-instance Ppr Pat-instance Ppr Range-instance Ppr Stmt-instance Ppr Type-instance Quasi Q-instance Show Body-instance Show Callconv-instance Show Clause-instance Show Con-instance Show Dec-instance Show Exp-instance Show Foreign-instance Show FunDep-instance Show Guard-instance Show Lit-instance Show Match-instance Show Name-instance Show Pat-instance Show Range-instance Show Safety-instance Show Stmt-instance Show Strict-instance Show Type-instanceD :: CxtQ -> TypeQ -> [DecQ] -> DecQ-intPrimL :: Integer -> Lit-integerL :: Integer -> Lit-isStrict :: Q Strict-lam1E :: PatQ -> ExpQ -> ExpQ-lamE :: [PatQ] -> ExpQ -> ExpQ-letE :: [DecQ] -> ExpQ -> ExpQ-letS :: [DecQ] -> StmtQ-listE :: [ExpQ] -> ExpQ-listP :: [PatQ] -> PatQ-listT :: TypeQ-litE :: Lit -> ExpQ-litP :: Lit -> PatQ-match :: PatQ -> BodyQ -> [DecQ] -> MatchQ-maxPrecedence :: Int-mkName :: String -> Name-nameBase :: Name -> String-nameModule :: Name -> Maybe String-newName :: String -> Q Name-newtypeD :: CxtQ -> Name -> [Name] -> ConQ -> [Name] -> DecQ-noBindS :: ExpQ -> StmtQ-normalB :: ExpQ -> BodyQ-normalC :: Name -> [StrictTypeQ] -> ConQ-normalG :: ExpQ -> GuardQ-normalGE :: ExpQ -> ExpQ -> Q (Guard, Exp)-notStrict :: Q Strict-parS :: [[StmtQ]] -> StmtQ-patG :: [StmtQ] -> GuardQ-patGE :: [StmtQ] -> Q (Guard, Exp)-ppr :: Ppr a => a -> Doc-pprExp :: Precedence -> Exp -> Doc-pprLit :: Precedence -> Lit -> Doc-pprParendType :: Type -> Doc-pprPat :: Precedence -> Pat -> Doc-ppr_list :: Ppr a => [a] -> Doc-pprint :: Ppr a => a -> String-rationalL :: Rational -> Lit-recC :: Name -> [VarStrictTypeQ] -> ConQ-recConE :: Name -> [Q (Name, Exp)] -> ExpQ-recP :: Name -> [FieldPatQ] -> PatQ-recUpdE :: ExpQ -> [Q (Name, Exp)] -> ExpQ-recover :: Q a -> Q a -> Q a-reify :: Name -> Q Info-report :: Bool -> String -> Q ()-runIO :: IO a -> Q a-runQ :: Quasi m => Q a -> m a-safe :: Safety-sectionL :: ExpQ -> ExpQ -> ExpQ-sectionR :: ExpQ -> ExpQ -> ExpQ-sigD :: Name -> TypeQ -> DecQ-sigE :: ExpQ -> TypeQ -> ExpQ-sigP :: PatQ -> TypeQ -> PatQ-stdCall :: Callconv-strictType :: Q Strict -> TypeQ -> StrictTypeQ-stringE :: String -> ExpQ-stringL :: String -> Lit-threadsafe :: Safety-tildeP :: PatQ -> PatQ-tupE :: [ExpQ] -> ExpQ-tupP :: [PatQ] -> PatQ-tupleDataName :: Int -> Name-tupleT :: Int -> TypeQ-tupleTypeName :: Int -> Name-tySynD :: Name -> [Name] -> TypeQ -> DecQ-type BodyQ = Q Body-type ClauseQ = Q Clause-type ConQ = Q Con-type Cxt = [Type]-type CxtQ = Q Cxt-type DecQ = Q Dec-type ExpQ = Q Exp-type FieldExp = (Name, Exp)-type FieldPat = (Name, Pat)-type FieldPatQ = Q FieldPat-type GuardQ = Q Guard-type InfoQ = Q Info-type MatchQ = Q Match-type PatQ = Q Pat-type RangeQ = Q Range-type StmtQ = Q Stmt-type StrictTypeQ = Q StrictType-type TypeQ = Q Type-type VarStrictTypeQ = Q VarStrictType-unsafe :: Safety-valD :: PatQ -> BodyQ -> [DecQ] -> DecQ-varE :: Name -> ExpQ-varP :: Name -> PatQ-varStrictType :: Name -> StrictTypeQ -> VarStrictTypeQ-varT :: Name -> TypeQ-wildP :: PatQ--module Language.Haskell.TH.Lib-alpha :: [(Name, Name)] -> Name -> ExpQ-combine :: [([(Name, Name)], Pat)] -> ([(Name, Name)], [Pat])-forallC :: [Name] -> CxtQ -> ConQ -> ConQ-funDep :: [Name] -> [Name] -> FunDep-genpat :: Pat -> Q (Name -> ExpQ, Pat)-rename :: Pat -> Q ([(Name, Name)], Pat)-simpleMatch :: Pat -> Exp -> Match-type FieldExpQ = Q FieldExp--module Language.Haskell.TH.Ppr-appPrec :: Precedence-nestDepth :: Int-noPrec :: Precedence-opPrec :: Precedence-parensIf :: Bool -> Doc -> Doc-pprBody :: Bool -> Body -> Doc-pprCxt :: Cxt -> Doc-pprFields :: [(Name, Exp)] -> Doc-pprFixity :: Name -> Fixity -> Doc-pprMaybeExp :: Precedence -> Maybe Exp -> Doc-pprStrictType :: (Strict, Type) -> Doc-pprTyApp :: (Type, [Type]) -> Doc-pprVarStrictType :: (Name, Strict, Type) -> Doc-showtextl :: Show a => a -> Doc-split :: Type -> (Type, [Type])-type Precedence = Int-where_clause :: [Dec] -> Doc--module Language.Haskell.TH.PprLib-data PprM a-instance Monad PprM-isEmpty :: Doc -> PprM Bool-pprName :: Name -> Doc-to_HPJ_Doc :: Doc -> Doc-type Doc = PprM Doc--module Language.Haskell.TH.Syntax-DataName :: NameSpace-Name :: OccName -> NameFlavour -> Name-NameG :: NameSpace -> ModName -> NameFlavour-NameL :: Int# -> NameFlavour-NameQ :: ModName -> NameFlavour-NameS :: NameFlavour-NameU :: Int# -> NameFlavour-TcClsName :: NameSpace-VarName :: NameSpace-bindQ :: Q a -> (a -> Q b) -> Q b-class Lift t-class Monad m => Quasi m-data NameFlavour-data NameSpace-instance Eq NameFlavour-instance Eq NameSpace-instance Ord NameFlavour-instance Ord NameSpace-lift :: Lift t => t -> Q Exp-mkModName :: String -> ModName-mkNameG_d :: String -> String -> Name-mkNameG_tc :: String -> String -> Name-mkNameG_v :: String -> String -> Name-mkNameL :: String -> Uniq -> Name-mkNameU :: String -> Uniq -> Name-mkOccName :: String -> OccName-modString :: ModName -> String-occString :: OccName -> String-qCurrentModule :: Quasi m => m String-qNewName :: Quasi m => String -> m Name-qRecover :: Quasi m => m a -> m a -> m a-qReify :: Quasi m => Name -> m Info-qReport :: Quasi m => Bool -> String -> m ()-qRunIO :: Quasi m => IO a -> m a-returnQ :: a -> Q a-sequenceQ :: [Q a] -> Q [a]-type ModName = PackedString-type OccName = PackedString-type StrictType = (Strict, Type)-type Uniq = Int-type VarStrictType = (Name, Strict, Type)--module List-(\\) :: Eq a => [a] -> [a] -> [a]-delete :: Eq a => a -> [a] -> [a]-deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]-elemIndex :: Eq => a -> [a] -> Maybe Int-elemIndices :: Eq a => a -> [a] -> [Int]-find :: (a -> Bool) -> [a] -> Maybe a-findIndex :: (a -> Bool) -> [a] -> Maybe Int-findIndices :: (a -> Bool) -> [a] -> [Int]-genericDrop :: Integral a => a -> [b] -> [b]-genericIndex :: Integral a => [b] -> a -> b-genericLength :: Integral a => [b] -> a-genericReplicate :: Integral a => a -> b -> [b]-genericSplitAt :: Integral a => a -> [b] -> ([b],[b])-genericTake :: Integral a => a -> [b] -> [b]-group :: Eq a => [a] -> [[a]]-groupBy :: (a -> a -> Bool) -> [a] -> [[a]]-inits :: [a] -> [[a]]-insert :: Ord a => a -> [a] -> [a]-insertBy :: (a -> a -> Ordering) -> a -> [a] -> [a]-intersect :: Eq a => [a] -> [a] -> [a]-intersectBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]-intersperse :: a -> [a] -> [a]-isPrefixOf :: Eq a => [a] -> [a] -> Bool-isSuffixOf :: Eq a => [a] -> [a] -> Bool-mapAccumL :: (a -> b -> (a,c)) -> a -> [b] -> (a,[c])-mapAccumR :: (a -> b -> (a,c)) -> a -> [b] -> (a,[c])-maximumBy :: (a -> a -> a) -> [a] -> a-minimumBy :: (a -> a -> a) -> [a] -> a-nub :: Eq a => [a] -> [a]-nubBy :: (a -> a -> Bool) -> [a] -> [a]-partition :: (a -> Bool) -> [a] -> ([a],[a])-sort :: Ord a => [a] -> [a]-sortBy :: (a -> a -> Ordering) -> [a] -> [a]-tails :: [a] -> [[a]]-transpose :: [[a]] -> [[a]]-unfoldr :: (a -> Maybe (b,a)) -> a -> [b]-union :: Eq a => [a] -> [a] -> [a]-unionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]-unzip4 :: [(a,b,c,d)] -> ([a],[b],[c],[d])-unzip5 :: [(a,b,c,d,e)] -> ([a],[b],[c],[d],[e])-unzip6 :: [(a,b,c,d,e,f)] -> ([a],[b],[c],[d],[e],[f])-unzip7 :: [(a,b,c,d,e,f,g)] -> ([a],[b],[c],[d],[e],[f],[g])-zip4 :: [a] -> [b] -> [c] -> [d] -> [(a,b,c,d)]-zip5 :: [a] -> [b] -> [c] -> [d] -> [e] -> [(a,b,c,d,e)]-zip6 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [(a,b,c,d,e,f)]-zip7 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [(a,b,c,d,e,f,g)]-zipWith4 :: (a -> b -> c -> d -> e) -> [a] -> [b] -> [c] -> [d] -> [e]-zipWith5 :: (a -> b -> c -> d -> e -> f) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f]-zipWith6 :: (a -> b -> c -> d -> e -> f -> g) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g]-zipWith7 :: (a -> b -> c -> d -> e -> f -> g -> h) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [h]--module Locale-defaultTimeLocale :: TimeLocale--module Maybe-catMaybes :: [Maybe a] -> [a]-fromJust :: Maybe a -> a-fromMaybe :: a -> Maybe a -> a-isJust :: Maybe a -> Bool-isNothing :: Maybe a -> Bool-listToMaybe :: [a] -> Maybe a-mapMaybe :: (a -> Maybe b) -> [a] -> [b]-maybeToList :: Maybe a -> [a]--module Monad-ap :: Monad a => a (b -> c) -> a b -> a c-filterM :: Monad a => (b -> a Bool) -> [b] -> a [b]-foldM :: Monad a => (b -> c -> a b) -> b -> [c] -> a b-guard :: MonadPlus a => Bool -> a ()-join :: Monad a => a (a b) -> a b-liftM :: Monad a => (b -> c) -> a b -> a c-liftM2 :: Monad a => (b -> c -> d) -> a b -> a c -> a d-liftM3 :: Monad a => (b -> c -> d -> e) -> a b -> a c -> a d -> a e-liftM4 :: Monad a => (b -> c -> d -> e -> f) -> a b -> a c -> a d -> a e -> a f-liftM5 :: Monad a => (b -> c -> d -> e -> f -> g) -> a b -> a c -> a d -> a e -> a f -> a g-mapAndUnzipM :: Monad a => (b -> a (c,d)) -> [b] -> a ([c],[d])-msum :: MonadPlus a => [a b] -> a b-unless :: Monad a => Bool -> a () -> a ()-when :: Monad a => Bool -> a () -> a ()-zipWithM :: Monad a => (b -> c -> a d) -> [b] -> [c] -> a [d]-zipWithM_ :: Monad a => (b -> c -> a d) -> [b] -> [c] -> a ()--module Network-PortNumber :: PortNumber -> PortID-Service :: String -> PortID-accept :: Socket -> IO (Handle, HostName, PortNumber)-connectTo :: HostName -> PortID -> IO Handle-data PortID-data PortNumber-data Socket-instance Enum PortNumber-instance Eq PortNumber-instance Eq Socket-instance Integral PortNumber-instance Num PortNumber-instance Ord PortNumber-instance Real PortNumber-instance Show PortNumber-instance Show Socket-instance Storable PortNumber-instance Typeable PortNumber-instance Typeable Socket-listenOn :: PortID -> IO Socket-recvFrom :: HostName -> PortID -> IO String-sClose :: Socket -> IO ()-sendTo :: HostName -> PortID -> String -> IO ()-socketPort :: Socket -> IO PortID-type HostName = String-withSocketsDo :: IO a -> IO a--module Network.BSD-HostEntry :: HostName -> [HostName] -> Family -> [HostAddress] -> HostEntry-NetworkEntry :: NetworkName -> [NetworkName] -> Family -> NetworkAddr -> NetworkEntry-ProtocolEntry :: ProtocolName -> [ProtocolName] -> ProtocolNumber -> ProtocolEntry-ServiceEntry :: ServiceName -> [ServiceName] -> PortNumber -> ProtocolName -> ServiceEntry-data HostEntry-data NetworkEntry-data ProtocolEntry-data ServiceEntry-getHostByAddr :: Family -> HostAddress -> IO HostEntry-getHostByName :: HostName -> IO HostEntry-getHostName :: IO HostName-getProtocolByName :: ProtocolName -> IO ProtocolEntry-getProtocolByNumber :: ProtocolNumber -> IO ProtocolEntry-getProtocolNumber :: ProtocolName -> IO ProtocolNumber-getServiceByName :: ServiceName -> ProtocolName -> IO ServiceEntry-getServiceByPort :: PortNumber -> ProtocolName -> IO ServiceEntry-getServicePortNumber :: ServiceName -> IO PortNumber-hostAddress :: HostEntry -> HostAddress-hostAddresses :: HostEntry -> [HostAddress]-hostAliases :: HostEntry -> [HostName]-hostFamily :: HostEntry -> Family-hostName :: HostEntry -> HostName-instance Read HostEntry-instance Read NetworkEntry-instance Read ProtocolEntry-instance Show HostEntry-instance Show NetworkEntry-instance Show ProtocolEntry-instance Show ServiceEntry-instance Storable HostEntry-instance Storable NetworkEntry-instance Storable ProtocolEntry-instance Storable ServiceEntry-instance Typeable HostEntry-instance Typeable NetworkEntry-instance Typeable ProtocolEntry-instance Typeable ServiceEntry-networkAddress :: NetworkEntry -> NetworkAddr-networkAliases :: NetworkEntry -> [NetworkName]-networkFamily :: NetworkEntry -> Family-networkName :: NetworkEntry -> NetworkName-protoAliases :: ProtocolEntry -> [ProtocolName]-protoName :: ProtocolEntry -> ProtocolName-protoNumber :: ProtocolEntry -> ProtocolNumber-serviceAliases :: ServiceEntry -> [ServiceName]-serviceName :: ServiceEntry -> ServiceName-servicePort :: ServiceEntry -> PortNumber-serviceProtocol :: ServiceEntry -> ProtocolName-type NetworkAddr = CULong-type NetworkName = String-type ProtocolName = String-type ProtocolNumber = CInt-type ServiceName = String--module Network.CGI-Html-connectToCGIScript :: String -> PortID -> IO ()-pwrapper :: PortID -> ([(String, String)] -> IO Html) -> IO ()-wrapper :: ([(String, String)] -> IO Html) -> IO ()--module Network.Socket-AF_APPLETALK :: Family-AF_CCITT :: Family-AF_CHAOS :: Family-AF_DATAKIT :: Family-AF_DECnet :: Family-AF_DLI :: Family-AF_ECMA :: Family-AF_HYLINK :: Family-AF_IMPLINK :: Family-AF_INET :: Family-AF_INET6 :: Family-AF_IPX :: Family-AF_ISO :: Family-AF_LAT :: Family-AF_NETBIOS :: Family-AF_NS :: Family-AF_OSI :: Family-AF_PUP :: Family-AF_SNA :: Family-AF_UNIX :: Family-AF_UNSPEC :: Family-Bound :: SocketStatus-Broadcast :: SocketOption-Connected :: SocketStatus-Datagram :: SocketType-Debug :: SocketOption-DontRoute :: SocketOption-DummySocketOption__ :: SocketOption-KeepAlive :: SocketOption-Linger :: SocketOption-Listening :: SocketStatus-MkSocket :: CInt -> Family -> SocketType -> ProtocolNumber -> (MVar SocketStatus) -> Socket-NoDelay :: SocketOption-NoSocketType :: SocketType-NotConnected :: SocketStatus-OOBInline :: SocketOption-PortNum :: Word16 -> PortNumber-RDM :: SocketType-Raw :: SocketType-RecvBuffer :: SocketOption-RecvLowWater :: SocketOption-RecvTimeOut :: SocketOption-ReuseAddr :: SocketOption-SendBuffer :: SocketOption-SendLowWater :: SocketOption-SendTimeOut :: SocketOption-SeqPacket :: SocketType-ShutdownBoth :: ShutdownCmd-ShutdownReceive :: ShutdownCmd-ShutdownSend :: ShutdownCmd-SoError :: SocketOption-SockAddrInet :: PortNumber -> HostAddress -> SockAddr-Stream :: SocketType-Type :: SocketOption-UseLoopBack :: SocketOption-aNY_PORT :: PortNumber-accept :: Socket -> IO (Socket, SockAddr)-bindSocket :: Socket -> SockAddr -> IO ()-connect :: Socket -> SockAddr -> IO ()-data Family-data ShutdownCmd-data SockAddr-data SocketOption-data SocketStatus-data SocketType-fdSocket :: Socket -> CInt-getPeerName :: Socket -> IO SockAddr-getSocketName :: Socket -> IO SockAddr-getSocketOption :: Socket -> SocketOption -> IO Int-iNADDR_ANY :: HostAddress-inet_addr :: String -> IO HostAddress-inet_ntoa :: HostAddress -> IO String-instance Eq Family-instance Eq SockAddr-instance Eq SocketStatus-instance Eq SocketType-instance Ord Family-instance Ord SocketType-instance Read Family-instance Read SocketType-instance Show Family-instance Show SockAddr-instance Show SocketStatus-instance Show SocketType-instance Typeable ShutdownCmd-instance Typeable SockAddr-instance Typeable SocketOption-instance Typeable SocketStatus-instance Typeable SocketType-listen :: Socket -> Int -> IO ()-maxListenQueue :: Int-mkSocket :: CInt -> Family -> SocketType -> ProtocolNumber -> SocketStatus -> IO Socket-newtype PortNumber-packFamily :: Family -> CInt-packSocketType :: SocketType -> CInt-recv :: Socket -> Int -> IO String-recvBufFrom :: Socket -> Ptr a -> Int -> IO (Int, SockAddr)-recvFrom :: Socket -> Int -> IO (String, Int, SockAddr)-recvLen :: Socket -> Int -> IO (String, Int)-sIsBound :: Socket -> IO Bool-sIsConnected :: Socket -> IO Bool-sIsListening :: Socket -> IO Bool-sIsReadable :: Socket -> IO Bool-sIsWritable :: Socket -> IO Bool-sOL_SOCKET :: Int-sOMAXCONN :: Int-send :: Socket -> String -> IO Int-sendBufTo :: Socket -> Ptr a -> Int -> SockAddr -> IO Int-sendTo :: Socket -> String -> SockAddr -> IO Int-setSocketOption :: Socket -> SocketOption -> Int -> IO ()-shutdown :: Socket -> ShutdownCmd -> IO ()-socket :: Family -> SocketType -> ProtocolNumber -> IO Socket-socketPort :: Socket -> IO PortNumber-socketToHandle :: Socket -> IOMode -> IO Handle-throwSocketErrorIfMinus1_ :: Num a => String -> IO a -> IO ()-type HostAddress = Word32-unpackFamily :: CInt -> Family--module Network.URI-URI :: String -> Maybe URIAuth -> String -> String -> String -> URI-URIAuth :: String -> String -> String -> URIAuth-authority :: URI -> String-data URI-data URIAuth-escapeString :: String -> (Char -> Bool) -> String-escapeURIChar :: (Char -> Bool) -> Char -> String-escapeURIString :: (Char -> Bool) -> String -> String-fragment :: URI -> String-instance Data URI-instance Data URIAuth-instance Eq URI-instance Eq URIAuth-instance Show URI-instance Typeable URI-instance Typeable URIAuth-isAbsoluteURI :: String -> Bool-isAllowedInURI :: Char -> Bool-isIPv4address :: String -> Bool-isIPv6address :: String -> Bool-isRelativeReference :: String -> Bool-isReserved :: Char -> Bool-isURI :: String -> Bool-isURIReference :: String -> Bool-isUnescapedInURI :: Char -> Bool-isUnreserved :: Char -> Bool-nonStrictRelativeTo :: URI -> URI -> Maybe URI-normalizeCase :: String -> String-normalizeEscape :: String -> String-normalizePathSegments :: String -> String-nullURI :: URI-parseRelativeReference :: String -> Maybe URI-parseURI :: String -> Maybe URI-parseURIReference :: String -> Maybe URI-parseabsoluteURI :: String -> Maybe URI-path :: URI -> String-query :: URI -> String-relativeFrom :: URI -> URI -> URI-relativeTo :: URI -> URI -> Maybe URI-reserved :: Char -> Bool-scheme :: URI -> String-unEscapeString :: String -> String-unreserved :: Char -> Bool-uriAuthority :: URI -> Maybe URIAuth-uriFragment :: URI -> String-uriPath :: URI -> String-uriPort :: URIAuth -> String-uriQuery :: URI -> String-uriRegName :: URIAuth -> String-uriScheme :: URI -> String-uriToString :: (String -> String) -> URI -> ShowS-uriUserInfo :: URIAuth -> String--module Numeric-floatToDigits :: RealFloat a => Integer -> a -> ([Int], Int)-floatToDigits :: RealFloat a => Integer -> a -> ([Int],Int)-fromRat :: RealFloat a => Rational -> a-lexDigits :: ReadS String-readDec :: Integral a => ReadS a-readDec :: Num a => ReadS a-readFloat :: RealFloat a => ReadS a-readFloat :: RealFrac a => ReadS a-readHex :: Integral a => ReadS a-readHex :: Num a => ReadS a-readInt :: Integral a => a -> (Char -> Bool) -> (Char -> Int) -> ReadS a-readInt :: Num a => a -> (Char -> Bool) -> (Char -> Int) -> ReadS a-readOct :: Integral a => ReadS a-readOct :: Num a => ReadS a-readSigned :: Real a => ReadS a -> ReadS a-showEFloat :: RealFloat a => Maybe Int -> a -> ShowS-showFFloat :: RealFloat a => Maybe Int -> a -> ShowS-showFloat :: RealFloat a => a -> ShowS-showGFloat :: RealFloat a => Maybe Int -> a -> ShowS-showHex :: Integral a => a -> ShowS-showInt :: Integral a => a -> ShowS-showIntAtBase :: Integral a => a -> (Int -> Char) -> a -> ShowS-showOct :: Integral a => a -> ShowS-showSigned :: Real a => (a -> ShowS) -> Int -> a -> ShowS--module Prelude-(!!) :: [a] -> Int -> a-($!) :: (a -> b) -> a -> b-($) :: (a -> b) -> a -> b-(&&) :: Bool -> Bool -> Bool-(*) :: Num a => a -> a -> a-(**) :: Floating a => a -> a -> a-(+) :: Num a => a -> a -> a-(++) :: [a] -> [a] -> [a]-(-) :: Num a => a -> a -> a-(.) :: (b -> c) -> (a -> b) -> a -> c-(/) :: Fractional a => a -> a -> a-(/=) :: Eq a => a -> a -> Bool-(:) :: a -> [a] -> [a]-(<) :: Ord a => a -> a -> Bool-(<=) :: Ord a => a -> a -> Bool-(=<<) :: Monad m => (a -> m b) -> m a -> m b-(==) :: Eq a => a -> a -> Bool-(>) :: Ord a => a -> a -> Bool-(>=) :: Ord a => a -> a -> Bool-(>>) :: Monad m => m a -> m b -> m b-(>>=) :: Monad m => m a -> (a -> m b) -> m b-(^) :: (Num a, Integral b) => a -> b -> a-(^^) :: (Fractional a, Integral b) => a -> b -> a-(||) :: Bool -> Bool -> Bool-EQ :: Ordering-False :: Bool-GT :: Ordering-Just :: a -> Maybe a-LT :: Ordering-Left :: a -> Either a b-Nothing :: Maybe a-Right :: b -> Either a b-True :: Bool-[] :: [a]-abs :: Num a => a -> a-acos :: Floating a => a -> a-acosh :: Floating a => a -> a-all :: (a -> Bool) -> [a] -> Bool-and :: [Bool] -> Bool-any :: (a -> Bool) -> [a] -> Bool-appendFile :: FilePath -> String -> IO ()-asTypeOf :: a -> a -> a-asin :: Floating a => a -> a-asinh :: Floating a => a -> a-atan :: Floating a => a -> a-atan2 :: RealFloat a => a -> a -> a-atanh :: Floating a => a -> a-break :: (a -> Bool) -> [a] -> ([a], [a])-catch :: IO a -> (IOError -> IO a) -> IO a-ceiling :: (RealFrac a, Integral b) => a -> b-class (Eq a, Show a) => Num a-class (Num a, Ord a) => Real a-class (Real a, Enum a) => Integral a-class (Real a, Fractional a) => RealFrac a-class (RealFrac a, Floating a) => RealFloat a-class Bounded a-class Enum a-class Eq a-class Eq a => Ord a-class Fractional a => Floating a-class Functor f-class Monad m-class Num a => Fractional a-class Read a-class Show a-compare :: Ord a => a -> a -> Ordering-concat :: [[a]] -> [a]-concatMap :: (a -> [b]) -> [a] -> [b]-const :: a -> b -> a-cos :: Floating a => a -> a-cosh :: Floating a => a -> a-curry :: ((a, b) -> c) -> a -> b -> c-cycle :: [a] -> [a]-data Bool-data Char-data Double-data Either a b-data Float-data IO a-data Int-data Integer-data Maybe a-data Ordering-data []-decodeFloat :: RealFloat a => a -> (Integer,Int)-div :: Integral a => a -> a -> a-divMod :: Integral a => a -> a -> (a,a)-drop :: Int -> [a] -> [a]-dropWhile :: (a -> Bool) -> [a] -> [a]-either :: (a -> c) -> (b -> c) -> Either a b -> c-elem :: Eq a => a -> [a] -> Bool-encodeFloat :: RealFloat a => Integer -> Int -> a-enumFrom :: Enum a => a -> [a]-enumFromThen :: Enum a => a -> a -> [a]-enumFromThenTo :: Enum a => a -> a -> a -> [a]-enumFromTo :: Enum a => a -> a -> [a]-error :: String -> a-even :: Integral a => a -> Bool-exp :: Floating a => a -> a-exponent :: RealFloat a => a -> Int-fail :: Monad m => String -> m a-filter :: (a -> Bool) -> [a] -> [a]-flip :: (a -> b -> c) -> b -> a -> c-floatDigits :: RealFloat a => a -> Int-floatRadix :: RealFloat a => a -> Integer-floatRange :: RealFloat a => a -> (Int,Int)-floor :: (RealFrac a, Integral b) => a -> b-fmap :: Functor f => (a -> b) -> f a -> f b-foldl :: (a -> b -> a) -> a -> [b] -> a-foldl1 :: (a -> a -> a) -> [a] -> a-foldr :: (a -> b -> b) -> b -> [a] -> b-foldr1 :: (a -> a -> a) -> [a] -> a-fromEnum :: Enum a => a -> Int-fromInteger :: Num a => Integer -> a-fromIntegral :: (Integral a, Num b) => a -> b-fromRational :: Fractional a => Rational -> a-fst :: (a, b) -> a-gcd :: Integral a => a -> a -> a-getChar :: IO Char-getContents :: IO String-getLine :: IO String-head :: [a] -> a-id :: a -> a-init :: [a] -> [a]-instance (Data a, Data b) => Data (Either a b)-instance (Eq a, Eq b) => Eq (Either a b)-instance (Ix ix, Show ix) => Show (DiffUArray ix Char)-instance (Ix ix, Show ix) => Show (DiffUArray ix Double)-instance (Ix ix, Show ix) => Show (DiffUArray ix Float)-instance (Ix ix, Show ix) => Show (DiffUArray ix Int)-instance (Ix ix, Show ix) => Show (UArray ix Bool)-instance (Ix ix, Show ix) => Show (UArray ix Char)-instance (Ix ix, Show ix) => Show (UArray ix Double)-instance (Ix ix, Show ix) => Show (UArray ix Float)-instance (Ix ix, Show ix) => Show (UArray ix Int)-instance (Ord a, Ord b) => Ord (Either a b)-instance (Read a, Read b) => Read (Either a b)-instance (Show a, Show b) => Show (Either a b)-instance Bits Int-instance Bits Integer-instance Bounded Bool-instance Bounded Char-instance Bounded Int-instance Bounded Ordering-instance Data Bool-instance Data Char-instance Data Double-instance Data Float-instance Data Int-instance Data Integer-instance Data Ordering-instance Data a => Data (Maybe a)-instance Enum Bool-instance Enum Char-instance Enum Double-instance Enum Float-instance Enum Int-instance Enum Integer-instance Enum Ordering-instance Eq Bool-instance Eq Char-instance Eq Double-instance Eq Float-instance Eq Int-instance Eq Integer-instance Eq Ordering-instance Eq a => Eq (Maybe a)-instance Floating Double-instance Floating Float-instance Fractional Double-instance Fractional Float-instance Functor IO-instance Functor Maybe-instance FunctorM Maybe-instance HPrintfType (IO a)-instance HTML Char-instance IArray (IOToDiffArray IOUArray) Char-instance IArray (IOToDiffArray IOUArray) Double-instance IArray (IOToDiffArray IOUArray) Float-instance IArray (IOToDiffArray IOUArray) Int-instance IArray UArray Bool-instance IArray UArray Char-instance IArray UArray Double-instance IArray UArray Float-instance IArray UArray Int-instance Integral Int-instance Integral Integer-instance IsChar Char-instance Ix Bool-instance Ix Char-instance Ix Int-instance Ix Integer-instance Ix Ordering-instance Ix ix => Eq (UArray ix Bool)-instance Ix ix => Eq (UArray ix Char)-instance Ix ix => Eq (UArray ix Double)-instance Ix ix => Eq (UArray ix Float)-instance Ix ix => Eq (UArray ix Int)-instance Ix ix => Ord (UArray ix Bool)-instance Ix ix => Ord (UArray ix Char)-instance Ix ix => Ord (UArray ix Double)-instance Ix ix => Ord (UArray ix Float)-instance Ix ix => Ord (UArray ix Int)-instance MArray (STUArray s) Bool (ST s)-instance MArray (STUArray s) Char (ST s)-instance MArray (STUArray s) Double (ST s)-instance MArray (STUArray s) Float (ST s)-instance MArray (STUArray s) Int (ST s)-instance MArray IOArray e IO-instance MArray IOUArray (FunPtr a) IO-instance MArray IOUArray (Ptr a) IO-instance MArray IOUArray (StablePtr a) IO-instance MArray IOUArray Bool IO-instance MArray IOUArray Char IO-instance MArray IOUArray Double IO-instance MArray IOUArray Float IO-instance MArray IOUArray Int IO-instance MArray IOUArray Int16 IO-instance MArray IOUArray Int32 IO-instance MArray IOUArray Int64 IO-instance MArray IOUArray Int8 IO-instance MArray IOUArray Word IO-instance MArray IOUArray Word16 IO-instance MArray IOUArray Word32 IO-instance MArray IOUArray Word64 IO-instance MArray IOUArray Word8 IO-instance Monad IO-instance Monad Maybe-instance MonadFix IO-instance MonadFix Maybe-instance MonadPlus Maybe-instance Monoid Ordering-instance NFData Bool-instance NFData Char-instance NFData Double-instance NFData Float-instance NFData Int-instance NFData Integer-instance NFDataIntegral Int-instance NFDataOrd Int-instance Num Double-instance Num Float-instance Num Int-instance Num Integer-instance Ord Bool-instance Ord Char-instance Ord Double-instance Ord Float-instance Ord Int-instance Ord Integer-instance Ord Ordering-instance Ord a => Ord (Maybe a)-instance PrintfArg Char-instance PrintfArg Double-instance PrintfArg Float-instance PrintfArg Int-instance PrintfArg Integer-instance PrintfType (IO a)-instance Random Bool-instance Random Char-instance Random Double-instance Random Float-instance Random Int-instance Random Integer-instance Read Bool-instance Read Char-instance Read Double-instance Read Float-instance Read Int-instance Read Integer-instance Read Ordering-instance Read a => Read (Maybe a)-instance Real Double-instance Real Float-instance Real Int-instance Real Integer-instance RealFloat Double-instance RealFloat Float-instance RealFrac Double-instance RealFrac Float-instance Show Bool-instance Show Char-instance Show Double-instance Show Float-instance Show Int-instance Show Integer-instance Show Ordering-instance Show a => Show (Maybe a)-instance Storable Bool-instance Storable Char-instance Storable Double-instance Storable Float-instance Storable Int-instance Storable e => MArray StorableArray e IO-instance Typeable Bool-instance Typeable Char-instance Typeable Double-instance Typeable Float-instance Typeable Int-instance Typeable Integer-instance Typeable Ordering-instance Typeable a => Data (IO a)-instance Typeable1 IO-instance Typeable1 Maybe-instance Typeable2 Either-interact :: (String -> String) -> IO ()-ioError :: IOError -> IO a-isDenormalized :: RealFloat a => a -> Bool-isIEEE :: RealFloat a => a -> Bool-isInfinite :: RealFloat a => a -> Bool-isNaN :: RealFloat a => a -> Bool-isNegativeZero :: RealFloat a => a -> Bool-iterate :: (a -> a) -> a -> [a]-keyword !-keyword ->-keyword ::-keyword <--keyword @-keyword _-keyword as-keyword case-keyword class-keyword data-keyword default-keyword deriving-keyword do-keyword else-keyword forall-keyword hiding-keyword if-keyword import-keyword in-keyword infix-keyword infixl-keyword infixr-keyword instance-keyword let-keyword module-keyword newtype-keyword of-keyword qualified-keyword then-keyword type-keyword where-keyword |-keyword ~-last :: [a] -> a-lcm :: Integral a => a -> a -> a-length :: [a] -> Int-lex :: ReadS String-lines :: String -> [String]-log :: Floating a => a -> a-logBase :: Floating a => a -> a -> a-lookup :: Eq a => a -> [(a, b)] -> Maybe b-map :: (a -> b) -> [a] -> [b]-mapM :: Monad m => (a -> m b) -> [a] -> m [b]-mapM_ :: Monad m => (a -> m b) -> [a] -> m ()-max :: Ord a => a -> a -> a-maxBound :: Bounded a => a-maximum :: Ord a => [a] -> a-maybe :: b -> (a -> b) -> Maybe a -> b-min :: Ord a => a -> a -> a-minBound :: Bounded a => a-minimum :: Ord a => [a] -> a-mod :: Integral a => a -> a -> a-negate :: Num a => a -> a-not :: Bool -> Bool-notElem :: Eq a => a -> [a] -> Bool-null :: [a] -> Bool-odd :: Integral a => a -> Bool-or :: [Bool] -> Bool-otherwise :: Bool-pi :: Floating a => a-pred :: Enum a => a -> a-print :: Show a => a -> IO ()-product :: Num a => [a] -> a-properFraction :: (RealFrac a, Integral b) => a -> (b,a)-putChar :: Char -> IO ()-putStr :: String -> IO ()-putStrLn :: String -> IO ()-quot :: Integral a => a -> a -> a-quotRem :: Integral a => a -> a -> (a,a)-read :: Read a => String -> a-readFile :: FilePath -> IO String-readIO :: Read a => String -> IO a-readList :: Read a => ReadS [a]-readLn :: Read a => IO a-readParen :: Bool -> ReadS a -> ReadS a-reads :: Read a => ReadS a-readsPrec :: Read a => Int -> ReadS a-realToFrac :: (Real a, Fractional b) => a -> b-recip :: Fractional a => a -> a-rem :: Integral a => a -> a -> a-repeat :: a -> [a]-replicate :: Int -> a -> [a]-return :: Monad m => a -> m a-reverse :: [a] -> [a]-round :: (RealFrac a, Integral b) => a -> b-scaleFloat :: RealFloat a => Int -> a -> a-scanl :: (a -> b -> a) -> a -> [b] -> [a]-scanl1 :: (a -> a -> a) -> [a] -> [a]-scanr :: (a -> b -> b) -> b -> [a] -> [b]-scanr1 :: (a -> a -> a) -> [a] -> [a]-seq :: a -> b -> b-sequence :: Monad m => [m a] -> m [a]-sequence_ :: Monad m => [m a] -> m ()-show :: Show a => a -> String-showChar :: Char -> ShowS-showList :: Show a => [a] -> ShowS-showParen :: Bool -> ShowS -> ShowS-showString :: String -> ShowS-shows :: Show a => a -> ShowS-showsPrec :: Show a => Int -> a -> ShowS-significand :: RealFloat a => a -> a-signum :: Num a => a -> a-sin :: Floating a => a -> a-sinh :: Floating a => a -> a-snd :: (a, b) -> b-span :: (a -> Bool) -> [a] -> ([a], [a])-splitAt :: Int -> [a] -> ([a], [a])-sqrt :: Floating a => a -> a-subtract :: Num a => a -> a -> a-succ :: Enum a => a -> a-sum :: Num a => [a] -> a-tail :: [a] -> [a]-take :: Int -> [a] -> [a]-takeWhile :: (a -> Bool) -> [a] -> [a]-tan :: Floating a => a -> a-tanh :: Floating a => a -> a-toEnum :: Enum a => Int -> a-toInteger :: Integral a => a -> Integer-toRational :: Real a => a -> Rational-truncate :: (RealFrac a, Integral b) => a -> b-type FilePath = String-type IOError = IOException-type Rational = Ratio Integer-type ReadS a = String -> [(a, String)]-type ShowS = String -> String-type String = [Char]-uncurry :: (a -> b -> c) -> (a, b) -> c-undefined :: a-unlines :: [String] -> String-until :: (a -> Bool) -> (a -> a) -> a -> a-unwords :: [String] -> String-unzip :: [(a, b)] -> ([a], [b])-unzip3 :: [(a, b, c)] -> ([a], [b], [c])-userError :: String -> IOError-words :: String -> [String]-writeFile :: FilePath -> String -> IO ()-zip :: [a] -> [b] -> [(a, b)]-zip3 :: [a] -> [b] -> [c] -> [(a, b, c)]-zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]-zipWith3 :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]--module Random-getStdGen :: IO StdGen-getStdRandom :: (StdGen -> (a, StdGen)) -> IO a-mkStdGen :: Int -> StdGen-newStdGen :: IO StdGen-next :: RandomGen a => a -> (Int,a)-random :: (Random a, RandomGen b) => b -> (a,b)-randomIO :: Random a => IO a-randomR :: (Random a, RandomGen b) => (a,a) -> b -> (a,b)-randomRIO :: Random a => (a,a) -> IO a-randomRs :: (Random a, RandomGen b) => (a,a) -> b -> [a]-randoms :: (Random a, RandomGen b) => b -> [a]-setStdGen :: StdGen -> IO ()-split :: RandomGen a => a -> (a,a)--module Ratio-(%) :: Integral a => a -> a -> Ratio a-approxRational :: RealFrac a => a -> a -> Rational-denominator :: Integral a => Ratio a -> a-numerator :: Integral a => Ratio a -> a--module System-exitFailure :: IO a-exitWith :: ExitCode -> IO a-getArgs :: IO [String]-getEnv :: String -> IO String-getProgName :: IO String-system :: String -> IO ExitCode--module System.Cmd-rawSystem :: String -> [String] -> IO ExitCode--module System.Console.Readline-Function :: Callback -> Entry-Keymap :: Keymap -> Entry-Macro :: String -> Entry-UndoBegin :: UndoCode-UndoDelete :: UndoCode-UndoEnd :: UndoCode-UndoInsert :: UndoCode-addDefun :: String -> Callback -> Maybe Char -> IO ()-addHistory :: String -> IO ()-addUndo :: UndoCode -> Int -> Int -> String -> IO ()-beginUndoGroup :: IO ()-bindKey :: Char -> Callback -> IO ()-bindKeyInMap :: Char -> Callback -> Keymap -> IO ()-callbackHandlerInstall :: String -> (String -> IO ()) -> IO (IO ())-callbackReadChar :: IO ()-clearMessage :: IO ()-clearSignals :: IO ()-complete :: Int -> Char -> IO Int-completeInternal :: Char -> IO ()-completionMatches :: String -> (String -> IO [String]) -> IO (Maybe (String, [String]))-copyKeymap :: Keymap -> IO Keymap-copyText :: Int -> Int -> IO String-data Entry-data Keymap-data UndoCode-deleteText :: Int -> Int -> IO ()-ding :: IO Bool-doUndo :: IO Bool-endUndoGroup :: IO ()-filenameCompletionFunction :: String -> IO [String]-forcedUpdateDisplay :: IO ()-freeKeymap :: Keymap -> IO ()-freeUndoList :: IO ()-functionDumper :: Bool -> IO ()-functionOfKeyseq :: String -> Maybe Keymap -> IO Entry-genericBind :: String -> Entry -> Keymap -> IO ()-getBasicQuoteCharacters :: IO String-getBasicWordBreakCharacters :: IO String-getBindingKeymap :: IO Keymap-getCompleterQuoteCharacters :: IO String-getCompleterWordBreakCharacters :: IO String-getCompletionAppendCharacter :: IO (Maybe Char)-getCompletionQueryItems :: IO Int-getEnd :: IO Int-getExecutingKeymap :: IO Keymap-getFilenameCompletionDesired :: IO Bool-getFilenameQuoteCharacters :: IO String-getFilenameQuotingDesired :: IO Bool-getIgnoreCompletionDuplicates :: IO Bool-getInStream :: IO Handle-getInhibitCompletion :: IO Bool-getKeymap :: IO Keymap-getKeymapByName :: String -> IO Keymap-getKeymapName :: Keymap -> IO (Maybe String)-getLibraryVersion :: IO String-getLineBuffer :: IO String-getMark :: IO Int-getOutStream :: IO Handle-getPoint :: IO Int-getPrompt :: IO String-getSpecialPrefixes :: IO String-getTerminalName :: IO String-initialize :: IO ()-insertCompletions :: Int -> Char -> IO Int-insertText :: String -> IO ()-killText :: Int -> Int -> IO ()-listFunmapNames :: IO ()-message :: String -> IO ()-modifying :: Int -> Int -> IO ()-namedFunction :: String -> IO (Maybe Callback)-newBareKeymap :: IO Keymap-newKeymap :: IO Keymap-onNewLine :: IO ()-parseAndBind :: String -> IO ()-possibleCompletions :: Int -> Char -> IO Int-quoteFilename :: String -> Bool -> Ptr CChar -> IO String-readInitFile :: String -> IO ()-readKey :: IO Char-readline :: String -> IO (Maybe String)-redisplay :: IO ()-resetLineState :: IO ()-resetTerminal :: Maybe String -> IO ()-setAttemptedCompletionFunction :: Maybe (String -> Int -> Int -> IO (Maybe (String, [String]))) -> IO ()-setBasicQuoteCharacters :: String -> IO ()-setBasicWordBreakCharacters :: String -> IO ()-setCharIsQuotedP :: Maybe (String -> Int -> IO Bool) -> IO ()-setCompleterQuoteCharacters :: String -> IO ()-setCompleterWordBreakCharacters :: String -> IO ()-setCompletionAppendCharacter :: Maybe Char -> IO ()-setCompletionEntryFunction :: Maybe (String -> IO [String]) -> IO ()-setCompletionQueryItems :: Int -> IO ()-setDirectoryCompletionHook :: Maybe (String -> IO String) -> IO ()-setDone :: Bool -> IO ()-setEnd :: Int -> IO ()-setEventHook :: Maybe (IO ()) -> IO ()-setFilenameCompletionDesired :: Bool -> IO ()-setFilenameDequotingFunction :: Maybe (String -> Maybe Char -> IO String) -> IO ()-setFilenameQuoteCharacters :: String -> IO ()-setFilenameQuotingDesired :: Bool -> IO ()-setFilenameQuotingFunction :: Maybe (String -> Bool -> Ptr CChar -> IO String) -> IO ()-setIgnoreCompletionDuplicates :: Bool -> IO ()-setIgnoreSomeCompletionsFunction :: Maybe ([String] -> IO [String]) -> IO ()-setInhibitCompletion :: Bool -> IO ()-setKeymap :: Keymap -> IO ()-setMark :: Int -> IO ()-setPendingInput :: Char -> IO ()-setPoint :: Int -> IO ()-setReadlineName :: String -> IO ()-setRedisplayFunction :: Maybe (IO ()) -> IO ()-setSignals :: IO ()-setSpecialPrefixes :: String -> IO ()-setStartupHook :: Maybe (IO ()) -> IO ()-stuffChar :: Char -> IO Bool-type Callback = Int -> Char -> IO Int-unbindCommandInMap :: String -> Keymap -> IO ()-unbindKey :: Char -> IO ()-unbindKeyInMap :: Char -> Keymap -> IO ()-usernameCompletionFunction :: String -> IO [String]--module System.Console.SimpleLineEditor-delChars :: String -> IO ()-getLineEdited :: String -> IO (Maybe String)-initialise :: IO ()-restore :: IO ()--module System.Directory-Permissions :: Bool -> Bool -> Bool -> Bool -> Permissions-canonicalizePath :: FilePath -> IO FilePath-copyFile :: FilePath -> FilePath -> IO ()-createDirectoryIfMissing :: Bool -> FilePath -> IO ()-data Permissions-findExecutable :: String -> IO (Maybe FilePath)-getAppUserDataDirectory :: String -> IO FilePath-getHomeDirectory :: IO FilePath-getTemporaryDirectory :: IO FilePath-getUserDocumentsDirectory :: IO FilePath-instance Eq Permissions-instance Ord Permissions-instance Read Permissions-instance Show Permissions-removeDirectoryRecursive :: FilePath -> IO ()--module System.Environment-getEnvironment :: IO [(String, String)]-withArgs :: [String] -> IO a -> IO a-withProgName :: String -> IO a -> IO a--module System.Exit-ExitFailure :: Int -> ExitCode-ExitSuccess :: ExitCode-data ExitCode-instance Eq ExitCode-instance Ord ExitCode-instance Read ExitCode-instance Show ExitCode--module System.IO-AbsoluteSeek :: SeekMode-AppendMode :: IOMode-BlockBuffering :: (Maybe Int) -> BufferMode-LineBuffering :: BufferMode-NoBuffering :: BufferMode-ReadMode :: IOMode-ReadWriteMode :: IOMode-RelativeSeek :: SeekMode-SeekFromEnd :: SeekMode-WriteMode :: IOMode-data BufferMode-data Handle-data HandlePosn-data IOMode-data SeekMode-fixIO :: (a -> IO a) -> IO a-hGetBuf :: Handle -> Ptr a -> Int -> IO Int-hGetBufNonBlocking :: Handle -> Ptr a -> Int -> IO Int-hGetEcho :: Handle -> IO Bool-hIsTerminalDevice :: Handle -> IO Bool-hPutBuf :: Handle -> Ptr a -> Int -> IO ()-hPutBufNonBlocking :: Handle -> Ptr a -> Int -> IO Int-hSetBinaryMode :: Handle -> Bool -> IO ()-hSetEcho :: Handle -> Bool -> IO ()-hSetFileSize :: Handle -> Integer -> IO ()-hShow :: Handle -> IO String-hTell :: Handle -> IO Integer-instance Data Handle-instance Enum IOMode-instance Enum SeekMode-instance Eq BufferMode-instance Eq Handle-instance Eq HandlePosn-instance Eq IOMode-instance Eq SeekMode-instance Ix IOMode-instance Ix SeekMode-instance Ord BufferMode-instance Ord IOMode-instance Ord SeekMode-instance Read BufferMode-instance Read IOMode-instance Read SeekMode-instance Show BufferMode-instance Show Handle-instance Show HandlePosn-instance Show IOMode-instance Show SeekMode-instance Typeable Handle-openBinaryFile :: FilePath -> IOMode -> IO Handle-openBinaryTempFile :: FilePath -> String -> IO (FilePath, Handle)-openTempFile :: FilePath -> String -> IO (FilePath, Handle)--module System.IO.Error-alreadyExistsErrorType :: IOErrorType-alreadyInUseErrorType :: IOErrorType-annotateIOError :: IOError -> String -> Maybe Handle -> Maybe FilePath -> IOError-data IOErrorType-doesNotExistErrorType :: IOErrorType-eofErrorType :: IOErrorType-fullErrorType :: IOErrorType-illegalOperationErrorType :: IOErrorType-instance Eq IOErrorType-instance Show IOErrorType-ioeGetErrorType :: IOError -> IOErrorType-ioeSetErrorString :: IOError -> String -> IOError-ioeSetErrorType :: IOError -> IOErrorType -> IOError-ioeSetFileName :: IOError -> FilePath -> IOError-ioeSetHandle :: IOError -> Handle -> IOError-isAlreadyExistsErrorType :: IOErrorType -> Bool-isAlreadyInUseErrorType :: IOErrorType -> Bool-isDoesNotExistErrorType :: IOErrorType -> Bool-isEOFErrorType :: IOErrorType -> Bool-isFullErrorType :: IOErrorType -> Bool-isIllegalOperationErrorType :: IOErrorType -> Bool-isPermissionErrorType :: IOErrorType -> Bool-isUserErrorType :: IOErrorType -> Bool-mkIOError :: IOErrorType -> String -> Maybe Handle -> Maybe FilePath -> IOError-modifyIOError :: (IOError -> IOError) -> IO a -> IO a-permissionErrorType :: IOErrorType-userErrorType :: IOErrorType--module System.IO.Unsafe-unsafeInterleaveIO :: IO a -> IO a--module System.Info-arch :: String-compilerName :: String-compilerVersion :: Version-os :: String--module System.Locale-TimeLocale :: [(String,String)] -> [(String,String)] -> [(String,String)] -> String,String -> String -> String -> String -> String -> TimeLocale-amPm :: TimeLocale -> String,String-data TimeLocale-dateFmt :: TimeLocale -> String-dateTimeFmt :: TimeLocale -> String-instance Eq TimeLocale-instance Ord TimeLocale-instance Show TimeLocale-intervals :: TimeLocale -> [(String,String)]-iso8601DateFormat :: Maybe String -> String-months :: TimeLocale -> [(String,String)]-rfc822DateFormat :: String-time12Fmt :: TimeLocale -> String-timeFmt :: TimeLocale -> String-wDays :: TimeLocale -> [(String,String)]--module System.Mem-performGC :: IO ()--module System.Mem.StableName-data StableName a-hashStableName :: StableName a -> Int-instance Eq (StableName a)-instance Typeable1 StableName-makeStableName :: a -> IO (StableName a)--module System.Mem.Weak-addFinalizer :: key -> IO () -> IO ()-data Weak v-deRefWeak :: Weak v -> IO (Maybe v)-finalize :: Weak v -> IO ()-instance Typeable1 Weak-mkWeak :: k -> v -> Maybe (IO ()) -> IO (Weak v)-mkWeakPair :: k -> v -> Maybe (IO ()) -> IO (Weak (k, v))-mkWeakPtr :: k -> Maybe (IO ()) -> IO (Weak k)--module System.Posix.Types-Fd :: CInt -> Fd-data CDev-data CIno-data CMode-data COff-data CPid-data CSsize-instance Bits CIno-instance Bits CMode-instance Bits COff-instance Bits CPid-instance Bits CSsize-instance Bits Fd-instance Bounded CIno-instance Bounded CMode-instance Bounded COff-instance Bounded CPid-instance Bounded CSsize-instance Bounded Fd-instance Enum CDev-instance Enum CIno-instance Enum CMode-instance Enum COff-instance Enum CPid-instance Enum CSsize-instance Enum Fd-instance Eq CDev-instance Eq CIno-instance Eq CMode-instance Eq COff-instance Eq CPid-instance Eq CSsize-instance Eq Fd-instance Integral CIno-instance Integral CMode-instance Integral COff-instance Integral CPid-instance Integral CSsize-instance Integral Fd-instance Num CDev-instance Num CIno-instance Num CMode-instance Num COff-instance Num CPid-instance Num CSsize-instance Num Fd-instance Ord CDev-instance Ord CIno-instance Ord CMode-instance Ord COff-instance Ord CPid-instance Ord CSsize-instance Ord Fd-instance Read CDev-instance Read CIno-instance Read CMode-instance Read COff-instance Read CPid-instance Read CSsize-instance Read Fd-instance Real CDev-instance Real CIno-instance Real CMode-instance Real COff-instance Real CPid-instance Real CSsize-instance Real Fd-instance Show CDev-instance Show CIno-instance Show CMode-instance Show COff-instance Show CPid-instance Show CSsize-instance Show Fd-instance Storable CDev-instance Storable CIno-instance Storable CMode-instance Storable COff-instance Storable CPid-instance Storable CSsize-instance Storable Fd-instance Typeable CDev-instance Typeable CIno-instance Typeable CMode-instance Typeable COff-instance Typeable CPid-instance Typeable CSsize-instance Typeable Fd-newtype Fd-type ByteCount = CSize-type ClockTick = CClock-type DeviceID = CDev-type EpochTime = CTime-type FileID = CIno-type FileMode = CMode-type FileOffset = COff-type Limit = CLong-type ProcessGroupID = CPid-type ProcessID = CPid--module System.Process-data ProcessHandle-getProcessExitCode :: ProcessHandle -> IO (Maybe ExitCode)-runCommand :: String -> IO ProcessHandle-runInteractiveCommand :: String -> IO (Handle, Handle, Handle, ProcessHandle)-runInteractiveProcess :: FilePath -> [String] -> Maybe FilePath -> Maybe [(String, String)] -> IO (Handle, Handle, Handle, ProcessHandle)-runProcess :: FilePath -> [String] -> Maybe FilePath -> Maybe [(String, String)] -> Maybe Handle -> Maybe Handle -> Maybe Handle -> IO ProcessHandle-terminateProcess :: ProcessHandle -> IO ()-waitForProcess :: ProcessHandle -> IO ExitCode--module System.Random-class Random a-class RandomGen g-data StdGen-genRange :: RandomGen g => g -> (Int,Int)-instance RandomGen StdGen-instance Read StdGen-instance Show StdGen-next :: RandomGen g => g -> (Int,g)-random :: (Random a, RandomGen g) => g -> (a,g)-randomR :: (Random a, RandomGen g) => (a,a) -> g -> (a,g)-randomRs :: (Random a, RandomGen g) => (a,a) -> g -> [a]-randoms :: (Random a, RandomGen g) => g -> [a]-split :: RandomGen g => g -> (g,g)--module System.Time-April :: Month-August :: Month-CalendarTime :: Int -> Month -> Int -> Int -> Int -> Int -> Integer -> Day -> Int -> String -> Int -> Bool -> CalendarTime-December :: Month-February :: Month-Friday :: Day-January :: Month-July :: Month-June :: Month-March :: Month-May :: Month-Monday :: Day-November :: Month-October :: Month-Saturday :: Day-September :: Month-Sunday :: Day-TOD :: Integer -> Integer -> ClockTime-Thursday :: Day-TimeDiff :: Int -> Int -> Int -> Int -> Int -> Int -> Integer -> TimeDiff-Tuesday :: Day-Wednesday :: Day-ctDay :: CalendarTime -> Int-ctHour :: CalendarTime -> Int-ctIsDST :: CalendarTime -> Bool-ctMin :: CalendarTime -> Int-ctMonth :: CalendarTime -> Month-ctPicosec :: CalendarTime -> Integer-ctSec :: CalendarTime -> Int-ctTZ :: CalendarTime -> Int-ctTZName :: CalendarTime -> String-ctWDay :: CalendarTime -> Day-ctYDay :: CalendarTime -> Int-ctYear :: CalendarTime -> Int-data CalendarTime-data ClockTime-data Day-data Month-data TimeDiff-formatTimeDiff :: TimeLocale -> String -> TimeDiff -> String-instance Bounded Day-instance Bounded Month-instance Enum Day-instance Enum Month-instance Eq CalendarTime-instance Eq ClockTime-instance Eq Day-instance Eq Month-instance Eq TimeDiff-instance Ix Day-instance Ix Month-instance Ord CalendarTime-instance Ord ClockTime-instance Ord Day-instance Ord Month-instance Ord TimeDiff-instance Read CalendarTime-instance Read Day-instance Read Month-instance Read TimeDiff-instance Show CalendarTime-instance Show ClockTime-instance Show Day-instance Show Month-instance Show TimeDiff-noTimeDiff :: TimeDiff-normalizeTimeDiff :: TimeDiff -> TimeDiff-tdDay :: TimeDiff -> Int-tdHour :: TimeDiff -> Int-tdMin :: TimeDiff -> Int-tdMonth :: TimeDiff -> Int-tdPicosec :: TimeDiff -> Integer-tdSec :: TimeDiff -> Int-tdYear :: TimeDiff -> Int-timeDiffToString :: TimeDiff -> String--module System.Win32.DLL-c_DisableThreadLibraryCalls :: HMODULE -> IO Bool-c_FreeLibrary :: HMODULE -> IO Bool-c_GetModuleFileName :: HMODULE -> LPTSTR -> Int -> IO Bool-c_GetModuleHandle :: LPCTSTR -> IO HMODULE-c_GetProcAddress :: HMODULE -> LPCSTR -> IO Addr-c_LoadLibrary :: LPCTSTR -> IO HINSTANCE-c_LoadLibraryEx :: LPCTSTR -> HANDLE -> LoadLibraryFlags -> IO HINSTANCE-disableThreadLibraryCalls :: HMODULE -> IO ()-freeLibrary :: HMODULE -> IO ()-getModuleFileName :: HMODULE -> IO String-getModuleHandle :: Maybe String -> IO HMODULE-getProcAddress :: HMODULE -> String -> IO Addr-lOAD_LIBRARY_AS_DATAFILE :: LoadLibraryFlags-lOAD_WITH_ALTERED_SEARCH_PATH :: LoadLibraryFlags-loadLibrary :: String -> IO HINSTANCE-loadLibraryEx :: String -> HANDLE -> LoadLibraryFlags -> IO HINSTANCE-type LoadLibraryFlags = DWORD--module System.Win32.File-aCCESS_SYSTEM_SECURITY :: AccessMode-areFileApisANSI :: IO Bool-cREATE_ALWAYS :: CreateMode-cREATE_NEW :: CreateMode-c_CloseHandle :: HANDLE -> IO Bool-c_CopyFile :: LPCTSTR -> LPCTSTR -> Bool -> IO Bool-c_CreateDirectory :: LPCTSTR -> LPSECURITY_ATTRIBUTES -> IO Bool-c_CreateDirectoryEx :: LPCTSTR -> LPCTSTR -> LPSECURITY_ATTRIBUTES -> IO Bool-c_CreateFile :: LPCTSTR -> AccessMode -> ShareMode -> LPSECURITY_ATTRIBUTES -> CreateMode -> FileAttributeOrFlag -> HANDLE -> IO HANDLE-c_DefineDosDevice :: DefineDosDeviceFlags -> LPCTSTR -> LPCTSTR -> IO Bool-c_DeleteFile :: LPCTSTR -> IO Bool-c_FindCloseChangeNotification :: HANDLE -> IO Bool-c_FindFirstChangeNotification :: LPCTSTR -> Bool -> FileNotificationFlag -> IO HANDLE-c_FindNextChangeNotification :: HANDLE -> IO Bool-c_FlushFileBuffers :: HANDLE -> IO Bool-c_GetBinaryType :: LPCTSTR -> Ptr DWORD -> IO Bool-c_GetDiskFreeSpace :: LPCTSTR -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> IO Bool-c_GetFileAttributes :: LPCTSTR -> IO FileAttributeOrFlag-c_GetLogicalDrives :: IO DWORD-c_MoveFile :: LPCTSTR -> LPCTSTR -> IO Bool-c_MoveFileEx :: LPCTSTR -> LPCTSTR -> MoveFileFlag -> IO Bool-c_ReadFile :: HANDLE -> Ptr a -> DWORD -> Ptr DWORD -> LPOVERLAPPED -> IO Bool-c_RemoveDirectory :: LPCTSTR -> IO Bool-c_SetCurrentDirectory :: LPCTSTR -> IO Bool-c_SetEndOfFile :: HANDLE -> IO Bool-c_SetFileAttributes :: LPCTSTR -> FileAttributeOrFlag -> IO Bool-c_SetVolumeLabel :: LPCTSTR -> LPCTSTR -> IO Bool-c_WriteFile :: HANDLE -> Ptr a -> DWORD -> Ptr DWORD -> LPOVERLAPPED -> IO Bool-closeHandle :: HANDLE -> IO ()-copyFile :: String -> String -> Bool -> IO ()-createDirectory :: String -> Maybe LPSECURITY_ATTRIBUTES -> IO ()-createDirectoryEx :: String -> String -> Maybe LPSECURITY_ATTRIBUTES -> IO ()-createFile :: String -> AccessMode -> ShareMode -> Maybe LPSECURITY_ATTRIBUTES -> CreateMode -> FileAttributeOrFlag -> Maybe HANDLE -> IO HANDLE-dDD_EXACT_MATCH_ON_REMOVE :: DefineDosDeviceFlags-dDD_RAW_TARGET_PATH :: DefineDosDeviceFlags-dDD_REMOVE_DEFINITION :: DefineDosDeviceFlags-dELETE :: AccessMode-dRIVE_CDROM :: DriveType-dRIVE_FIXED :: DriveType-dRIVE_NO_ROOT_DIR :: DriveType-dRIVE_RAMDISK :: DriveType-dRIVE_REMOTE :: DriveType-dRIVE_REMOVABLE :: DriveType-dRIVE_UNKNOWN :: DriveType-defineDosDevice :: DefineDosDeviceFlags -> String -> String -> IO ()-deleteFile :: String -> IO ()-fILE_ATTRIBUTE_ARCHIVE :: FileAttributeOrFlag-fILE_ATTRIBUTE_COMPRESSED :: FileAttributeOrFlag-fILE_ATTRIBUTE_DIRECTORY :: FileAttributeOrFlag-fILE_ATTRIBUTE_HIDDEN :: FileAttributeOrFlag-fILE_ATTRIBUTE_NORMAL :: FileAttributeOrFlag-fILE_ATTRIBUTE_READONLY :: FileAttributeOrFlag-fILE_ATTRIBUTE_SYSTEM :: FileAttributeOrFlag-fILE_ATTRIBUTE_TEMPORARY :: FileAttributeOrFlag-fILE_BEGIN :: FilePtrDirection-fILE_CURRENT :: FilePtrDirection-fILE_END :: FilePtrDirection-fILE_FLAG_BACKUP_SEMANTICS :: FileAttributeOrFlag-fILE_FLAG_DELETE_ON_CLOSE :: FileAttributeOrFlag-fILE_FLAG_NO_BUFFERING :: FileAttributeOrFlag-fILE_FLAG_OVERLAPPED :: FileAttributeOrFlag-fILE_FLAG_POSIX_SEMANTICS :: FileAttributeOrFlag-fILE_FLAG_RANDOM_ACCESS :: FileAttributeOrFlag-fILE_FLAG_SEQUENTIAL_SCAN :: FileAttributeOrFlag-fILE_FLAG_WRITE_THROUGH :: FileAttributeOrFlag-fILE_NOTIFY_CHANGE_ATTRIBUTES :: FileNotificationFlag-fILE_NOTIFY_CHANGE_DIR_NAME :: FileNotificationFlag-fILE_NOTIFY_CHANGE_FILE_NAME :: FileNotificationFlag-fILE_NOTIFY_CHANGE_LAST_WRITE :: FileNotificationFlag-fILE_NOTIFY_CHANGE_SECURITY :: FileNotificationFlag-fILE_NOTIFY_CHANGE_SIZE :: FileNotificationFlag-fILE_SHARE_NONE :: ShareMode-fILE_SHARE_READ :: ShareMode-fILE_SHARE_WRITE :: ShareMode-fILE_TYPE_CHAR :: FileType-fILE_TYPE_DISK :: FileType-fILE_TYPE_PIPE :: FileType-fILE_TYPE_REMOTE :: FileType-fILE_TYPE_UNKNOWN :: FileType-findCloseChangeNotification :: HANDLE -> IO ()-findFirstChangeNotification :: String -> Bool -> FileNotificationFlag -> IO HANDLE-findNextChangeNotification :: HANDLE -> IO ()-flushFileBuffers :: HANDLE -> IO ()-gENERIC_ALL :: AccessMode-gENERIC_EXECUTE :: AccessMode-gENERIC_NONE :: AccessMode-gENERIC_READ :: AccessMode-gENERIC_WRITE :: AccessMode-getBinaryType :: String -> IO BinaryType-getDiskFreeSpace :: Maybe String -> IO (DWORD, DWORD, DWORD, DWORD)-getFileAttributes :: String -> IO FileAttributeOrFlag-getFileType :: HANDLE -> IO FileType-getLogicalDrives :: IO DWORD-mAXIMUM_ALLOWED :: AccessMode-mOVEFILE_COPY_ALLOWED :: MoveFileFlag-mOVEFILE_DELAY_UNTIL_REBOOT :: MoveFileFlag-mOVEFILE_REPLACE_EXISTING :: MoveFileFlag-moveFile :: String -> String -> IO ()-moveFileEx :: String -> String -> MoveFileFlag -> IO ()-oPEN_ALWAYS :: CreateMode-oPEN_EXISTING :: CreateMode-rEAD_CONTROL :: AccessMode-removeDirectory :: String -> IO ()-sCS_32BIT_BINARY :: BinaryType-sCS_DOS_BINARY :: BinaryType-sCS_OS216_BINARY :: BinaryType-sCS_PIF_BINARY :: BinaryType-sCS_POSIX_BINARY :: BinaryType-sCS_WOW_BINARY :: BinaryType-sECURITY_ANONYMOUS :: FileAttributeOrFlag-sECURITY_CONTEXT_TRACKING :: FileAttributeOrFlag-sECURITY_DELEGATION :: FileAttributeOrFlag-sECURITY_EFFECTIVE_ONLY :: FileAttributeOrFlag-sECURITY_IDENTIFICATION :: FileAttributeOrFlag-sECURITY_IMPERSONATION :: FileAttributeOrFlag-sECURITY_SQOS_PRESENT :: FileAttributeOrFlag-sECURITY_VALID_SQOS_FLAGS :: FileAttributeOrFlag-sPECIFIC_RIGHTS_ALL :: AccessMode-sTANDARD_RIGHTS_ALL :: AccessMode-sTANDARD_RIGHTS_EXECUTE :: AccessMode-sTANDARD_RIGHTS_READ :: AccessMode-sTANDARD_RIGHTS_REQUIRED :: AccessMode-sTANDARD_RIGHTS_WRITE :: AccessMode-sYNCHRONIZE :: AccessMode-setCurrentDirectory :: String -> IO ()-setEndOfFile :: HANDLE -> IO ()-setFileApisToANSI :: IO ()-setFileApisToOEM :: IO ()-setFileAttributes :: String -> FileAttributeOrFlag -> IO ()-setHandleCount :: UINT -> IO UINT-setVolumeLabel :: String -> String -> IO ()-tRUNCATE_EXISTING :: CreateMode-type AccessMode = UINT-type BinaryType = DWORD-type CreateMode = UINT-type DefineDosDeviceFlags = DWORD-type DriveType = UINT-type FileAttributeOrFlag = UINT-type FileNotificationFlag = DWORD-type FilePtrDirection = DWORD-type FileType = DWORD-type LPOVERLAPPED = Ptr ()-type LPSECURITY_ATTRIBUTES = Ptr ()-type MbLPOVERLAPPED = Maybe LPOVERLAPPED-type MbLPSECURITY_ATTRIBUTES = Maybe LPSECURITY_ATTRIBUTES-type MoveFileFlag = DWORD-type ShareMode = UINT-wRITE_DAC :: AccessMode-wRITE_OWNER :: AccessMode-win32_ReadFile :: HANDLE -> Ptr a -> DWORD -> Maybe LPOVERLAPPED -> IO DWORD-win32_WriteFile :: HANDLE -> Ptr a -> DWORD -> Maybe LPOVERLAPPED -> IO DWORD--module System.Win32.Info-cOLOR_ACTIVEBORDER :: SystemColor-cOLOR_ACTIVECAPTION :: SystemColor-cOLOR_APPWORKSPACE :: SystemColor-cOLOR_BACKGROUND :: SystemColor-cOLOR_BTNFACE :: SystemColor-cOLOR_BTNHIGHLIGHT :: SystemColor-cOLOR_BTNSHADOW :: SystemColor-cOLOR_BTNTEXT :: SystemColor-cOLOR_CAPTIONTEXT :: SystemColor-cOLOR_GRAYTEXT :: SystemColor-cOLOR_HIGHLIGHT :: SystemColor-cOLOR_HIGHLIGHTTEXT :: SystemColor-cOLOR_INACTIVEBORDER :: SystemColor-cOLOR_INACTIVECAPTION :: SystemColor-cOLOR_INACTIVECAPTIONTEXT :: SystemColor-cOLOR_MENU :: SystemColor-cOLOR_MENUTEXT :: SystemColor-cOLOR_SCROLLBAR :: SystemColor-cOLOR_WINDOW :: SystemColor-cOLOR_WINDOWFRAME :: SystemColor-cOLOR_WINDOWTEXT :: SystemColor-sM_ARRANGE :: SMSetting-sM_CLEANBOOT :: SMSetting-sM_CMETRICS :: SMSetting-sM_CMOUSEBUTTONS :: SMSetting-sM_CXBORDER :: SMSetting-sM_CXCURSOR :: SMSetting-sM_CXDLGFRAME :: SMSetting-sM_CXDOUBLECLK :: SMSetting-sM_CXDRAG :: SMSetting-sM_CXEDGE :: SMSetting-sM_CXFRAME :: SMSetting-sM_CXFULLSCREEN :: SMSetting-sM_CXHSCROLL :: SMSetting-sM_CXICON :: SMSetting-sM_CXICONSPACING :: SMSetting-sM_CXMAXIMIZED :: SMSetting-sM_CXMENUCHECK :: SMSetting-sM_CXMENUSIZE :: SMSetting-sM_CXMIN :: SMSetting-sM_CXMINIMIZED :: SMSetting-sM_CXMINTRACK :: SMSetting-sM_CXSCREEN :: SMSetting-sM_CXSIZE :: SMSetting-sM_CXSIZEFRAME :: SMSetting-sM_CXSMICON :: SMSetting-sM_CXSMSIZE :: SMSetting-sM_CXVSCROLL :: SMSetting-sM_CYBORDER :: SMSetting-sM_CYCAPTION :: SMSetting-sM_CYCURSOR :: SMSetting-sM_CYDLGFRAME :: SMSetting-sM_CYDOUBLECLK :: SMSetting-sM_CYDRAG :: SMSetting-sM_CYEDGE :: SMSetting-sM_CYFRAME :: SMSetting-sM_CYFULLSCREEN :: SMSetting-sM_CYHSCROLL :: SMSetting-sM_CYICON :: SMSetting-sM_CYICONSPACING :: SMSetting-sM_CYKANJIWINDOW :: SMSetting-sM_CYMAXIMIZED :: SMSetting-sM_CYMENU :: SMSetting-sM_CYMENUCHECK :: SMSetting-sM_CYMENUSIZE :: SMSetting-sM_CYMIN :: SMSetting-sM_CYMINIMIZED :: SMSetting-sM_CYMINTRACK :: SMSetting-sM_CYSCREEN :: SMSetting-sM_CYSIZE :: SMSetting-sM_CYSIZEFRAME :: SMSetting-sM_CYSMCAPTION :: SMSetting-sM_CYSMICON :: SMSetting-sM_CYSMSIZE :: SMSetting-sM_CYVSCROLL :: SMSetting-sM_CYVTHUMB :: SMSetting-sM_DBCSENABLED :: SMSetting-sM_DEBUG :: SMSetting-sM_MENUDROPALIGNMENT :: SMSetting-sM_MIDEASTENABLED :: SMSetting-sM_MOUSEPRESENT :: SMSetting-sM_NETWORK :: SMSetting-sM_PENWINDOWS :: SMSetting-sM_SECURE :: SMSetting-sM_SHOWSOUNDS :: SMSetting-sM_SLOWMACHINE :: SMSetting-sM_SWAPBUTTON :: SMSetting-type SMSetting = UINT-type SystemColor = UINT--module System.Win32.Mem-c_GlobalAlloc :: GlobalAllocFlags -> DWORD -> IO HGLOBAL-c_GlobalFlags :: HGLOBAL -> IO GlobalAllocFlags-c_GlobalFree :: HGLOBAL -> IO HGLOBAL-c_GlobalHandle :: Addr -> IO HGLOBAL-c_GlobalLock :: HGLOBAL -> IO Addr-c_GlobalReAlloc :: HGLOBAL -> DWORD -> GlobalAllocFlags -> IO HGLOBAL-c_GlobalSize :: HGLOBAL -> IO DWORD-c_GlobalUnlock :: HGLOBAL -> IO Bool-c_HeapAlloc :: HANDLE -> HeapAllocFlags -> DWORD -> IO Addr-c_HeapCompact :: HANDLE -> HeapAllocFlags -> IO UINT-c_HeapCreate :: HeapAllocFlags -> DWORD -> DWORD -> IO HANDLE-c_HeapDestroy :: HANDLE -> IO Bool-c_HeapFree :: HANDLE -> HeapAllocFlags -> Addr -> IO Bool-c_HeapLock :: HANDLE -> IO Bool-c_HeapReAlloc :: HANDLE -> HeapAllocFlags -> Addr -> DWORD -> IO Addr-c_HeapSize :: HANDLE -> HeapAllocFlags -> Addr -> IO DWORD-c_HeapUnlock :: HANDLE -> IO Bool-c_VirtualAlloc :: Addr -> DWORD -> DWORD -> DWORD -> IO Addr-c_VirtualFree :: Addr -> DWORD -> FreeFlags -> IO Bool-c_VirtualLock :: Addr -> DWORD -> IO Bool-c_VirtualProtect :: Addr -> DWORD -> DWORD -> Ptr DWORD -> IO Bool-c_VirtualProtectEx :: HANDLE -> Addr -> DWORD -> DWORD -> Ptr DWORD -> IO Bool-c_VirtualUnlock :: Addr -> DWORD -> IO Bool-copyMemory :: Ptr a -> Ptr a -> DWORD -> IO ()-fillMemory :: Ptr a -> DWORD -> BYTE -> IO ()-gHND :: GlobalAllocFlags-gMEM_DDESHARE :: GlobalAllocFlags-gMEM_FIXED :: GlobalAllocFlags-gMEM_INVALID_HANDLE :: GlobalAllocFlags-gMEM_LOWER :: GlobalAllocFlags-gMEM_MOVEABLE :: GlobalAllocFlags-gMEM_NOCOMPACT :: GlobalAllocFlags-gMEM_NODISCARD :: GlobalAllocFlags-gMEM_NOTIFY :: GlobalAllocFlags-gMEM_NOT_BANKED :: GlobalAllocFlags-gMEM_SHARE :: GlobalAllocFlags-gMEM_ZEROINIT :: GlobalAllocFlags-gPTR :: GlobalAllocFlags-getProcessHeap :: IO HANDLE-getProcessHeaps :: DWORD -> Addr -> IO DWORD-globalAlloc :: GlobalAllocFlags -> DWORD -> IO HGLOBAL-globalFlags :: HGLOBAL -> IO GlobalAllocFlags-globalFree :: HGLOBAL -> IO HGLOBAL-globalHandle :: Addr -> IO HGLOBAL-globalLock :: HGLOBAL -> IO Addr-globalReAlloc :: HGLOBAL -> DWORD -> GlobalAllocFlags -> IO HGLOBAL-globalSize :: HGLOBAL -> IO DWORD-globalUnlock :: HGLOBAL -> IO ()-hEAP_GENERATE_EXCEPTIONS :: HeapAllocFlags-hEAP_NO_SERIALIZE :: HeapAllocFlags-hEAP_ZERO_MEMORY :: HeapAllocFlags-heapAlloc :: HANDLE -> HeapAllocFlags -> DWORD -> IO Addr-heapCompact :: HANDLE -> HeapAllocFlags -> IO UINT-heapCreate :: HeapAllocFlags -> DWORD -> DWORD -> IO HANDLE-heapDestroy :: HANDLE -> IO ()-heapFree :: HANDLE -> HeapAllocFlags -> Addr -> IO ()-heapLock :: HANDLE -> IO ()-heapReAlloc :: HANDLE -> HeapAllocFlags -> Addr -> DWORD -> IO Addr-heapSize :: HANDLE -> HeapAllocFlags -> Addr -> IO DWORD-heapUnlock :: HANDLE -> IO ()-heapValidate :: HANDLE -> HeapAllocFlags -> Addr -> IO Bool-mEM_COMMIT :: VirtualAllocFlags-mEM_DECOMMIT :: FreeFlags-mEM_RELEASE :: FreeFlags-mEM_RESERVE :: VirtualAllocFlags-memset :: Ptr a -> CInt -> CSize -> IO ()-moveMemory :: Ptr a -> Ptr a -> DWORD -> IO ()-pAGE_EXECUTE :: ProtectFlags-pAGE_EXECUTE_READ :: ProtectFlags-pAGE_EXECUTE_READWRITE :: ProtectFlags-pAGE_GUARD :: ProtectFlags-pAGE_NOACCESS :: ProtectFlags-pAGE_NOCACHE :: ProtectFlags-pAGE_READONLY :: ProtectFlags-pAGE_READWRITE :: ProtectFlags-type FreeFlags = DWORD-type GlobalAllocFlags = UINT-type HGLOBAL = Addr-type HeapAllocFlags = DWORD-type ProtectFlags = DWORD-type VirtualAllocFlags = DWORD-virtualAlloc :: Addr -> DWORD -> VirtualAllocFlags -> ProtectFlags -> IO Addr-virtualFree :: Addr -> DWORD -> FreeFlags -> IO ()-virtualLock :: Addr -> DWORD -> IO ()-virtualProtect :: Addr -> DWORD -> ProtectFlags -> IO ProtectFlags-virtualProtectEx :: HANDLE -> Addr -> DWORD -> ProtectFlags -> IO ProtectFlags-virtualUnlock :: Addr -> DWORD -> IO ()-zeroMemory :: Ptr a -> DWORD -> IO ()--module System.Win32.NLS-cP_ACP :: CodePage-cP_MACCP :: CodePage-cP_OEMCP :: CodePage-c_LCMapString :: LCID -> LCMapFlags -> LPCTSTR -> Int -> LPCTSTR -> Int -> IO Int-c_SetLocaleInfo :: LCID -> LCTYPE -> LPCTSTR -> IO Bool-convertDefaultLocale :: LCID -> IO LCID-getACP :: IO CodePage-getOEMCP :: CodePage-getSystemDefaultLCID :: LCID-getSystemDefaultLangID :: LANGID-getThreadLocale :: IO LCID-getUserDefaultLCID :: LCID-getUserDefaultLangID :: LANGID-isValidCodePage :: CodePage -> IO Bool-isValidLocale :: LCID -> LocaleTestFlags -> IO Bool-lANGIDFROMLCID :: LCID -> LANGID-lANG_AFRIKAANS :: PrimaryLANGID-lANG_ALBANIAN :: PrimaryLANGID-lANG_ARABIC :: PrimaryLANGID-lANG_ARMENIAN :: PrimaryLANGID-lANG_ASSAMESE :: PrimaryLANGID-lANG_AZERI :: PrimaryLANGID-lANG_BASQUE :: PrimaryLANGID-lANG_BELARUSIAN :: PrimaryLANGID-lANG_BENGALI :: PrimaryLANGID-lANG_BULGARIAN :: PrimaryLANGID-lANG_CATALAN :: PrimaryLANGID-lANG_CHINESE :: PrimaryLANGID-lANG_CROATIAN :: PrimaryLANGID-lANG_CZECH :: PrimaryLANGID-lANG_DANISH :: PrimaryLANGID-lANG_DUTCH :: PrimaryLANGID-lANG_ENGLISH :: PrimaryLANGID-lANG_ESTONIAN :: PrimaryLANGID-lANG_FAEROESE :: PrimaryLANGID-lANG_FARSI :: PrimaryLANGID-lANG_FINNISH :: PrimaryLANGID-lANG_FRENCH :: PrimaryLANGID-lANG_GEORGIAN :: PrimaryLANGID-lANG_GERMAN :: PrimaryLANGID-lANG_GREEK :: PrimaryLANGID-lANG_GUJARATI :: PrimaryLANGID-lANG_HEBREW :: PrimaryLANGID-lANG_HINDI :: PrimaryLANGID-lANG_HUNGARIAN :: PrimaryLANGID-lANG_ICELANDIC :: PrimaryLANGID-lANG_INDONESIAN :: PrimaryLANGID-lANG_ITALIAN :: PrimaryLANGID-lANG_JAPANESE :: PrimaryLANGID-lANG_KANNADA :: PrimaryLANGID-lANG_KASHMIRI :: PrimaryLANGID-lANG_KAZAK :: PrimaryLANGID-lANG_KONKANI :: PrimaryLANGID-lANG_KOREAN :: PrimaryLANGID-lANG_LATVIAN :: PrimaryLANGID-lANG_LITHUANIAN :: PrimaryLANGID-lANG_MACEDONIAN :: PrimaryLANGID-lANG_MALAY :: PrimaryLANGID-lANG_MALAYALAM :: PrimaryLANGID-lANG_MANIPURI :: PrimaryLANGID-lANG_MARATHI :: PrimaryLANGID-lANG_NEPALI :: PrimaryLANGID-lANG_NEUTRAL :: PrimaryLANGID-lANG_NORWEGIAN :: PrimaryLANGID-lANG_ORIYA :: PrimaryLANGID-lANG_POLISH :: PrimaryLANGID-lANG_PORTUGUESE :: PrimaryLANGID-lANG_PUNJABI :: PrimaryLANGID-lANG_ROMANIAN :: PrimaryLANGID-lANG_RUSSIAN :: PrimaryLANGID-lANG_SANSKRIT :: PrimaryLANGID-lANG_SERBIAN :: PrimaryLANGID-lANG_SINDHI :: PrimaryLANGID-lANG_SLOVAK :: PrimaryLANGID-lANG_SLOVENIAN :: PrimaryLANGID-lANG_SPANISH :: PrimaryLANGID-lANG_SWAHILI :: PrimaryLANGID-lANG_SWEDISH :: PrimaryLANGID-lANG_TAMIL :: PrimaryLANGID-lANG_TATAR :: PrimaryLANGID-lANG_TELUGU :: PrimaryLANGID-lANG_THAI :: PrimaryLANGID-lANG_TURKISH :: PrimaryLANGID-lANG_URDU :: PrimaryLANGID-lANG_UZBEK :: PrimaryLANGID-lANG_VIETNAMESE :: PrimaryLANGID-lCID_INSTALLED :: LocaleTestFlags-lCID_SUPPORTED :: LocaleTestFlags-lCMAP_BYTEREV :: LCMapFlags-lCMAP_FULLWIDTH :: LCMapFlags-lCMAP_HALFWIDTH :: LCMapFlags-lCMAP_HIRAGANA :: LCMapFlags-lCMAP_KATAKANA :: LCMapFlags-lCMAP_LINGUISTIC_CASING :: LCMapFlags-lCMAP_LOWERCASE :: LCMapFlags-lCMAP_SIMPLIFIED_CHINESE :: LCMapFlags-lCMAP_SORTKEY :: LCMapFlags-lCMAP_TRADITIONAL_CHINESE :: LCMapFlags-lCMAP_UPPERCASE :: LCMapFlags-lCMapString :: LCID -> LCMapFlags -> String -> Int -> IO String-lOCALE_ICALENDARTYPE :: LCTYPE-lOCALE_ICURRDIGITS :: LCTYPE-lOCALE_ICURRENCY :: LCTYPE-lOCALE_IDIGITS :: LCTYPE-lOCALE_IFIRSTDAYOFWEEK :: LCTYPE-lOCALE_IFIRSTWEEKOFYEAR :: LCTYPE-lOCALE_ILZERO :: LCTYPE-lOCALE_IMEASURE :: LCTYPE-lOCALE_INEGCURR :: LCTYPE-lOCALE_INEGNUMBER :: LCTYPE-lOCALE_ITIME :: LCTYPE-lOCALE_NEUTRAL :: LCID-lOCALE_S1159 :: LCTYPE-lOCALE_S2359 :: LCTYPE-lOCALE_SCURRENCY :: LCTYPE-lOCALE_SDATE :: LCTYPE-lOCALE_SDECIMAL :: LCTYPE-lOCALE_SGROUPING :: LCTYPE-lOCALE_SLIST :: LCTYPE-lOCALE_SLONGDATE :: LCTYPE-lOCALE_SMONDECIMALSEP :: LCTYPE-lOCALE_SMONGROUPING :: LCTYPE-lOCALE_SMONTHOUSANDSEP :: LCTYPE-lOCALE_SNEGATIVESIGN :: LCTYPE-lOCALE_SPOSITIVESIGN :: LCTYPE-lOCALE_SSHORTDATE :: LCTYPE-lOCALE_STHOUSAND :: LCTYPE-lOCALE_STIME :: LCTYPE-lOCALE_STIMEFORMAT :: LCTYPE-lOCALE_SYSTEM_DEFAULT :: LCID-lOCALE_USER_DEFAULT :: LCID-mAKELANGID :: PrimaryLANGID -> SubLANGID -> LANGID-mAKELCID :: LANGID -> SortID -> LCID-nORM_IGNORECASE :: LCMapFlags-nORM_IGNOREKANATYPE :: LCMapFlags-nORM_IGNORENONSPACE :: LCMapFlags-nORM_IGNORESYMBOLS :: LCMapFlags-nORM_IGNOREWIDTH :: LCMapFlags-pRIMARYLANGID :: LANGID -> PrimaryLANGID-sORTIDFROMLCID :: LCID -> SortID-sORT_CHINESE_BIG5 :: SortID-sORT_CHINESE_UNICODE :: SortID-sORT_DEFAULT :: SortID-sORT_JAPANESE_UNICODE :: SortID-sORT_JAPANESE_XJIS :: SortID-sORT_KOREAN_KSC :: SortID-sORT_KOREAN_UNICODE :: SortID-sORT_STRINGSORT :: LCMapFlags-sUBLANGID :: LANGID -> SubLANGID-sUBLANG_ARABIC_ALGERIA :: SubLANGID-sUBLANG_ARABIC_BAHRAIN :: SubLANGID-sUBLANG_ARABIC_EGYPT :: SubLANGID-sUBLANG_ARABIC_IRAQ :: SubLANGID-sUBLANG_ARABIC_JORDAN :: SubLANGID-sUBLANG_ARABIC_KUWAIT :: SubLANGID-sUBLANG_ARABIC_LEBANON :: SubLANGID-sUBLANG_ARABIC_LIBYA :: SubLANGID-sUBLANG_ARABIC_MOROCCO :: SubLANGID-sUBLANG_ARABIC_OMAN :: SubLANGID-sUBLANG_ARABIC_QATAR :: SubLANGID-sUBLANG_ARABIC_SAUDI_ARABIA :: SubLANGID-sUBLANG_ARABIC_SYRIA :: SubLANGID-sUBLANG_ARABIC_TUNISIA :: SubLANGID-sUBLANG_ARABIC_UAE :: SubLANGID-sUBLANG_ARABIC_YEMEN :: SubLANGID-sUBLANG_AZERI_CYRILLIC :: SubLANGID-sUBLANG_AZERI_LATIN :: SubLANGID-sUBLANG_CHINESE_HONGKONG :: SubLANGID-sUBLANG_CHINESE_MACAU :: SubLANGID-sUBLANG_CHINESE_SIMPLIFIED :: SubLANGID-sUBLANG_CHINESE_SINGAPORE :: SubLANGID-sUBLANG_CHINESE_TRADITIONAL :: SubLANGID-sUBLANG_DEFAULT :: SubLANGID-sUBLANG_DUTCH :: SubLANGID-sUBLANG_DUTCH_BELGIAN :: SubLANGID-sUBLANG_ENGLISH_AUS :: SubLANGID-sUBLANG_ENGLISH_BELIZE :: SubLANGID-sUBLANG_ENGLISH_CAN :: SubLANGID-sUBLANG_ENGLISH_CARIBBEAN :: SubLANGID-sUBLANG_ENGLISH_EIRE :: SubLANGID-sUBLANG_ENGLISH_JAMAICA :: SubLANGID-sUBLANG_ENGLISH_NZ :: SubLANGID-sUBLANG_ENGLISH_PHILIPPINES :: SubLANGID-sUBLANG_ENGLISH_SOUTH_AFRICA :: SubLANGID-sUBLANG_ENGLISH_TRINIDAD :: SubLANGID-sUBLANG_ENGLISH_UK :: SubLANGID-sUBLANG_ENGLISH_US :: SubLANGID-sUBLANG_ENGLISH_ZIMBABWE :: SubLANGID-sUBLANG_FRENCH :: SubLANGID-sUBLANG_FRENCH_BELGIAN :: SubLANGID-sUBLANG_FRENCH_CANADIAN :: SubLANGID-sUBLANG_FRENCH_LUXEMBOURG :: SubLANGID-sUBLANG_FRENCH_MONACO :: SubLANGID-sUBLANG_FRENCH_SWISS :: SubLANGID-sUBLANG_GERMAN :: SubLANGID-sUBLANG_GERMAN_AUSTRIAN :: SubLANGID-sUBLANG_GERMAN_LIECHTENSTEIN :: SubLANGID-sUBLANG_GERMAN_LUXEMBOURG :: SubLANGID-sUBLANG_GERMAN_SWISS :: SubLANGID-sUBLANG_ITALIAN :: SubLANGID-sUBLANG_ITALIAN_SWISS :: SubLANGID-sUBLANG_KASHMIRI_INDIA :: SubLANGID-sUBLANG_KOREAN :: SubLANGID-sUBLANG_LITHUANIAN :: SubLANGID-sUBLANG_MALAY_BRUNEI_DARUSSALAM :: SubLANGID-sUBLANG_MALAY_MALAYSIA :: SubLANGID-sUBLANG_NEPALI_INDIA :: SubLANGID-sUBLANG_NEUTRAL :: SubLANGID-sUBLANG_NORWEGIAN_BOKMAL :: SubLANGID-sUBLANG_NORWEGIAN_NYNORSK :: SubLANGID-sUBLANG_PORTUGUESE :: SubLANGID-sUBLANG_PORTUGUESE_BRAZILIAN :: SubLANGID-sUBLANG_SERBIAN_CYRILLIC :: SubLANGID-sUBLANG_SERBIAN_LATIN :: SubLANGID-sUBLANG_SPANISH :: SubLANGID-sUBLANG_SPANISH_ARGENTINA :: SubLANGID-sUBLANG_SPANISH_BOLIVIA :: SubLANGID-sUBLANG_SPANISH_CHILE :: SubLANGID-sUBLANG_SPANISH_COLOMBIA :: SubLANGID-sUBLANG_SPANISH_COSTA_RICA :: SubLANGID-sUBLANG_SPANISH_DOMINICAN_REPUBLIC :: SubLANGID-sUBLANG_SPANISH_ECUADOR :: SubLANGID-sUBLANG_SPANISH_EL_SALVADOR :: SubLANGID-sUBLANG_SPANISH_GUATEMALA :: SubLANGID-sUBLANG_SPANISH_HONDURAS :: SubLANGID-sUBLANG_SPANISH_MEXICAN :: SubLANGID-sUBLANG_SPANISH_MODERN :: SubLANGID-sUBLANG_SPANISH_NICARAGUA :: SubLANGID-sUBLANG_SPANISH_PANAMA :: SubLANGID-sUBLANG_SPANISH_PARAGUAY :: SubLANGID-sUBLANG_SPANISH_PERU :: SubLANGID-sUBLANG_SPANISH_PUERTO_RICO :: SubLANGID-sUBLANG_SPANISH_URUGUAY :: SubLANGID-sUBLANG_SPANISH_VENEZUELA :: SubLANGID-sUBLANG_SWEDISH :: SubLANGID-sUBLANG_SWEDISH_FINLAND :: SubLANGID-sUBLANG_SYS_DEFAULT :: SubLANGID-sUBLANG_URDU_INDIA :: SubLANGID-sUBLANG_URDU_PAKISTAN :: SubLANGID-sUBLANG_UZBEK_CYRILLIC :: SubLANGID-sUBLANG_UZBEK_LATIN :: SubLANGID-setLocaleInfo :: LCID -> LCTYPE -> String -> IO ()-setThreadLocale :: LCID -> IO ()-type CodePage = UINT-type LANGID = WORD-type LCID = DWORD-type LCMapFlags = DWORD-type LCTYPE = UINT-type LocaleTestFlags = DWORD-type PrimaryLANGID = WORD-type SortID = WORD-type SubLANGID = WORD--module System.Win32.Process-iNFINITE :: DWORD-sleep :: DWORD -> IO ()--module System.Win32.Registry-RegInfoKey :: String -> Int -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> Int -> Word32 -> Word32 -> RegInfoKey-c_RegCloseKey :: PKEY -> IO ErrCode-c_RegConnectRegistry :: LPCTSTR -> PKEY -> Ptr PKEY -> IO ErrCode-c_RegCreateKey :: PKEY -> LPCTSTR -> Ptr PKEY -> IO ErrCode-c_RegCreateKeyEx :: PKEY -> LPCTSTR -> DWORD -> LPCTSTR -> RegCreateOptions -> REGSAM -> LPSECURITY_ATTRIBUTES -> Ptr PKEY -> Ptr DWORD -> IO ErrCode-c_RegDeleteKey :: PKEY -> LPCTSTR -> IO ErrCode-c_RegDeleteValue :: PKEY -> LPCTSTR -> IO ErrCode-c_RegEnumKey :: PKEY -> DWORD -> LPTSTR -> DWORD -> IO ErrCode-c_RegEnumValue :: PKEY -> DWORD -> LPTSTR -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> LPBYTE -> Ptr DWORD -> IO ErrCode-c_RegFlushKey :: PKEY -> IO ErrCode-c_RegLoadKey :: PKEY -> LPCTSTR -> LPCTSTR -> IO ErrCode-c_RegNotifyChangeKeyValue :: PKEY -> Bool -> RegNotifyOptions -> HANDLE -> Bool -> IO ErrCode-c_RegOpenKey :: PKEY -> LPCTSTR -> Ptr PKEY -> IO ErrCode-c_RegOpenKeyEx :: PKEY -> LPCTSTR -> DWORD -> REGSAM -> Ptr PKEY -> IO ErrCode-c_RegQueryInfoKey :: PKEY -> LPTSTR -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr FILETIME -> IO ErrCode-c_RegQueryValue :: PKEY -> LPCTSTR -> LPTSTR -> Ptr LONG -> IO ErrCode-c_RegQueryValueEx :: PKEY -> LPCTSTR -> Ptr DWORD -> Ptr DWORD -> LPBYTE -> Ptr DWORD -> IO ErrCode-c_RegReplaceKey :: PKEY -> LPCTSTR -> LPCTSTR -> LPCTSTR -> IO ErrCode-c_RegRestoreKey :: PKEY -> LPCTSTR -> RegRestoreFlags -> IO ErrCode-c_RegSaveKey :: PKEY -> LPCTSTR -> LPSECURITY_ATTRIBUTES -> IO ErrCode-c_RegSetValue :: PKEY -> LPCTSTR -> DWORD -> LPCTSTR -> Int -> IO ErrCode-c_RegSetValueEx :: PKEY -> LPCTSTR -> DWORD -> RegValueType -> LPTSTR -> Int -> IO ErrCode-c_RegUnLoadKey :: PKEY -> LPCTSTR -> IO ErrCode-class_id :: RegInfoKey -> Int-class_string :: RegInfoKey -> String-data RegInfoKey-eRROR_NO_MORE_ITEMS :: ErrCode-hKEY_CLASSES_ROOT :: HKEY-hKEY_CURRENT_CONFIG :: HKEY-hKEY_CURRENT_USER :: HKEY-hKEY_LOCAL_MACHINE :: HKEY-hKEY_USERS :: HKEY-kEY_ALL_ACCESS :: REGSAM-kEY_CREATE_LINK :: REGSAM-kEY_CREATE_SUB_KEY :: REGSAM-kEY_ENUMERATE_SUB_KEYS :: REGSAM-kEY_EXECUTE :: REGSAM-kEY_NOTIFY :: REGSAM-kEY_QUERY_VALUE :: REGSAM-kEY_READ :: REGSAM-kEY_SET_VALUE :: REGSAM-kEY_WRITE :: REGSAM-lastWrite_hi :: RegInfoKey -> Word32-lastWrite_lo :: RegInfoKey -> Word32-max_class_len :: RegInfoKey -> Word32-max_subkey_len :: RegInfoKey -> Word32-max_value_len :: RegInfoKey -> Word32-max_value_name_len :: RegInfoKey -> Word32-rEG_BINARY :: RegValueType-rEG_DWORD :: RegValueType-rEG_DWORD_BIG_ENDIAN :: RegValueType-rEG_DWORD_LITTLE_ENDIAN :: RegValueType-rEG_EXPAND_SZ :: RegValueType-rEG_LINK :: RegValueType-rEG_MULTI_SZ :: RegValueType-rEG_NONE :: RegValueType-rEG_NOTIFY_CHANGE_ATTRIBUTES :: RegNotifyOptions-rEG_NOTIFY_CHANGE_LAST_SET :: RegNotifyOptions-rEG_NOTIFY_CHANGE_NAME :: RegNotifyOptions-rEG_NOTIFY_CHANGE_SECURITY :: RegNotifyOptions-rEG_NO_LAZY_FLUSH :: RegRestoreFlags-rEG_OPTION_NON_VOLATILE :: RegCreateOptions-rEG_OPTION_VOLATILE :: RegCreateOptions-rEG_REFRESH_HIVE :: RegRestoreFlags-rEG_RESOURCE_LIST :: RegValueType-rEG_SZ :: RegValueType-rEG_WHOLE_HIVE_VOLATILE :: RegRestoreFlags-regCloseKey :: HKEY -> IO ()-regConnectRegistry :: Maybe String -> HKEY -> IO HKEY-regCreateKey :: HKEY -> String -> IO HKEY-regCreateKeyEx :: HKEY -> String -> String -> RegCreateOptions -> REGSAM -> Maybe LPSECURITY_ATTRIBUTES -> IO (HKEY, Bool)-regDeleteKey :: HKEY -> String -> IO ()-regDeleteValue :: HKEY -> String -> IO ()-regEnumKey :: HKEY -> DWORD -> LPTSTR -> DWORD -> IO (String, Int)-regEnumKeyVals :: HKEY -> IO [(String, String, RegValueType)]-regEnumKeys :: HKEY -> IO [String]-regEnumValue :: HKEY -> DWORD -> LPTSTR -> DWORD -> LPBYTE -> DWORD -> IO (RegValueType, String, Int)-regFlushKey :: HKEY -> IO ()-regLoadKey :: HKEY -> String -> String -> IO ()-regNotifyChangeKeyValue :: HKEY -> Bool -> RegNotifyOptions -> HANDLE -> Bool -> IO ()-regOpenKey :: HKEY -> String -> IO HKEY-regOpenKeyEx :: HKEY -> String -> REGSAM -> IO HKEY-regQueryInfoKey :: HKEY -> IO RegInfoKey-regQueryValue :: HKEY -> Maybe String -> IO String-regQueryValueEx :: HKEY -> String -> LPBYTE -> Int -> IO RegValueType-regQueryValueKey :: HKEY -> Maybe String -> IO String-regReplaceKey :: HKEY -> String -> String -> String -> IO ()-regRestoreKey :: HKEY -> String -> RegRestoreFlags -> IO ()-regSaveKey :: HKEY -> String -> Maybe LPSECURITY_ATTRIBUTES -> IO ()-regSetStringValue :: HKEY -> String -> String -> IO ()-regSetValue :: HKEY -> String -> String -> IO ()-regSetValueEx :: HKEY -> String -> RegValueType -> LPTSTR -> Int -> IO ()-regUnLoadKey :: HKEY -> String -> IO ()-sec_len :: RegInfoKey -> Int-subkeys :: RegInfoKey -> Word32-type FILETIME = ()-type REGSAM = Word32-type RegCreateOptions = DWORD-type RegNotifyOptions = DWORD-type RegRestoreFlags = DWORD-type RegValueType = DWORD-values :: RegInfoKey -> Word32--module System.Win32.Types-castFunPtrToLONG :: FunPtr a -> LONG-castPtrToUINT :: Ptr s -> UINT-castUINTToPtr :: UINT -> Ptr a-deleteObject_p :: FunPtr (HANDLE -> IO ())-errorWin :: String -> IO a-failIf :: (a -> Bool) -> String -> IO a -> IO a-failIfFalse_ :: String -> IO Bool -> IO ()-failIfNull :: String -> IO (Ptr a) -> IO (Ptr a)-failIfZero :: Num a => String -> IO a -> IO a-failIf_ :: (a -> Bool) -> String -> IO a -> IO ()-failUnlessSuccess :: String -> IO ErrCode -> IO ()-failUnlessSuccessOr :: ErrCode -> String -> IO ErrCode -> IO Bool-failWith :: String -> ErrCode -> IO a-getErrorMessage :: DWORD -> IO LPWSTR-getLastError :: IO ErrCode-hIWORD :: DWORD -> WORD-handleToWord :: HANDLE -> UINT-lOWORD :: DWORD -> WORD-localFree :: Ptr a -> IO (Ptr a)-maybeNum :: Num a => Maybe a -> a-maybePtr :: Maybe (Ptr a) -> Ptr a-newForeignHANDLE :: HANDLE -> IO ForeignHANDLE-newTString :: String -> IO LPCTSTR-nullFinalHANDLE :: ForeignPtr a-nullHANDLE :: HANDLE-nullPtr-numToMaybe :: Num a => a -> Maybe a-peekTString :: LPCTSTR -> IO String-peekTStringLen :: (LPCTSTR, Int) -> IO String-ptrToMaybe :: Ptr a -> Maybe (Ptr a)-type ATOM = UINT-type Addr = Ptr ()-type BOOL = Bool-type BYTE = Word8-type DWORD = Word32-type ErrCode = DWORD-type FLOAT = Float-type ForeignHANDLE = ForeignPtr ()-type HANDLE = Ptr ()-type HINSTANCE = Ptr ()-type HKEY = ForeignHANDLE-type HMODULE = Ptr ()-type INT = Int32-type LONG = Int32-type LPARAM = LONG-type LPBYTE = Ptr BYTE-type LPCSTR = LPSTR-type LPCTSTR = LPTSTR-type LPCTSTR_ = LPCTSTR-type LPCWSTR = LPWSTR-type LPSTR = Ptr CChar-type LPTSTR = Ptr TCHAR-type LPVOID = Ptr ()-type LPWSTR = Ptr CWchar-type LRESULT = LONG-type MbATOM = Maybe ATOM-type MbHANDLE = Maybe HANDLE-type MbHINSTANCE = Maybe HINSTANCE-type MbHMODULE = Maybe HMODULE-type MbINT = Maybe INT-type MbLPCSTR = Maybe LPCSTR-type MbLPCTSTR = Maybe LPCTSTR-type MbLPVOID = Maybe LPVOID-type MbString = Maybe String-type PKEY = HANDLE-type TCHAR = CWchar-type UINT = Word32-type USHORT = Word16-type WORD = Word16-type WPARAM = UINT-withTString :: String -> (LPTSTR -> IO a) -> IO a-withTStringLen :: String -> ((LPTSTR, Int) -> IO a) -> IO a--module Test.HUnit.Base-(@=?) :: (Eq a, Show a) => a -> a -> Assertion-(@?) :: AssertionPredicable t => t -> String -> Assertion-(@?=) :: (Eq a, Show a) => a -> a -> Assertion-(~:) :: Testable t => String -> t -> Test-(~=?) :: (Eq a, Show a) => a -> a -> Test-(~?) :: AssertionPredicable t => t -> String -> Test-(~?=) :: (Eq a, Show a) => a -> a -> Test-Counts :: Int -> Int -> Int -> Int -> Counts-Label :: String -> Node-ListItem :: Int -> Node-State :: Path -> Counts -> State-TestCase :: Assertion -> Test-TestLabel :: String -> Test -> Test-TestList :: [Test] -> Test-assert :: Assertable t => t -> Assertion-assertBool :: String -> Bool -> Assertion-assertEqual :: (Eq a, Show a) => String -> a -> a -> Assertion-assertFailure :: String -> Assertion-assertString :: String -> Assertion-assertionPredicate :: AssertionPredicable t => t -> AssertionPredicate-cases :: Counts -> Int-class Assertable t-class AssertionPredicable t-class ListAssertable t-class Testable t-counts :: State -> Counts-data Counts-data Node-data State-data Test-errors :: Counts -> Int-failures :: Counts -> Int-instance Eq Counts-instance Eq Node-instance Eq State-instance Read Counts-instance Read Node-instance Read State-instance Show Counts-instance Show Node-instance Show State-instance Show Test-instance Testable Test-listAssert :: ListAssertable t => [t] -> Assertion-path :: State -> Path-performTest :: ReportStart us -> ReportProblem us -> ReportProblem us -> us -> Test -> IO (Counts, us)-test :: Testable t => t -> Test-testCaseCount :: Test -> Int-testCasePaths :: Test -> [Path]-tried :: Counts -> Int-type Assertion = IO ()-type AssertionPredicate = IO Bool-type Path = [Node]-type ReportProblem us = String -> State -> us -> IO us-type ReportStart us = State -> us -> IO us--module Test.HUnit.Lang-performTestCase :: Assertion -> IO (Maybe (Bool, String))--module Test.HUnit.Terminal-terminalAppearance :: String -> String--module Test.HUnit.Text-PutText :: (String -> Bool -> st -> IO st) -> st -> PutText st-data PutText st-putTextToHandle :: Handle -> Bool -> PutText Int-putTextToShowS :: PutText ShowS-runTestTT :: Test -> IO Counts-runTestText :: PutText st -> Test -> IO (Counts, st)-showCounts :: Counts -> String-showPath :: Path -> String--module Test.QuickCheck-(==>) :: Testable a => Bool -> a -> Property-Config :: Int -> Int -> Int -> Int -> Int -> [String] -> String -> Config-Result :: Maybe Bool -> [String] -> [String] -> Result-arbitrary :: Arbitrary a => Gen a-arguments :: Result -> [String]-check :: Testable a => Config -> a -> IO ()-choose :: Random a => (a, a) -> Gen a-class Arbitrary a-class Testable a-classify :: Testable a => Bool -> String -> a -> Property-coarbitrary :: Arbitrary a => a -> Gen b -> Gen b-collect :: (Show a, Testable b) => a -> b -> Property-configEvery :: Config -> Int -> [String] -> String-configMaxFail :: Config -> Int-configMaxTest :: Config -> Int-configSize :: Config -> Int -> Int-data Config-data Gen a-data Property-data Result-defaultConfig :: Config-elements :: [a] -> Gen a-evaluate :: Testable a => a -> Gen Result-forAll :: (Show a, Testable b) => Gen a -> (a -> b) -> Property-four :: Monad m => m a -> m (a, a, a, a)-frequency :: [(Int, Gen a)] -> Gen a-generate :: Int -> StdGen -> Gen a -> a-instance Functor Gen-instance Monad Gen-instance Testable Property-instance Testable Result-label :: Testable a => String -> a -> Property-ok :: Result -> Maybe Bool-oneof :: [Gen a] -> Gen a-promote :: (a -> Gen b) -> Gen (a -> b)-property :: Testable a => a -> Property-quickCheck :: Testable a => a -> IO ()-rand :: Gen StdGen-resize :: Int -> Gen a -> Gen a-sized :: (Int -> Gen a) -> Gen a-stamp :: Result -> [String]-test :: Testable a => a -> IO ()-three :: Monad m => m a -> m (a, a, a)-trivial :: Testable a => Bool -> a -> Property-two :: Monad m => m a -> m (a, a)-variant :: Int -> Gen a -> Gen a-vector :: Arbitrary a => Int -> Gen [a]-verboseCheck :: Testable a => a -> IO ()--module Test.QuickCheck.Batch-TestAborted :: Exception -> TestResult-TestExausted :: String -> Int -> [[String]] -> TestResult-TestFailed :: [String] -> Int -> TestResult-TestOk :: String -> Int -> [[String]] -> TestResult-TestOptions :: Int -> Int -> Bool -> TestOptions-bottom :: a-data TestOptions-data TestResult-debug_tests :: TestOptions -> Bool-defOpt :: TestOptions-isBottom :: a -> Bool-length_of_tests :: TestOptions -> Int-no_of_tests :: TestOptions -> Int-run :: Testable a => a -> TestOptions -> IO TestResult-runTests :: String -> TestOptions -> [TestOptions -> IO TestResult] -> IO ()--module Test.QuickCheck.Poly-type ALPHA = Poly ALPHA_-type BETA = Poly BETA_-type GAMMA = Poly GAMMA_-type OrdALPHA = Poly OrdALPHA_-type OrdBETA = Poly OrdBETA_-type OrdGAMMA = Poly OrdGAMMA_--module Test.QuickCheck.Utils-isAssociative :: (Arbitrary a, Show a, Eq a) => (a -> a -> a) -> Property-isAssociativeBy :: (Show a, Testable prop) => (a -> a -> prop) -> Gen a -> (a -> a -> a) -> Property-isCommutable :: (Arbitrary a, Show a, Eq b) => (a -> a -> b) -> Property-isCommutableBy :: (Show a, Testable prop) => (b -> b -> prop) -> Gen a -> (a -> a -> b) -> Property-isTotalOrder :: (Arbitrary a, Show a, Ord a) => a -> a -> Property--module Text.Html-(!) :: ADDATTRS a => a -> [HtmlAttr] -> a-(+++) :: (HTML a, HTML b) => a -> b -> Html-(<->) :: (HTMLTABLE ht1, HTMLTABLE ht2) => ht1 -> ht2 -> HtmlTable-(</>) :: (HTMLTABLE ht1, HTMLTABLE ht2) => ht1 -> ht2 -> HtmlTable-(<<) :: HTML a => (Html -> b) -> a -> b-HotLink :: URL -> [Html] -> [HtmlAttr] -> HotLink-Html :: [HtmlElement] -> Html-HtmlAttr :: String -> String -> HtmlAttr-HtmlLeaf :: Html -> HtmlTree-HtmlNode :: Html -> [HtmlTree] -> Html -> HtmlTree-HtmlString :: String -> HtmlElement-HtmlTable :: (BlockTable (Int -> Int -> Html)) -> HtmlTable-HtmlTag :: String -> [HtmlAttr] -> Html -> HtmlElement-above :: (HTMLTABLE ht1, HTMLTABLE ht2) => ht1 -> ht2 -> HtmlTable-aboves :: HTMLTABLE ht => [ht] -> HtmlTable-action :: String -> HtmlAttr-address :: Html -> Html-afile :: String -> Html-align :: String -> HtmlAttr-alink :: String -> HtmlAttr-alt :: String -> HtmlAttr-altcode :: String -> HtmlAttr-anchor :: Html -> Html-applet :: Html -> Html-aqua :: String-archive :: String -> HtmlAttr-area :: Html-background :: String -> HtmlAttr-base :: String -> HtmlAttr-basefont :: Html-beside :: (HTMLTABLE ht1, HTMLTABLE ht2) => ht1 -> ht2 -> HtmlTable-besides :: HTMLTABLE ht => [ht] -> HtmlTable-bgcolor :: String -> HtmlAttr-big :: Html -> Html-black :: String-blockquote :: Html -> Html-blue :: String-body :: Html -> Html-bold :: Html -> Html-border :: Int -> HtmlAttr-bordercolor :: String -> HtmlAttr-br :: Html-bullet :: Html-caption :: Html -> Html-cell :: HTMLTABLE ht => ht -> HtmlTable-cellpadding :: Int -> HtmlAttr-cellspacing :: Int -> HtmlAttr-center :: Html -> Html-checkbox :: String -> String -> Html-checked :: HtmlAttr-cite :: Html -> Html-class ADDATTRS a-class HTML a-class HTMLTABLE ht-clear :: String -> HtmlAttr-clickmap :: String -> Html-code :: String -> HtmlAttr-codebase :: String -> HtmlAttr-color :: String -> HtmlAttr-cols :: String -> HtmlAttr-colspan :: Int -> HtmlAttr-compact :: HtmlAttr-concatHtml :: HTML a => [a] -> Html-content :: String -> HtmlAttr-coords :: String -> HtmlAttr-copyright :: Html-data HotLink-data HtmlAttr-data HtmlElement-data HtmlTree-ddef :: Html -> Html-debugHtml :: HTML a => a -> Html-defList :: (HTML a, HTML b) => [(a, b)] -> Html-define :: Html -> Html-dlist :: Html -> Html-dterm :: Html -> Html-emphasize :: Html -> Html-emptyAttr :: String -> HtmlAttr-enctype :: String -> HtmlAttr-face :: String -> HtmlAttr-fieldset :: Html -> Html-font :: Html -> Html-form :: Html -> Html-frame :: Html -> Html-frameborder :: Int -> HtmlAttr-frameset :: Html -> Html-fuchsia :: String-getHtmlElements :: Html -> [HtmlElement]-gray :: String-green :: String-gui :: String -> Html -> Html-h1 :: Html -> Html-h2 :: Html -> Html-h3 :: Html -> Html-h4 :: Html -> Html-h5 :: Html -> Html-h6 :: Html -> Html-header :: Html -> Html-height :: Int -> HtmlAttr-hidden :: String -> String -> Html-hotLinkAttributes :: HotLink -> [HtmlAttr]-hotLinkContents :: HotLink -> [Html]-hotLinkURL :: HotLink -> URL-hotlink :: URL -> [Html] -> HotLink-hr :: Html-href :: String -> HtmlAttr-hspace :: Int -> HtmlAttr-httpequiv :: String -> HtmlAttr-identifier :: String -> HtmlAttr-image :: Html-input :: Html-instance ADDATTRS Html-instance HTML HotLink-instance HTML Html-instance HTML HtmlTable-instance HTML HtmlTree-instance HTMLTABLE Html-instance HTMLTABLE HtmlTable-instance Show HotLink-instance Show Html-instance Show HtmlAttr-instance Show HtmlTable-intAttr :: String -> Int -> HtmlAttr-ismap :: HtmlAttr-itag :: String -> Html-italics :: Html -> Html-keyboard :: Html -> Html-lang :: String -> HtmlAttr-legend :: Html -> Html-li :: Html -> Html-lime :: String-lineToHtml :: String -> Html-linesToHtml :: [String] -> Html-link :: String -> HtmlAttr-marginheight :: Int -> HtmlAttr-marginwidth :: Int -> HtmlAttr-markupAttrs :: HtmlElement -> [HtmlAttr]-markupContent :: HtmlElement -> Html-markupTag :: HtmlElement -> String-maroon :: String-maxlength :: Int -> HtmlAttr-menu :: String -> [Html] -> Html-meta :: Html-method :: String -> HtmlAttr-mkHtmlTable :: BlockTable (Int -> Int -> Html) -> HtmlTable-multiple :: HtmlAttr-name :: String -> HtmlAttr-navy :: String-newtype Html-newtype HtmlTable-noHtml :: Html-noframes :: Html -> Html-nohref :: HtmlAttr-noresize :: HtmlAttr-noshade :: HtmlAttr-nowrap :: HtmlAttr-olist :: Html -> Html-olive :: String-option :: Html -> Html-ordList :: HTML a => [a] -> Html-p :: Html -> Html-paragraph :: Html -> Html-param :: Html-password :: String -> Html-pre :: Html -> Html-prettyHtml :: HTML html => html -> String-prettyHtml' :: HtmlElement -> [String]-primHtml :: String -> Html-primHtmlChar :: String -> Html-purple :: String-radio :: String -> String -> Html-red :: String-rel :: String -> HtmlAttr-renderHtml :: HTML html => html -> String-renderHtml' :: Int -> HtmlElement -> ShowS-renderTable :: BlockTable (Int -> Int -> Html) -> Html-renderTag :: Bool -> String -> [HtmlAttr] -> Int -> ShowS-reset :: String -> String -> Html-rev :: String -> HtmlAttr-rows :: String -> HtmlAttr-rowspan :: Int -> HtmlAttr-rules :: String -> HtmlAttr-sample :: Html -> Html-scrolling :: String -> HtmlAttr-select :: Html -> Html-selected :: HtmlAttr-shape :: String -> HtmlAttr-silver :: String-simpleTable :: [HtmlAttr] -> [HtmlAttr] -> [[Html]] -> Html-size :: String -> HtmlAttr-small :: Html -> Html-spaceHtml :: Html-src :: String -> HtmlAttr-start :: Int -> HtmlAttr-strAttr :: String -> String -> HtmlAttr-stringToHtml :: String -> Html-stringToHtmlString :: String -> String-strong :: Html -> Html-style :: Html -> Html-sub :: Html -> Html-submit :: String -> String -> Html-sup :: Html -> Html-table :: Html -> Html-tag :: String -> Html -> Html-target :: String -> HtmlAttr-td :: Html -> Html-teal :: String-text :: String -> HtmlAttr-textarea :: Html -> Html-textfield :: String -> Html-th :: Html -> Html-thebase :: Html-theclass :: String -> HtmlAttr-thecode :: Html -> Html-thediv :: Html -> Html-thehtml :: Html -> Html-thelink :: Html -> Html-themap :: Html -> Html-thespan :: Html -> Html-thestyle :: String -> HtmlAttr-thetitle :: Html -> Html-thetype :: String -> HtmlAttr-title :: String -> HtmlAttr-toHtml :: HTML a => a -> Html-toHtmlFromList :: HTML a => [a] -> Html-tr :: Html -> Html-treeHtml :: [String] -> HtmlTree -> Html-tt :: Html -> Html-type URL = String-ulist :: Html -> Html-underline :: Html -> Html-unordList :: HTML a => [a] -> Html-usemap :: String -> HtmlAttr-validHtmlAttrs :: [String]-validHtmlITags :: [String]-validHtmlTags :: [String]-valign :: String -> HtmlAttr-value :: String -> HtmlAttr-variable :: Html -> Html-version :: String -> HtmlAttr-vlink :: String -> HtmlAttr-vspace :: Int -> HtmlAttr-white :: String-widget :: String -> String -> [HtmlAttr] -> Html-width :: String -> HtmlAttr-yellow :: String--module Text.Html.BlockTable-above :: BlockTable a -> BlockTable a -> BlockTable a-beside :: BlockTable a -> BlockTable a -> BlockTable a-data BlockTable a-getMatrix :: BlockTable a -> [[(a, (Int, Int))]]-instance Show a => Show (BlockTable a)-showTable :: Show a => BlockTable a -> String-showsTable :: Show a => BlockTable a -> ShowS-single :: a -> BlockTable a--module Text.ParserCombinators.Parsec-data ParseError-data SourcePos-errorPos :: ParseError -> SourcePos-incSourceColumn :: SourcePos -> Column -> SourcePos-incSourceLine :: SourcePos -> Line -> SourcePos-instance Eq SourcePos-instance Ord SourcePos-instance Show ParseError-instance Show SourcePos-setSourceColumn :: SourcePos -> Column -> SourcePos-setSourceLine :: SourcePos -> Line -> SourcePos-setSourceName :: SourcePos -> SourceName -> SourcePos-sourceColumn :: SourcePos -> Column-sourceLine :: SourcePos -> Line-sourceName :: SourcePos -> SourceName-type Column = Int-type Line = Int-type SourceName = String--module Text.ParserCombinators.Parsec.Char-alphaNum :: CharParser st Char-anyChar :: CharParser st Char-char :: Char -> CharParser st Char-digit :: CharParser st Char-hexDigit :: CharParser st Char-letter :: CharParser st Char-lower :: CharParser st Char-newline :: CharParser st Char-noneOf :: [Char] -> CharParser st Char-octDigit :: CharParser st Char-oneOf :: [Char] -> CharParser st Char-satisfy :: (Char -> Bool) -> CharParser st Char-space :: CharParser st Char-spaces :: CharParser st ()-string :: String -> CharParser st String-tab :: CharParser st Char-type CharParser st a = GenParser Char st a-upper :: CharParser st Char--module Text.ParserCombinators.Parsec.Combinator-anyToken :: Show tok => GenParser tok st tok-between :: GenParser tok st open -> GenParser tok st close -> GenParser tok st a -> GenParser tok st a-chainl :: GenParser tok st a -> GenParser tok st (a -> a -> a) -> a -> GenParser tok st a-chainl1 :: GenParser tok st a -> GenParser tok st (a -> a -> a) -> GenParser tok st a-chainr :: GenParser tok st a -> GenParser tok st (a -> a -> a) -> a -> GenParser tok st a-chainr1 :: GenParser tok st a -> GenParser tok st (a -> a -> a) -> GenParser tok st a-choice :: [GenParser tok st a] -> GenParser tok st a-count :: Int -> GenParser tok st a -> GenParser tok st [a]-endBy :: GenParser tok st a -> GenParser tok st sep -> GenParser tok st [a]-endBy1 :: GenParser tok st a -> GenParser tok st sep -> GenParser tok st [a]-eof :: Show tok => GenParser tok st ()-lookAhead :: GenParser tok st a -> GenParser tok st a-many1 :: GenParser tok st a -> GenParser tok st [a]-manyTill :: GenParser tok st a -> GenParser tok st end -> GenParser tok st [a]-notFollowedBy :: Show tok => GenParser tok st tok -> GenParser tok st ()-option :: a -> GenParser tok st a -> GenParser tok st a-optional :: GenParser tok st a -> GenParser tok st ()-sepBy :: GenParser tok st a -> GenParser tok st sep -> GenParser tok st [a]-sepBy1 :: GenParser tok st a -> GenParser tok st sep -> GenParser tok st [a]-sepEndBy :: GenParser tok st a -> GenParser tok st sep -> GenParser tok st [a]-sepEndBy1 :: GenParser tok st a -> GenParser tok st sep -> GenParser tok st [a]-skipMany1 :: GenParser tok st a -> GenParser tok st ()--module Text.ParserCombinators.Parsec.Error-Expect :: !String -> Message-Message :: !String -> Message-SysUnExpect :: !String -> Message-UnExpect :: !String -> Message-addErrorMessage :: Message -> ParseError -> ParseError-data Message-errorIsUnknown :: ParseError -> Bool-errorMessages :: ParseError -> [Message]-mergeError :: ParseError -> ParseError -> ParseError-messageCompare :: Message -> Message -> Ordering-messageEq :: Message -> Message -> Bool-messageString :: Message -> String-newErrorMessage :: Message -> SourcePos -> ParseError-newErrorUnknown :: SourcePos -> ParseError-setErrorMessage :: Message -> ParseError -> ParseError-setErrorPos :: SourcePos -> ParseError -> ParseError-showErrorMessages :: String -> String -> String -> String -> String -> [Message] -> String--module Text.ParserCombinators.Parsec.Expr-AssocLeft :: Assoc-AssocNone :: Assoc-AssocRight :: Assoc-Infix :: (GenParser t st (a -> a -> a)) -> Assoc -> Operator t st a-Postfix :: (GenParser t st (a -> a)) -> Operator t st a-Prefix :: (GenParser t st (a -> a)) -> Operator t st a-buildExpressionParser :: OperatorTable tok st a -> GenParser tok st a -> GenParser tok st a-data Assoc-data Operator t st a-type OperatorTable t st a = [[Operator t st a]]--module Text.ParserCombinators.Parsec.Language-LanguageDef :: String -> String -> String -> Bool -> CharParser st Char -> CharParser st Char -> CharParser st Char -> CharParser st Char -> [String] -> [String] -> Bool -> LanguageDef st-caseSensitive :: LanguageDef st -> Bool-commentEnd :: LanguageDef st -> String-commentLine :: LanguageDef st -> String-commentStart :: LanguageDef st -> String-data LanguageDef st-emptyDef :: LanguageDef st-haskell :: TokenParser st-haskellDef :: LanguageDef st-haskellStyle :: LanguageDef st-identLetter :: LanguageDef st -> CharParser st Char-identStart :: LanguageDef st -> CharParser st Char-javaStyle :: LanguageDef st-mondrian :: TokenParser st-mondrianDef :: LanguageDef st-nestedComments :: LanguageDef st -> Bool-opLetter :: LanguageDef st -> CharParser st Char-opStart :: LanguageDef st -> CharParser st Char-reservedNames :: LanguageDef st -> [String]-reservedOpNames :: LanguageDef st -> [String]--module Text.ParserCombinators.Parsec.Perm-(<$$>) :: (a -> b) -> GenParser tok st a -> PermParser tok st b-(<$?>) :: (a -> b) -> (a, GenParser tok st a) -> PermParser tok st b-(<|?>) :: PermParser tok st (a -> b) -> (a, GenParser tok st a) -> PermParser tok st b-(<||>) :: PermParser tok st (a -> b) -> GenParser tok st a -> PermParser tok st b-data PermParser tok st a-permute :: PermParser tok st a -> GenParser tok st a--module Text.ParserCombinators.Parsec.Pos-initialPos :: SourceName -> SourcePos-newPos :: SourceName -> Line -> Column -> SourcePos-updatePosChar :: SourcePos -> Char -> SourcePos-updatePosString :: SourcePos -> String -> SourcePos--module Text.ParserCombinators.Parsec.Prim-(<?>) :: GenParser tok st a -> String -> GenParser tok st a-(<|>) :: GenParser tok st a -> GenParser tok st a -> GenParser tok st a-State :: [tok] -> !SourcePos -> !st -> State tok st-data GenParser tok st a-data State tok st-getInput :: GenParser tok st [tok]-getParserState :: GenParser tok st (State tok st)-getPosition :: GenParser tok st SourcePos-getState :: GenParser tok st st-instance Functor (GenParser tok st)-instance Monad (GenParser tok st)-instance MonadPlus (GenParser tok st)-label :: GenParser tok st a -> String -> GenParser tok st a-labels :: GenParser tok st a -> [String] -> GenParser tok st a-many :: GenParser tok st a -> GenParser tok st [a]-parse :: GenParser tok () a -> SourceName -> [tok] -> Either ParseError a-parseFromFile :: Parser a -> SourceName -> IO (Either ParseError a)-parseTest :: Show a => GenParser tok () a -> [tok] -> IO ()-pzero :: GenParser tok st a-runParser :: GenParser tok st a -> st -> SourceName -> [tok] -> Either ParseError a-setInput :: [tok] -> GenParser tok st ()-setParserState :: State tok st -> GenParser tok st (State tok st)-setPosition :: SourcePos -> GenParser tok st ()-setState :: st -> GenParser tok st ()-skipMany :: GenParser tok st a -> GenParser tok st ()-stateInput :: State tok st -> [tok]-statePos :: State tok st -> !SourcePos-stateUser :: State tok st -> !st-token :: (tok -> String) -> (tok -> SourcePos) -> (tok -> Maybe a) -> GenParser tok st a-tokenPrim :: (tok -> String) -> (SourcePos -> tok -> [tok] -> SourcePos) -> (tok -> Maybe a) -> GenParser tok st a-tokenPrimEx :: (tok -> String) -> (SourcePos -> tok -> [tok] -> SourcePos) -> Maybe (SourcePos -> tok -> [tok] -> st -> st) -> (tok -> Maybe a) -> GenParser tok st a-tokens :: Eq tok => ([tok] -> String) -> (SourcePos -> [tok] -> SourcePos) -> [tok] -> GenParser tok st [tok]-try :: GenParser tok st a -> GenParser tok st a-type Parser a = GenParser Char () a-unexpected :: String -> GenParser tok st a-updateState :: (st -> st) -> GenParser tok st ()--module Text.ParserCombinators.Parsec.Token-TokenParser :: CharParser st String -> (String -> CharParser st ()) -> CharParser st String -> (String -> CharParser st ()) -> CharParser st Char -> CharParser st String -> CharParser st Integer -> CharParser st Integer -> CharParser st Double -> (CharParser st (Either Integer Double)) -> CharParser st Integer -> CharParser st Integer -> CharParser st Integer -> String -> CharParser st String -> CharParser st a -> CharParser st a -> (CharParser st ()) -> CharParser st a -> CharParser st a -> CharParser st a -> CharParser st a -> CharParser st a -> CharParser st a -> CharParser st a -> CharParser st a -> CharParser st a -> CharParser st a -> CharParser st String -> CharParser st String -> CharParser st String -> CharParser st String -> CharParser st a -> CharParser st [a] -> CharParser st a -> CharParser st [a] -> CharParser st a -> CharParser st [a] -> CharParser st a -> CharParser st [a] -> TokenParser st-angles :: TokenParser st -> CharParser st a -> CharParser st a-braces :: TokenParser st -> CharParser st a -> CharParser st a-brackets :: TokenParser st -> CharParser st a -> CharParser st a-charLiteral :: TokenParser st -> CharParser st Char-colon :: TokenParser st -> CharParser st String-comma :: TokenParser st -> CharParser st String-commaSep :: TokenParser st -> CharParser st a -> CharParser st [a]-commaSep1 :: TokenParser st -> CharParser st a -> CharParser st [a]-data TokenParser st-decimal :: TokenParser st -> CharParser st Integer-dot :: TokenParser st -> CharParser st String-float :: TokenParser st -> CharParser st Double-hexadecimal :: TokenParser st -> CharParser st Integer-identifier :: TokenParser st -> CharParser st String-integer :: TokenParser st -> CharParser st Integer-lexeme :: TokenParser st -> CharParser st a -> CharParser st a-makeTokenParser :: LanguageDef st -> TokenParser st-natural :: TokenParser st -> CharParser st Integer-naturalOrFloat :: TokenParser st -> (CharParser st (Either Integer Double))-octal :: TokenParser st -> CharParser st Integer-operator :: TokenParser st -> CharParser st String-parens :: TokenParser st -> CharParser st a -> CharParser st a-reserved :: TokenParser st -> (String -> CharParser st ())-reservedOp :: TokenParser st -> (String -> CharParser st ())-semi :: TokenParser st -> CharParser st String-semiSep :: TokenParser st -> CharParser st a -> CharParser st [a]-semiSep1 :: TokenParser st -> CharParser st a -> CharParser st [a]-squares :: TokenParser st -> CharParser st a -> CharParser st a-stringLiteral :: TokenParser st -> CharParser st String-symbol :: TokenParser st -> String -> CharParser st String-whiteSpace :: TokenParser st -> (CharParser st ())--module Text.ParserCombinators.ReadP-(+++) :: ReadP a -> ReadP a -> ReadP a-(<++) :: ReadP a -> ReadP a -> ReadP a-between :: ReadP open -> ReadP close -> ReadP a -> ReadP a-chainl :: ReadP a -> ReadP (a -> a -> a) -> a -> ReadP a-chainl1 :: ReadP a -> ReadP (a -> a -> a) -> ReadP a-chainr :: ReadP a -> ReadP (a -> a -> a) -> a -> ReadP a-chainr1 :: ReadP a -> ReadP (a -> a -> a) -> ReadP a-char :: Char -> ReadP Char-choice :: [ReadP a] -> ReadP a-count :: Int -> ReadP a -> ReadP [a]-data ReadP a-endBy :: ReadP a -> ReadP sep -> ReadP [a]-endBy1 :: ReadP a -> ReadP sep -> ReadP [a]-gather :: ReadP a -> ReadP (String, a)-get :: ReadP Char-instance Functor ReadP-instance Monad ReadP-instance MonadPlus ReadP-look :: ReadP String-many :: ReadP a -> ReadP [a]-many1 :: ReadP a -> ReadP [a]-manyTill :: ReadP a -> ReadP end -> ReadP [a]-munch :: (Char -> Bool) -> ReadP String-munch1 :: (Char -> Bool) -> ReadP String-option :: a -> ReadP a -> ReadP a-optional :: ReadP a -> ReadP ()-pfail :: ReadP a-readP_to_S :: ReadP a -> ReadS a-readS_to_P :: ReadS a -> ReadP a-satisfy :: (Char -> Bool) -> ReadP Char-sepBy :: ReadP a -> ReadP sep -> ReadP [a]-sepBy1 :: ReadP a -> ReadP sep -> ReadP [a]-skipMany :: ReadP a -> ReadP ()-skipMany1 :: ReadP a -> ReadP ()-skipSpaces :: ReadP ()-string :: String -> ReadP String--module Text.ParserCombinators.ReadPrec-(+++) :: ReadPrec a -> ReadPrec a -> ReadPrec a-(<++) :: ReadPrec a -> ReadPrec a -> ReadPrec a-choice :: [ReadPrec a] -> ReadPrec a-data ReadPrec a-get :: ReadPrec Char-instance Functor ReadPrec-instance Monad ReadPrec-instance MonadPlus ReadPrec-lift :: ReadP a -> ReadPrec a-look :: ReadPrec String-minPrec :: Prec-pfail :: ReadPrec a-prec :: Prec -> ReadPrec a -> ReadPrec a-readP_to_Prec :: (Int -> ReadP a) -> ReadPrec a-readPrec_to_P :: ReadPrec a -> Int -> ReadP a-readPrec_to_S :: ReadPrec a -> Int -> ReadS a-readS_to_Prec :: (Int -> ReadS a) -> ReadPrec a-reset :: ReadPrec a -> ReadPrec a-step :: ReadPrec a -> ReadPrec a-type Prec = Int--module Text.PrettyPrint.HughesPJ-($$) :: Doc -> Doc -> Doc-($+$) :: Doc -> Doc -> Doc-(<+>) :: Doc -> Doc -> Doc-(<>) :: Doc -> Doc -> Doc-Chr :: Char -> TextDetails-LeftMode :: Mode-OneLineMode :: Mode-PStr :: String -> TextDetails-PageMode :: Mode-Str :: String -> TextDetails-Style :: Mode -> Int -> Float -> Style-ZigZagMode :: Mode-braces :: Doc -> Doc-brackets :: Doc -> Doc-cat :: [Doc] -> Doc-char :: Char -> Doc-colon :: Doc-comma :: Doc-data Doc-data Mode-data Style-data TextDetails-double :: Double -> Doc-doubleQuotes :: Doc -> Doc-empty :: Doc-equals :: Doc-fcat :: [Doc] -> Doc-float :: Float -> Doc-fsep :: [Doc] -> Doc-fullRender :: Mode -> Int -> Float -> (TextDetails -> a -> a) -> a -> Doc -> a-hang :: Doc -> Int -> Doc -> Doc-hcat :: [Doc] -> Doc-hsep :: [Doc] -> Doc-instance Show Doc-int :: Int -> Doc-integer :: Integer -> Doc-isEmpty :: Doc -> Bool-lbrace :: Doc-lbrack :: Doc-lineLength :: Style -> Int-lparen :: Doc-mode :: Style -> Mode-nest :: Int -> Doc -> Doc-parens :: Doc -> Doc-ptext :: String -> Doc-punctuate :: Doc -> [Doc] -> [Doc]-quotes :: Doc -> Doc-rational :: Rational -> Doc-rbrace :: Doc-rbrack :: Doc-render :: Doc -> String-renderStyle :: Style -> Doc -> String-ribbonsPerLine :: Style -> Float-rparen :: Doc-semi :: Doc-sep :: [Doc] -> Doc-space :: Doc-style :: Style-text :: String -> Doc-vcat :: [Doc] -> Doc--module Text.Printf-class HPrint-class I-class Prin-class Print-hPrintf :: HPrintfType r => Handle -> String -> r-printf :: PrintfType r => String -> r--module Text.Read-Char :: Char -> Lexeme-EOF :: Lexeme-Ident :: String -> Lexeme-Int :: Integer -> Lexeme-Punc :: String -> Lexeme-Rat :: Rational -> Lexeme-String :: String -> Lexeme-Symbol :: String -> Lexeme-data Lexeme-instance Eq Lexeme-instance Read Lexeme-instance Show Lexeme-lexP :: ReadPrec Lexeme-readListDefault :: Read a => ReadS [a]-readListPrec :: Read a => ReadPrec [a]-readListPrecDefault :: Read a => ReadPrec [a]-readPrec :: Read a => ReadPrec a--module Text.Read.Lex-hsLex :: ReadP String-lex :: ReadP Lexeme-lexChar :: ReadP Char-readDecP :: Num a => ReadP a-readHexP :: Num a => ReadP a-readIntP :: Num a => a -> (Char -> Bool) -> (Char -> Int) -> ReadP a-readOctP :: Num a => ReadP a--module Text.Regex-data Regex-matchRegex :: Regex -> String -> Maybe [String]-matchRegexAll :: Regex -> String -> Maybe (String, String, String, [String])-mkRegex :: String -> Regex-mkRegexWithOpts :: String -> Bool -> Bool -> Regex-splitRegex :: Regex -> String -> [String]-subRegex :: Regex -> String -> String -> String--module Text.Regex.Posix-regExtended :: Int-regIgnoreCase :: Int-regNewline :: Int-regcomp :: String -> Int -> IO Regex-regexec :: Regex -> String -> IO (Maybe (String, String, String, [String]))--module Text.Show-showListWith :: (a -> ShowS) -> [a] -> ShowS--module Time-addToClockTime :: TimeDiff -> ClockTime -> ClockTime-calendarTimeToString :: CalendarTime -> String-diffClockTimes :: ClockTime -> ClockTime -> TimeDiff-formatCalendarTime :: TimeLocale -> String -> CalendarTime -> String-getClockTime :: IO ClockTime-toCalendarTime :: ClockTime -> IO CalendarTime-toClockTime :: CalendarTime -> ClockTime-toUTCTime :: ClockTime -> CalendarTime
− scripts/hoogle/test/data/Makefile
@@ -1,17 +0,0 @@-#
-# Simple Makefile for tests
-#
-
-GHC=            ghc
-HC_OPTS=        -O
-
-.PHONY: all
-
-all: runtests
-
-runtests: 
-	$(GHC) $(HC_OPTS) --make -o $@ runtests.hs
-
-clean:
-	rm -rf hihoo hadhtml runtests
-	find . -name '*.hi' -o -name '*.o' | xargs rm -rf
− scripts/hoogle/test/data/build-hadhtml.bat
@@ -1,5 +0,0 @@-pushd ..\..\data\hadhtml
-ghc --make Main -o hadhtml.exe
-popd
-copy ..\..\data\hadhtml\hadhtml.exe hadhtml.exe
-
− scripts/hoogle/test/data/examples/Basic.hoo
@@ -1,11 +0,0 @@-module Basic
-func1 :: a -> a
-func2 :: Bool -> Int
-func3 :: [a] -> [a]
-func4 :: (a -> b) -> [a] -> [b]
-data Data1 a
-Data2 :: Data1 a
-Data3 :: a -> Data1 a
-data Data4
-Data5 :: Int -> Bool -> Data4
-
− scripts/hoogle/test/data/examples/Basic.hs
@@ -1,27 +0,0 @@-
--- | Some basic examples
-
-module Basic where
-
-
-func1 :: a -> a
-func1 x = x
-
-
-func2 :: Bool -> Int
-func2 True  = 1
-func2 False = 0
-
-
-func3 :: [a] -> [a]
-func3 x = reverse x
-
-
-func4 :: (a -> b) -> [a] -> [b]
-func4 f x = map f x
-
-
-data Data1 a = Data2 | Data3 a
-
-
-data Data4 = Data5 Int Bool
− scripts/hoogle/test/data/examples/Classes.hoo
@@ -1,10 +0,0 @@-module Classes
-data Data1
-Data1 :: Data1
-instance Class1 Data1
-instance Eq Data1
-instance Show Data1
-class Class1 x
-func1 :: Class1 x => x -> Bool
-func2 :: Class1 x => x -> x -> x
-func3 :: Class1 x => x -> x -> Bool
− scripts/hoogle/test/data/examples/Classes.hs
@@ -1,26 +0,0 @@-
--- basic class/instance definitions
-
-module Classes where
-
-
-data Data1 = Data1
-             deriving Eq
-             
-
-instance Show Data1 where
-    show x = ""
-
-
-class Class1 x where
-    func1 :: x -> Bool
-    func2 :: x -> x -> x
-    
-    func3 :: x -> x -> Bool
-    func3 a b = func1 a && func1 b
-
-
-instance Class1 Data1 where
-    func1 = error "todo"
-    func2 = error "todo"
-
− scripts/hoogle/test/data/examples/ClassesEx.hoo
@@ -1,17 +0,0 @@-
-module ClassesEx
-class Class1 a
-func1 :: Class1 a => a -> Bool
-class Class1 a => Class2 a
-func2 :: Class2 a => a -> Bool
-data Data1
-Data1 :: Data1
-instance Class1 Data1
-instance Class2 Data1
-data Data2 a
-Data2 :: a -> Data2 a
-instance Class1 (Data2 a)
-instance Eq a => Class2 (Data2 a)
-func3 :: Class1 a => a -> Bool
-func4 :: (Eq a, Class2 a) => a -> Bool
-func5 :: (Class1 a, Class2 b) => a -> b -> Bool
− scripts/hoogle/test/data/examples/ClassesEx.hs
@@ -1,37 +0,0 @@-
-module ClassesEx where
-
-
-class Class1 a where
-    func1 :: a -> Bool
-    
-class Class1 a => Class2 a where
-    func2 :: a -> Bool
-
-
-data Data1 = Data1
-
-data Data2 a = Data2 a
-
-
-instance Class1 Data1 where
-    func1 a = True
-
-instance Class2 Data1 where
-    func2 a = False
-
-instance Class1 (Data2 a) where
-    func1 a = True
-
-instance Eq a => Class2 (Data2 a) where
-    func2 a = True
-
-
-func3 :: Class1 a => a -> Bool
-func3 x = func1 x
-
-func4 :: (Eq a, Class2 a) => a -> Bool
-func4 x = True
-
-func5 :: (Class1 a, Class2 b) => a -> b -> Bool
-func5 x y = True
− scripts/hoogle/test/data/examples/Data.hoo
@@ -1,11 +0,0 @@-module Data
-data Data1 a
-Data2 :: a -> Int -> Data1 a
-func1 :: Data1 a -> a
-func2 :: Data1 a -> Int
-Data3 :: Bool -> a -> Data1 a
-func3 :: Data1 a -> Bool
-Data4 :: Data1 a
-type Type1 = Data1 Bool
-newtype Data5 a
-Data6 :: a -> Data5 a
− scripts/hoogle/test/data/examples/Data.hs
@@ -1,17 +0,0 @@-
--- | More complex tests involving data
-
-module Data where
-
-
-data Data1 a = Data2 {func1 :: a, func2 :: Int}
-             | Data3 {func3 :: Bool, func1 :: a}
-             | Data4
-
-
-type Type1 = Data1 Bool
-
-
-newtype Data5 a = Data6 a
-
-
− scripts/hoogle/test/data/examples/GhcExts.hoo
@@ -1,18 +0,0 @@-
-module GhcExts
-data Data1
-Data2 :: a -> (a -> Bool) -> Data1
-Data3 :: Data1
-data Baz
-Baz1 :: Eq a => a -> a -> Baz
-Baz2 :: Show b => b -> (b -> b) -> Baz
-class Seq s a
-element :: (Seq s a, Eq a) => a -> s a -> Bool
-class Foo a b c 
-none :: Foo a b c => c -> Bool
-func1 :: Int# -> Float#
-func2 :: a -> b -> a
-func3 :: (Ord a, Eq  b) => a -> b -> a
-func4 :: (a -> a) -> Int -> Int
-func5 :: Eq a => ([a] -> a -> Bool) -> Int -> Int
-func6 :: ((a -> a) -> Int) -> Bool -> Bool
− scripts/hoogle/test/data/examples/GhcExts.hs
@@ -1,41 +0,0 @@-{-# OPTIONS_GHC -fglasgow-exts #-}
-
-module GhcExts where
-
-import GHC.Exts
-
-
-data Data1 = forall a. Data2 a (a -> Bool)
-         | Data3
-         
-
-data Baz = forall a. Eq a => Baz1 a a
-         | forall b. Show b => Baz2 b (b -> b)
-         
-         
-class Seq s a where
-    element :: Eq a => a -> s a -> Bool
-
-
-class Foo a b c | a b -> c where
-    none :: c -> Bool
-
-
-func1 :: Int# -> Float#
-func1 = error ""
-
-func2 :: forall a b. a -> b -> a
-func2 = error ""
-
-func3 :: forall a b. (Ord a, Eq  b) => a -> b -> a
-func3 = error ""
-
-func4 :: (forall a. a->a) -> Int -> Int
-func4 = error ""
-
-func5 :: (forall a. Eq a => [a] -> a -> Bool) -> Int -> Int
-func5 f = error ""
-
-func6 :: ((forall a. a->a) -> Int) -> Bool -> Bool
-func6 f = error ""
-
− scripts/hoogle/test/data/examples/Operators.hoo
@@ -1,9 +0,0 @@--- Generated by Hoogle, from Haddock HTML
--- (C) Neil Mitchell 2005
-
-module Operators
-(++++) :: a -> a -> Bool
-(***) :: a -> b -> Bool
-data Data1 a
-(:|:) :: a -> a -> Data1 a
-Data2 :: Data1 a
− scripts/hoogle/test/data/examples/Operators.hs
@@ -1,15 +0,0 @@-
--- | Some basic tests with operators
-
-module Operators where
-
-
-(++++) :: a -> a -> Bool
-a ++++ b = True
-
-
-(***) :: a -> b -> Bool
-a *** b = True
-
-
-data Data1 a = a :|: a | Data2
− scripts/hoogle/test/data/gen-hadhtml.bat
@@ -1,7 +0,0 @@-REM %1 is the name of the file to convert
-
-md hadhtml
-md hadhtml\%1
-haddock examples\%1.hs --odir=hadhtml\%1 -h
-hadhtml hadhtml\%1\%1.html
-move hoogle.txt hadhtml\%1.hoo
− scripts/hoogle/test/data/gen-hihoo.bat
@@ -1,6 +0,0 @@-REM %1 is the name of the file to convert
-
-md hihoo
-md hihoo\%1
-ghc -odir hihoo\%1 -hidir hihoo\%1 -c examples\%1.hs
-perl ..\..\data\hihoo\hihoo.pl hihoo\%1\%1.hi > hihoo\%1.hoo
− scripts/hoogle/test/data/gen-hihoo.sh
@@ -1,8 +0,0 @@-#!/bin/sh
-
-if [ "x$1" = "x" ] ; then echo "usage: $0 FILE" ; exit 1 ; fi
-
-mkdir hihoo
-mkdir hihoo/$1
-ghc -odir hihoo/$1 -hidir hihoo/$1 -c examples/$1.hs
-perl ../../data/hihoo/hihoo.pl hihoo/$1/$1.hi > hihoo/$1.hoo
− scripts/hoogle/test/data/runtests.hs
@@ -1,99 +0,0 @@-
-module Main where
-
-import System
-import Directory
-import List
-
-main = do x <- getArgs
-          if null x
-             then error "Expected name of data to test against, i.e. hadhtml, hihoo"
-             else exec (head x)
-
-
-exec :: String -> IO ()
-exec x = do tests <- gatherTests
-            mapM_ (clearTest x) tests
-            putStrLn "== Generating documentation =="
-            mapM_ (runTest x) tests
-            putStrLn "== Checking generated docs =="
-            mapM_ (checkTest x) tests
-
-
-genHooName mode test = mode ++ "/" ++ test ++ ".hoo"
-
-origHooName test = genHooName "examples" test
-
-
-
-
-gatherTests :: IO [String]
-gatherTests = do xs <- getDirectoryContents "examples"
-                 return $ [take (length x - 3) x | x <- xs, ".hs" `isSuffixOf` x]
-
-
-clearTest :: String -> String -> IO ()
-clearTest mode test = do b <- doesFileExist file
-                         if b then removeFile file else return ()
-    where file = genHooName mode test
-
-
-isWindows :: IO Bool
-isWindows = do x <- getEnv "PATH"
-               return $ null x || head x /= '/'
-
-
-command x = do res <- isWindows
-               return $ if res
-                  then x ++ ".bat"
-                  else "./" ++ x ++ ".sh"
-
-
-runTest :: String -> String -> IO ()
-runTest mode test = do cmd <- command ("gen-" ++ mode)
-                       system $ cmd ++ " " ++ test
-                       return ()
-
-
-checkTest :: String -> String -> IO ()
-checkTest mode test = do gen <- readFile $ genHooName mode test
-                         orig <- readFile $ origHooName test
-                         let res = compareHoo (lines gen) (lines orig)
-                         if null res
-                            then putStrLn $ "Passed (" ++ test ++ ")"
-                            else putStrLn $ "FAILED " ++ show (length res) ++
-                                            " (" ++ test ++ ")\n" ++
-                                            unlines res
-                                    
-
-compareHoo :: [String] -> [String] -> [String]
-compareHoo a b = map ('+':) (diff eqLine a2 b2) ++ map ('-':) (diff eqLine b2 a2)
-    where
-        a2 = map saneLine $ filter usefulLine a
-        b2 = map saneLine $ filter usefulLine b
-
-
--- list out those items in the first list that are not in the second list
--- do not allow entries to be reused from the second list
-diff :: (a -> a -> Bool) -> [a] -> [a] -> [a]
-diff eq a b = f a [] b
-    where
-        f [] _ _ = []
-        f (a:as) done (b:bs) | eq a b = f as [] (done ++ bs)
-                             | otherwise = f (a:as) (b:done) bs
-        f (a:as) done [] = a : f as [] done
-
-
-usefulLine ('-':'-':_) = False
-usefulLine [] = False
-usefulLine _ = True
-
-
-saneLine (' ':' ':xs) = saneLine (' ':xs)
-saneLine [' '] = []
-saneLine (x:xs) = x : saneLine xs
-saneLine [] = []
-
-
-eqLine :: String -> String -> Bool
-eqLine a b = a == b
− scripts/hoogle/web/about.htm
@@ -1,38 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-		<link href="res/hoogle.css" rel="stylesheet" type="text/css" />
-		<title>Hoogle - About</title>
-	</head>
-	<body id="about">
-
-<div id="logo">
-	<a href=".">
-		<img src="res/hoogle_small.png" alt="Hoogle" />
-	</a>
-</div>
-
-<h1>About</h1>
-
-<h2>Acknowledgements</h2>
-
-<p>
-	The code is all &copy; <a href="http://www.cs.york.ac.uk/~ndm/">Neil Mitchell</a> 2004-2005. The initial version was done in my own time, and further refinement and reimplementation was done as part of my PhD. Various people gave lots of useful ideas, including my supervisor <a href="http://www.cs.york.ac.uk/~colin/">Colin Runciman</a>, and various members of the <a href="http://www.cs.york.ac.uk/plasma/">Plasma group</a>. In addition the following people have also contributed some code:
-</p>
-<ul>
-	<li><a href="http://www.cs.kent.ac.uk/people/rpg/tatd2/">Thomas "Bob" Davie</a></li>
-	<li><a href="http://www.cse.unsw.edu.au/~dons/">Donald Bruce Stewart</a></li>
-	<li>Thomas J&auml;ger</li>
-	<li><a href="http://gaal.livejournal.com/">Gaal Yahas</a></li>
-	<li><a href="http://www-users.cs.york.ac.uk/~miked/">Mike Dodds</a></li>
-</ul>
-
-<h2>The Data</h2>
-
-<p>
-	In previous versions, all the data was taken from <a href="http://www.zvon.org/other/haskell/Outputglobal/">Zvon's Haskell Guide</a>. Thanks to their open and friendly policy of allowing the data to be reused, this project became possible. More recent versions use the Hierarchical Libraries as distributed with GHC.
-</p>
-
-	</body>
-</html>
− scripts/hoogle/web/academics.htm
@@ -1,41 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-		<link href="res/hoogle.css" rel="stylesheet" type="text/css" />
-		<title>Hoogle - Academics</title>
-	</head>
-	<body id="acad">
-
-<div id="logo">
-	<a href=".">
-		<img src="res/hoogle_small.png" alt="Hoogle" />
-	</a>
-</div>
-
-<h1>Academics</h1>
-
-
-<h2>Sponsorship</h2>
-
-<p>
-	The main author is a PhD student supported by a studentship from the Engineering and Physical Sciences Research Council of the UK.
-</p>
-
-<h2>Related Work</h2>
-
-<p>
-	A lot of related work was done by Rittri [1] and Runciman [2] in the late 80's. Since then Di Cosmo [3] has produced a book on type isomorphisms, which is also related. Unfortunately the implementations that accompanied the earlier works were for functional languages that have since become less popular, and to my knowledge no existing functional programming language has a tool such as Hoogle.
-</p>
-
-<ol>
-	<li>Mikael Rittri, <i>Using Types as Search Keys in Function Libraries</i>. Proceedings of the fourth international conference on Functional programming languages and computer architecture: 174-183, June 1989. (<a href="http://portal.acm.org/citation.cfm?id=99384">http://portal.acm.org/citation.cfm?id=99384</a>)</li>
-
-	<li>Colin Runciman and Ian Toyn, <i>Retrieving reusable software components by polymorphic type</i>. Journal of Functional Programming <b>1</b> (2): 191-211, April 1991. (<a href="http://portal.acm.org/citation.cfm?id=99383">http://portal.acm.org/citation.cfm?id=99383</a>)</li>
-
-	<li>Roberto Di Cosmo. <i>Isomorphisms of types: from lambda-calculus to information retrieval and language design</i>. Birkhauser, 1995. ISBN-0-8176-3763-X (<a href="http://www.pps.jussieu.fr/~dicosmo/Publications/ISObook.html">http://www.pps.jussieu.fr/~dicosmo/Publications/ISObook.html</a>)</li>
-</ol>
-
-	</body>
-</html>
-
− scripts/hoogle/web/developers.htm
@@ -1,48 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-		<link href="res/hoogle.css" rel="stylesheet" type="text/css" />
-		<title>Hoogle - Developers</title>
-	</head>
-	<body id="dev">
-
-<div id="logo">
-	<a href=".">
-		<img src="res/hoogle_small.png" alt="Hoogle" />
-	</a>
-</div>
-
-<h1>Developers</h1>
-
-<h2>The License</h2>
-
-<p>
-	This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/">http://creativecommons.org/licenses/by-nc-sa/2.0/</a> or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
-</p><p>
-	The work is intended to be helpful, open and free. If the license doesn't meet your needs then talk to me.
-</p>
-
-<h2>Getting the Source</h2>
-
-<p>
-	<tt><a href="http://www.darcs.net/">darcs</a> get http://www.cs.york.ac.uk/fp/darcs/hoogle</tt>
-</p>
-
-<h2>The Documentation</h2>
-
-<p>
-	Haddock generated documentation is available <a href="haddock/">here</a>.
-</p>
-
-<h2>Contributions</h2>
-
-<p>
-	Contributions are most welcome. Hoogle is written in Haskell 98 + Heirarchical Modules, I do not wish to change this. Other than that, I'm pretty flexible about most aspects of Hoogle. Some projects could be easily embarked upon are profiling, writing test frameworks and new front ends. Contact me if you have thoughts on doing something to Hoogle.
-</p><p>
-	A wiki with the current development status, including bugs and things todo is at <a href="http://www.haskell.org/hawiki/Hoogle">http://www.haskell.org/hawiki/Hoogle</a>.
-</p>
-
-	</body>
-</html>
-
− scripts/hoogle/web/download.htm
@@ -1,48 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-		<link href="res/hoogle.css" rel="stylesheet" type="text/css" />
-		<title>Hoogle - Download</title>
-
-<script type="text/javascript">
-function addHoogle()
-{
-	addEngine('hoogle','png','Programming','4691');
-}
-
-function addEngine(name,ext,cat,pid)
-{
-  if ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) {
-    window.sidebar.addSearchEngine(
-      "http://mycroft.mozdev.org/install.php/" + pid + "/" + name + ".src",
-      "http://mycroft.mozdev.org/install.php/" + pid + "/" + name + "."+ ext, name, cat );
-  } else {
-    alert("You will need a browser which supports Sherlock to install this plugin.");
-  }
-}
-</script>
-
-	</head>
-	<body id="down">
-
-<div id="logo">
-	<a href=".">
-		<img src="res/hoogle_small.png" alt="Hoogle" />
-	</a>
-</div>
-
-<h1>Download</h1>
-
-<p>
-	Various aspects of this project will be available for download, as well as for use online. In the future this section will contain links to the downloads, however currently they are changing rapidly, so if you want a copy email me, or get <a href="developers.htm">the source</a>.
-</p>
-
-<h2>Firefox Plugin</h2>
-
-<p>
-	A <a href="http://www.mozilla.com/firefox/">Firefox</a> plugin by <a href="http://www.cs.york.ac.uk/~miked/">Mike Dodds</a> is available, to install <a href="javascript:addHoogle()">click here</a>.
-</p>
-
-	</body>
-</html>
− scripts/hoogle/web/favicon.ico

binary file changed (318 → absent bytes)

− scripts/hoogle/web/favicon.png

binary file changed (292 → absent bytes)

− scripts/hoogle/web/help.htm
@@ -1,56 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-		<link href="res/hoogle.css" rel="stylesheet" type="text/css" />
-		<title>Hoogle - Help</title>
-	</head>
-	<body id="help">
-
-<div id="logo">
-	<a href=".">
-		<img src="res/hoogle_small.png" alt="Hoogle" />
-	</a>
-</div>
-
-<h1>Help</h1>
-
-<h2>Your first search</h2>
-
-<p>
-	The Haskell API Search can search for either names, or types. For example, to find the standard <tt>map :: (a -> b) -> [a] -> [b]</tt> function you could search for:
-	<br/><br/>
-	<tt>map</tt><br/>
-	<tt>(a -> b) -> [a] -> [b]</tt><br/>
-	<tt>(a -> a) -> [a] -> [a]</tt><br/>
-	<tt>(Int -> Bool) -> [Int] -> [Bool]</tt><br/>
-	<tt>[a] -> (a -> b) -> [b]</tt><br/>
-</p>
-
-<h2>The results in order</h2>
-
-<p>
-	The API search tries to find as many results as it can. For name searchs, an exact substring of the name must match (so <tt>ap</tt> would match <tt>map</tt>). For type searches, anything that will unify is returned. In addition, arguments can be reordered - i.e. <tt>[a] -> (a -> b) -> [b]</tt> will still match <tt>map</tt>.
-</p><p>
-	Because lots of results may be returned, they are sorted in order of usefulness. Those which are closer to the asked for information are given higher priority, those which are further are given lower priority.
-</p>
-
-<h2>Further Information</h2>
-
-<p>
-	After you have found the function, you can click on it to view details. The information comes from GHC's documentation.
-</p>
-
-<!--
-<h2>Using through Firefox</h2>
-
-<p>
-	To have a search entry for hoogle, click <a href="javascript:quicksearch()">here</a>. <i>Note: Sidebar does not work, spaces look a bit odd - perfectly useable but still beta</i>.
-</p><p>
-	To use the quicksearch facility, add a bookmark to this link: <a href="http://www-users.cs.york.ac.uk/~ndm/hoogle/?q=%s">Hoogle</a>. Go to the bookmark, select properties and type <tt>h</tt> as the keyword. Now from your browser you can type in the URL field something such as <tt>h map</tt>, and it will search for map.
-</p>
--->
-
-	</body>
-</html>
-
− scripts/hoogle/web/nodocs.htm
@@ -1,24 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-		<link href="res/hoogle.css" rel="stylesheet" type="text/css" />
-		<title>Hoogle - Documentation Not Found</title>
-	</head>
-	<body id="nodocs">
-
-<div id="logo">
-	<a href=".">
-		<img src="res/hoogle_small.png" alt="Hoogle" />
-	</a>
-</div>
-
-<h1>Documentation Not Found</h1>
-
-<p>
-	Unfortunately the function on which you requested documentation does not have any associated with it.
-</p>
-
-
-	</body>
-</html>
− scripts/hoogle/web/res/bot_left.png

binary file changed (123 → absent bytes)

− scripts/hoogle/web/res/bot_right.png

binary file changed (122 → absent bytes)

− scripts/hoogle/web/res/haskell_icon.png

binary file changed (2979 → absent bytes)

− scripts/hoogle/web/res/hoogle.css
@@ -1,178 +0,0 @@-/********************************************************************
-*  GENERAL ELEMENTS
-*/
-
-body {
-	margin: 0px;
-	font-family: sans-serif;
-	padding: 3px;
-}
-
-a img {
-	border-width: 0px;
-}
-
-a:hover {
-	background-color: #ffb;
-}
-
-/********************************************************************
-*  THE TOP
-*/
-
-#header {
-	width: 100%;
-	font-size: 11pt;
-}
-
-#header a {
-	text-decoration: none;
-}
-
-
-/********************************************************************
-*  THE BOTTOM
-*/
-#footer {
-	text-align: center;
-	font-size: 10pt;
-}
-
-
-/********************************************************************
-*  HEADING SEARCH
-*/
-
-#heading {
-	background-color: #eee;
-	width: 100%;
-	padding-left: 5px;
-	padding-right: 5px;
-	margin-bottom: 10px;
-}
-
-#heading #count {
-	text-align: right;
-}
-
-#heading td {
-	font-size: 12pt;
-}
-
-#heading a:hover {
-	background-color: #eee;
-}
-
-
-/********************************************************************
-*  HEADING TEXT
-*/
-
-#logo {
-	float: left;
-}
-
-#logo a:hover {
-	background-color: white;
-}
-	
-
-h1 {
-	margin-top: 15px;
-	margin-bottom: 30px;
-	padding: 2px;
-	margin-left: 170px;
-	font-size: 14pt;
-	color: white;
-}
-
-h2 {
-	font-size: 14pt;
-	background-color: #eee;
-	padding-left: 5px;
-}
-
-/********************************************************************
-*  RESULTS
-*/
-
-#select {
-	margin-top: 15px;
-	text-align: center;
-}
-
-#select .active {
-	font-weight: bold;
-	color: black;
-	text-decoration: none;
-}
-
-#answers form {
-	margin-bottom: 30px;
-	padding-top: 18px;
-	padding-left: 4px;
-	margin-left: 170px;
-}
-
-#results {
-	padding-left: 10px;
-}
-
-#results td {
-	font-size: 11pt;
-	padding: 0px;
-	margin: 0px;
-	border: 0px;
-	color: black;
-}
-
-#results td.mod {
-	text-align: right;
-	font-size: 8pt;
-}
-
-#results td.fun a {
-	display: block;
-	padding-right: 3px;
-	color: blue;
-}
-
-#results a {
-	text-decoration: none;
-	color: black;
-}
-
-.func {color: black;}
-
-.c1{background-color: #fcc;}
-.c2{background-color: #cfc;}
-.c3{background-color: #ccf;}
-.c4{background-color: #ffc;}
-.c5{background-color: #fcf;}
-.c6{background-color: #cff;}
-
-
-#suggest, #lambdabot {
-	padding: 0px;
-	margin: 0px;
-	margin-left: 10px;
-	margin-bottom: 5px;
-}
-
-.name a, .name {
-	color: #b00;
-	font-style: italic;
-}
-
-#failure {
-	margin: 25px;
-	padding-top: 5px;
-	font-weight: bold;
-	border: 2px solid gray;
-	border-left-width: 0px;
-	border-right-width: 0px;
-}
-
-#failure ul {
-	font-weight: normal;
-}
− scripts/hoogle/web/res/hoogle.src
@@ -1,25 +0,0 @@-#-----------------------------------------------------------------------# Hoogle Search Plugin v0.1-# Author: Mike Dodds <mike.dodds -AT- cs.york.ac.uk>--<search- version="7.1"- name="Hoogle"- description="Hoogle Haskell API Search"- method="get"- action="http://www-users.cs.york.ac.uk/~ndm/hoogle/"- searchForm="http://www-users.cs.york.ac.uk/~ndm/hoogle/"- queryEncoding='UTF-8'- queryCharset='UTF-8'->--<input name="q" user>--</search>--<browser-  update="http://www-users.cs.york.ac.uk/~ndm/hoogle/hoogle.src"-  updateicon="http://www-users.cs.york.ac.uk/~ndm/hoogle/hoogle.png"-  updatecheckdays="3"->-
− scripts/hoogle/web/res/hoogle_large.png

binary file changed (10049 → absent bytes)

− scripts/hoogle/web/res/hoogle_large_classic.png

binary file changed (14223 → absent bytes)

− scripts/hoogle/web/res/hoogle_small.png

binary file changed (4851 → absent bytes)

− scripts/hoogle/web/res/hoogle_small_classic.png

binary file changed (6769 → absent bytes)

− scripts/hoogle/web/res/icons.png

binary file changed (4331 → absent bytes)

− scripts/hoogle/web/res/quicksearch.js
@@ -1,18 +0,0 @@-
-
-function quicksearch()
-{
-	if ((typeof window.sidebar == "object") &&
-	    (typeof window.sidebar.addSearchEngine == "function"))
-	{
-		window.sidebar.addSearchEngine(
-			"http://www-users.cs.york.ac.uk/~ndm/hoogle/hoogle.src",
-			"http://www-users.cs.york.ac.uk/~ndm/hoogle/hoogle.png",
-			"Hoogle",
-			"Computer");
-	}
-	else
-	{
-		alert("You don't have a Mozilla based browser, sorry");
-	}
-}
− scripts/hoogle/web/res/top_left.png

binary file changed (123 → absent bytes)

− scripts/hoogle/web/res/top_right.png

binary file changed (122 → absent bytes)

− scripts/hoogle/wiki/Hoogle.html
@@ -1,310 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">-<html>-<head>----<title>Hoogle - The Haskell Wiki</title>-<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="all" href="/moinwiki/classic/css/common.css">-<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="screen" href="/moinwiki/classic/css/screen.css">-<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="print" href="/moinwiki/classic/css/print.css">---<link rel="Start" href="/hawiki/FrontPage">-<link rel="Alternate" title="Wiki Markup" href="/hawiki/Hoogle?action=raw">-<link rel="Alternate" media="print" title="Print View" href="/hawiki/Hoogle?action=print">-<link rel="Search" href="/hawiki/FindPage">-<link rel="Index" href="/hawiki/TitleIndex">-<link rel="Glossary" href="/hawiki/WordIndex">-<link rel="Help" href="/hawiki/HelpOnFormatting">-</head>--<body lang="en" dir="ltr">---<div id="logo"><a href="/hawiki/FrontPage"><img src="/small-lambda.gif" alt="The Haskell Wiki"></a></div>-<div id="username"><a href="/hawiki/UserPreferences">UserPreferences</a></div>-<div id="title"><h1><a title="Click here to do a full-text search for this title" href="/hawiki/Hoogle?action=fullsearch&amp;value=Hoogle&amp;literal=1&amp;case=1&amp;context=40">Hoogle</a></h1></div>-<ul id="iconbar">-<li><a title="Edit" href="/hawiki/Hoogle?action=edit"><img src="/moinwiki/classic/img/moin-edit.png" alt="Edit" height="12" width="12"></a></li>-<li><a title="View" href="/hawiki/Hoogle"><img src="/moinwiki/classic/img/moin-show.png" alt="View" height="13" width="12"></a></li>-<li><a title="Diffs" href="/hawiki/Hoogle?action=diff"><img src="/moinwiki/classic/img/moin-diff.png" alt="Diffs" height="11" width="15"></a></li>-<li><a title="Info" href="/hawiki/Hoogle?action=info"><img src="/moinwiki/classic/img/moin-info.png" alt="Info" height="11" width="12"></a></li>-<li><a title="Subscribe" href="/hawiki/Hoogle?action=subscribe"><img src="/moinwiki/classic/img/moin-subscribe.png" alt="Subscribe" height="10" width="14"></a></li>-<li><a title="Raw" href="/hawiki/Hoogle?action=raw"><img src="/moinwiki/classic/img/moin-raw.png" alt="Raw" height="13" width="12"></a></li>-<li><a title="Print" href="/hawiki/Hoogle?action=print"><img src="/moinwiki/classic/img/moin-print.png" alt="Print" height="14" width="16"></a></li>-</ul>--<ul id="navibar">-<li><a href="/hawiki/FrontPage">FrontPage</a></li>-<li><a href="/hawiki/RecentChanges">RecentChanges</a></li>-<li><a href="/hawiki/FindPage">FindPage</a></li>-<li><a href="/hawiki/HelpContents">HelpContents</a></li>-</ul>-<hr id="pagetrail">----<div id="content" lang="en" dir="ltr">-<h2 id="head-200b5ba7a4647e5df89dae3b1b3b8749bb356c21">Hoogle</h2>-<p>-A Haskell API search engine, written by <a href="/hawiki/NeilMitchell">NeilMitchell</a>. It allows you to search by either name, or by approximate type signature. An article is being written for <a href="/hawiki/TheMonadReader">TheMonadReader</a>, which will include some technical details. -</p>-<h3 id="head-ff98acc3f3fadfbbb76442c6100631f0b0cb73f1">How to use Hoogle</h3>-    <ul>-    <li>-<p>- The web interface: <a href="http://haskell.org/hoogle">http://haskell.org/hoogle</a> -</p>-</li>-    <li>-<p>- The <a href="/hawiki/LambdaBot">LambdaBot</a> plugin, <tt>@hoogle</tt> and <tt>@hoogle+</tt> -</p>-</li>-    <li>-<p>- Download the source with CVS: <a href="http://sourceforge.net/cvs/?group_id=143787">http://sourceforge.net/cvs/?group_id=143787</a> -</p>-</li>-    <li>-<p>- Download a command line version (yet to be released, but get the source and compile it yourself) -</p>-</li>-    <li>-<p>- A Mac OS X version (unreleased yet, but it does exist) -</p>-</li>-    </ul>--<h3 id="head-eb01bf04c9a0e8a71c45816513df424f1c7ffedb">Examples</h3>-<p>-If you wanted to search for the standard prelude function <tt>map</tt>, you could type into the search any one of: -</p>-<pre>map -(a -&gt; b) -&gt; [a] -&gt; [b]-(a -&gt; a) -&gt; [a] -&gt; [a]-(Int -&gt; Bool) -&gt; [Int] -&gt; [Bool]-[a] -&gt; (a -&gt; b) -&gt; [b]</pre><h3 id="head-fdebf667212089ea7017a4b5425a561bdb3a30b0">Todo</h3>-<h4 id="head-4e7afebcfbae000b22c7c85e5560f89a2a0280b4">Admin</h4>-    <ul>-    <li>-<p>- Write a website build script -</p>-</li>-    <li>-<p>- get XHoogle in the repo -</p>-</li>-    </ul>--<h4 id="head-055c8865e34c944cf9f805a4fbdfca577330eec4">Short Term</h4>-<p>-i.e. before Hoogle3 goes public -</p>-    <ul>-    <li>-<p>- Fix all parse errors, prove with a test -</p>-</li>-            <ul>-            <li>-<p>- -&gt; a -</p>-</li>-            <li>-<p>- Monad m =&gt; Monad m =&gt; (a -&gt; m r -&gt; m r) -&gt; r -&gt; [a] -&gt; m r -</p>-</li>-            </ul>--    <li>-<p>- Regression tests for hoogle -</p>-</li>-    <li>-<p>- You cannot search for certain keywords, i.e. @, because it is not a recognised lex symbol -</p>-</li>-    <li>-<p>- Add comment characters, --, {- and -} to the list of symbols. -</p>-</li>-    <li>-<p>- Add links to this wiki from hoogle. -</p>-</li>-    <li>-<p>- Add a contact address - maybe: copyright Neil Mitchell - source code - wiki page - report bad search - contact me -</p>-</li>-    <li>-<p>- Case sensitive search - if searching Map, then Map should come before map. -</p>-</li>-    <li>-<p>- Put back more detailed information about the Prelude functions. -</p>-</li>-    </ul>--<h4 id="head-b69f416bab9ab303694fe7c6c692536d9a29aa96">Medium Term</h4>-    <ul>-    <li>-<p>- Parameterise out by package, i.e. split off OpenGL -</p>-</li>-    <li>-<p>- Compile with Yhc and distribute -</p>-</li>-    <li>-<p>- Write GTK front end -</p>-</li>-    <li>-<p>- Firefox/Mozilla plugin -</p>-</li>-    <li>-<p>- Multiword search? power set -</p>-</li>-    <li>-<p>- Dehack the Score program -</p>-</li>-    <li>-<p>- Multiparameter type classes -</p>-</li>-    </ul>--<h4 id="head-c7998c912242f54e178a92c71287f908f015b656">Long Term</h4>-    <ul>-    <li>-<p>- Integration with Cabal -</p>-</li>-    <li>-<p>- Integration with <a href="http://darcs.augustsson.net/Darcs/Djinn">http://darcs.augustsson.net/Darcs/Djinn</a> -</p>-</li>-    <li>-<p>- Integration with lambdabot @where and @fact -</p>-</li>-    </ul>--<h4 id="head-4f8ff3d11907c4c291f6d953f3052e8f16181514">Hoogle Suggest</h4>-    <ul>-    <li>-<p>- People often type to, instead of -&gt; -</p>-</li>-    <li>-<p>- Numeric literals -</p>-</li>-    <li>-<p>- Concepts? tuple, random, monads etc. -</p>-</li>-    </ul>--<h3 id="head-3210615584ed4bacd557dbb8eeee9ef606d9015a">Bad Searches</h3>-    <ul>-    <li>-<p>- (a -&gt; b) -&gt; ([a] -&gt; [b]) -- should find map -</p>-</li>-    <li>-<p>- @hoogle Data.<a class="nonexistent" href="/hawiki/IntMap">?</a>IntMap.<a class="nonexistent" href="/hawiki/IntMap">?</a>IntMap a -&gt; [a] -- badly kills the module names -</p>-</li>-    </ul>--<h4 id="head-a18131e7716a44928fd6ffd941d5535dbbd788ed">Higher Kinds</h4>-<p>-The following searches are all wrong because Hoogle doesn't understand higher kinds, i.e. Monad's. -</p>-    <ul>-    <li>-<p>- Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b -- should find fmap -</p>-</li>-    <li>-<p>- Monad m =&gt; [m a] -&gt; m [a] -- should find sequence -</p>-</li>-    <li>-<p>- (Monad m) =&gt; m (m a) -&gt; m a -- should find join -</p>-</li>-</ul>--</div>----<div id="footer">-<div id="credits">-<p>-    <a href="http://moinmoin.wikiwikiweb.de/">MoinMoin Powered</a><br>-    <a href="http://www.python.org/">-        <img src="/moinwiki/classic/img/PythonPowered.png" width="55" height="22" alt="PythonPowered">-    </a>-</p>-</div>---<a href="/hawiki/Hoogle?action=refresh&amp;arena=Page.py&amp;key=Hoogle.text_html">RefreshCache</a> for this page (cached 2005-12-12 20:37:09)<br>-<p>Immutable page (last edited 2005-12-12 20:37:09 by <span title="snswc0.york.ac.uk"><a href="/hawiki/NeilMitchell">NeilMitchell</a></span>)</p>--<form method="POST" action="/hawiki/Hoogle">-<p>-<input type="hidden" name="action" value="inlinesearch">-<input type="hidden" name="context" value="40">-<a href="/hawiki/FindPage?value=Hoogle">FindPage</a> or search titles <input type="text" name="text_title" value="" size="15" maxlength="50"><input type="image" src="/moinwiki/classic/img/moin-search.png" name="button_title" alt="[?]">, full text <input type="text" name="text_full" value="" size="15" maxlength="50"><input type="image" src="/moinwiki/classic/img/moin-search.png" name="button_full" alt="[?]"> or <a href="/hawiki/SiteNavigation">SiteNavigation</a>-</p>-</form>--<p>Or try one of these actions: <a href="/hawiki/Hoogle?action=DeletePage">DeletePage</a>, <a href="/hawiki/Hoogle?action=LikePages">LikePages</a>, <a href="/hawiki/Hoogle?action=LocalSiteMap">LocalSiteMap</a>, <a href="/hawiki/Hoogle?action=SpellCheck">SpellCheck</a></p>--</div>--</body>-</html>-
− scripts/hoogle/wiki/Keywords.html
@@ -1,444 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">-<html>-<head>----<title>Keywords - The Haskell Wiki</title>-<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="all" href="/moinwiki/classic/css/common.css">-<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="screen" href="/moinwiki/classic/css/screen.css">-<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="print" href="/moinwiki/classic/css/print.css">---<link rel="Start" href="/hawiki/FrontPage">-<link rel="Alternate" title="Wiki Markup" href="/hawiki/Keywords?action=raw">-<link rel="Alternate" media="print" title="Print View" href="/hawiki/Keywords?action=print">-<link rel="Search" href="/hawiki/FindPage">-<link rel="Index" href="/hawiki/TitleIndex">-<link rel="Glossary" href="/hawiki/WordIndex">-<link rel="Help" href="/hawiki/HelpOnFormatting">-</head>--<body lang="en" dir="ltr">---<div id="logo"><a href="/hawiki/FrontPage"><img src="/small-lambda.gif" alt="The Haskell Wiki"></a></div>-<div id="username"><a href="/hawiki/UserPreferences">UserPreferences</a></div>-<div id="title"><h1><a title="Click here to do a full-text search for this title" href="/hawiki/Keywords?action=fullsearch&amp;value=Keywords&amp;literal=1&amp;case=1&amp;context=40">Keywords</a></h1></div>-<ul id="iconbar">-<li><a title="Edit" href="/hawiki/Keywords?action=edit"><img src="/moinwiki/classic/img/moin-edit.png" alt="Edit" height="12" width="12"></a></li>-<li><a title="View" href="/hawiki/Keywords"><img src="/moinwiki/classic/img/moin-show.png" alt="View" height="13" width="12"></a></li>-<li><a title="Diffs" href="/hawiki/Keywords?action=diff"><img src="/moinwiki/classic/img/moin-diff.png" alt="Diffs" height="11" width="15"></a></li>-<li><a title="Info" href="/hawiki/Keywords?action=info"><img src="/moinwiki/classic/img/moin-info.png" alt="Info" height="11" width="12"></a></li>-<li><a title="Subscribe" href="/hawiki/Keywords?action=subscribe"><img src="/moinwiki/classic/img/moin-subscribe.png" alt="Subscribe" height="10" width="14"></a></li>-<li><a title="Raw" href="/hawiki/Keywords?action=raw"><img src="/moinwiki/classic/img/moin-raw.png" alt="Raw" height="13" width="12"></a></li>-<li><a title="Print" href="/hawiki/Keywords?action=print"><img src="/moinwiki/classic/img/moin-print.png" alt="Print" height="14" width="16"></a></li>-</ul>--<ul id="navibar">-<li><a href="/hawiki/FrontPage">FrontPage</a></li>-<li><a href="/hawiki/RecentChanges">RecentChanges</a></li>-<li><a href="/hawiki/FindPage">FindPage</a></li>-<li><a href="/hawiki/HelpContents">HelpContents</a></li>-</ul>-<hr id="pagetrail">----<div id="content" lang="en" dir="ltr">-<h2 id="head-001691719917019301458dbe1a704b40e47d4593">Haskell Keywords</h2>-<p>-This page lists all Haskell keywords, feel free to edit. <a href="/hawiki/Hoogle">Hoogle</a> searches return results from this page. Please respect the Anchor macros. -</p>-<p>-Some of the material below is taken from <a class="external" href="http://www.haskell.org/onlinereport/"><img src="/moinwiki/classic/img/moin-www.png" alt="[WWW]" height="11" width="11">the Haskell 98 report</a>. -</p>-<p>-<a id="|"> <h3 id="head-3eb416223e9e69e6bb8ee19793911ad1ad2027d8">|</h3>--</p>--<pre class=code>-safeTail x | null x = []-           | otherwise = tail x--squares = [a*a | a &lt;- [1..]]-</PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-<a id="->"> <h3 id="head-6b8bdd37d6a5fe9bfd9ce2c3b38104fb717f3f22">-&gt;</h3>--</p>-<p>-Please write this -</p>-<p>-<a id="<-"> <h3 id="head-a9e43da8dc6372dda92a4ab32f4ddd6b09fe7660">&lt;-</h3>--</p>-<p>-Please write this -</p>-<p>-<a id="@"> <h3 id="head-9a78211436f6d425ec38f5c4e02270801f3524f8">@</h3>--</p>-<p>-Patterns of the form var@pat are called as-patterns, and allow one to use var as a name for the value being matched by pat. For example: -</p>--<pre class=code>-<B><FONT COLOR="#A020F0">case</FONT></B> e <B><FONT COLOR="#A020F0">of</FONT></B> { xs@(x:rest) -&gt; <B><FONT COLOR="#A020F0">if</FONT></B> x==0 <B><FONT COLOR="#A020F0">then</FONT></B> rest <B><FONT COLOR="#A020F0">else</FONT></B> xs }-</PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-is equivalent to: -</p>--<pre class=code>-<B><FONT COLOR="#A020F0">let</FONT></B> { xs = e } <B><FONT COLOR="#A020F0">in</FONT></B>-  <B><FONT COLOR="#A020F0">case</FONT></B> xs <B><FONT COLOR="#A020F0">of</FONT></B> { (x:rest) -&gt; <B><FONT COLOR="#A020F0">if</FONT></B> x==0 <B><FONT COLOR="#A020F0">then</FONT></B> rest <B><FONT COLOR="#A020F0">else</FONT></B> xs }-</PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-<a id="!"> <h3 id="head-0ab8318acaf6e678dd02e2b5c343ed41111b393d">!</h3>--</p>-<p>-Whenever a data constructor is applied, each argument to the constructor is evaluated if and only if the corresponding type in the algebraic datatype declaration has a strictness flag, denoted by an exclamation point. For example: -</p>--<pre class=code>-<B><FONT COLOR="#A020F0">data</FONT></B> STList a -        = STCons a !(STList a)  <I><FONT COLOR="#B22222">-- the second argument to STCons will be -</FONT></I>                                <I><FONT COLOR="#B22222">-- evaluated before STCons is applied-</FONT></I>        | STNil-</PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-to illustrate the difference between strict versus lazy constructor application, consider the following: -</p>--<pre class=code>-stList = STCons 1 undefined-lzList = (:)    1 undefined-stHead (STCons h <B><FONT COLOR="#A020F0">_) </FONT></B>= h <I><FONT COLOR="#B22222">-- this evaluates to undefined when applied to stList-</FONT></I>lzHead (h : <B><FONT COLOR="#A020F0">_) </FONT></B>     = h <I><FONT COLOR="#B22222">-- this evaluates to 1 when applied to lzList-</FONT></I></PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-<a id="::"> <h3 id="head-f62e0ea6edbc4288ff84c8da24f410ecf986229d">::</h3>--</p>-<p>-Please write this -</p>-<p>-<a id="_"> <h3 id="head-53a0acfad59379b3e050338bf9f23cfc172ee787">_</h3>--</p>-<p>-Patterns of the form _ are wildcards and are useful when some part of a pattern is not referenced on the right-hand-side. It is as if an identifier not used elsewhere were put in its place. For example, -</p>--<pre class=code>-<B><FONT COLOR="#A020F0">case</FONT></B> e <B><FONT COLOR="#A020F0">of</FONT></B> { [x,<B><FONT COLOR="#A020F0">_,_</FONT></B>]  -&gt;  <B><FONT COLOR="#A020F0">if</FONT></B> x==0 <B><FONT COLOR="#A020F0">then</FONT></B> True <B><FONT COLOR="#A020F0">else</FONT></B> False }-</PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-is equivalent to: -</p>--<pre class=code>-<B><FONT COLOR="#A020F0">case</FONT></B> e <B><FONT COLOR="#A020F0">of</FONT></B> { [x,y,z]  -&gt;  <B><FONT COLOR="#A020F0">if</FONT></B> x==0 <B><FONT COLOR="#A020F0">then</FONT></B> True <B><FONT COLOR="#A020F0">else</FONT></B> False }-</PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-<a id="~"> <h3 id="head-fb3c6e4de85bd9eae26fdc63e75f10a7f39e850e">~</h3>--</p>-<p>-Please write this -</p>-<p>-<a id="as"> <h3 id="head-df211ccdd94a63e0bcb9e6ae427a249484a49d60">as</h3>--</p>-<p>-Please write this -</p>-<p>-<a id="case"><a id="of"> <h3 id="head-48de8067d0428b7f3685d1f4651640bd1f4cf67a">case, of</h3>--</p>-<p>-A case expression has the general form -</p>--<pre class=code>-<B><FONT COLOR="#A020F0">case</FONT></B> e <B><FONT COLOR="#A020F0">of</FONT></B> { p1 match1 ; ... ; pn matchn }-</PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-where each match is of the general form -</p>--<pre class=code>-  | g1  -&gt; e1-    ...-  | gm -&gt; em-     <B><FONT COLOR="#A020F0">where</FONT></B> decls-</PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-Each alternative consists of a pattern pi and its matches, matchi. Each match in turn consists of a sequence of pairs of guards gj and bodies ej (expressions), followed by optional bindings (decls) that scope over all of the guards and expressions of the alternative. An alternative of the form -</p>--<pre class=code>-pat -&gt; exp <B><FONT COLOR="#A020F0">where</FONT></B> decls-</PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-is treated as shorthand for: -</p>--<pre class=code>-  pat | True -&gt; exp-  <B><FONT COLOR="#A020F0">where</FONT></B> decls-</PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-A case expression must have at least one alternative and each alternative must have at least one body. Each body must have the same type, and the type of the whole expression is that type. -</p>-<p>-A case expression is evaluated by pattern matching the expression e against the individual alternatives. The alternatives are tried sequentially, from top to bottom. If e matches the pattern in the alternative, the guards for that alternative are tried sequentially from top to bottom, in the environment of the case expression extended first by the bindings created during the matching of the pattern, and then by the declsi in the where clause associated with that alternative. If one of the guards evaluates to True, the corresponding right-hand side is evaluated in the same environment as the guard. If all the guards evaluate to False, matching continues with the next alternative. If no match succeeds, the result is _|_.  -</p>-<p>-<a id="class"> <h3 id="head-8d767bf5b72373d12f0efd4406677e9ed076f592">class</h3>--</p>-<p>-Please write this -</p>-<p>-<a id="data"> <h3 id="head-a17c9aaa61e80a1bf71d0d850af4e5baa9800bbd">data</h3>--</p>-<p>-Please write this -</p>-<p>-<a id="default"> <h3 id="head-7505d64a54e061b7acd54ccd58b49dc43500b635">default</h3>--</p>-<p>-Please write this -</p>-<p>-<a id="deriving"> <h3 id="head-3c79f6126d9c3fb6932b3a13339d092090c2b4c0">deriving</h3>--</p>-<p>-Please write this -</p>-<p>-<a id="do"> <h3 id="head-eadcd9bd2a09c75aef04954e6799e50278ee124a">do</h3>--</p>-<p>-Please write this -</p>-<p>-<a id="forall"> <h3 id="head-7a5d1bfdef16352ea0c0772633abee7cfc8b3a3a">forall</h3>--</p>-<p>-This is a GHC/Hugs extension, and as such is not portable Haskell 98. -</p>-<p>-<a id="hiding"> <h3 id="head-0e8153596b53a6802e2d8265e43239963884cf13">hiding</h3>--</p>-<p>-Please write this -</p>-<p>-<a id="if"><a id="then"><a id="else"> <h3 id="head-c5bdb5b7bd1da145ee2576114277e4d5b16d121d">if, then, else</h3>--</p>-<p>-A conditional expression has the form: -</p>--<pre class=code>-<B><FONT COLOR="#A020F0">if</FONT></B> e1 <B><FONT COLOR="#A020F0">then</FONT></B> e2 <B><FONT COLOR="#A020F0">else</FONT></B> e3-</PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-...and returns the value of e2 if the value of e1 is True, e3 if e1 is False, and _|_ otherwise. -</p>--<pre class=code>-max a b = <B><FONT COLOR="#A020F0">if</FONT></B> a &gt; b <B><FONT COLOR="#A020F0">then</FONT></B> a <B><FONT COLOR="#A020F0">else</FONT></B> b-</PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-<a id="import"> <h3 id="head-62fdfbd55d19b2a4671102ad7bca17d875f8207a">import</h3>--</p>-<p>-Please write this -</p>-<p>-<a id="infix"><a id="infixr"><a id="infixl"> <h3 id="head-538434472b62110fb7c204716d21e4ccfb40305d">infix, infixl, infixr</h3>--</p>-<p>-Please write this -</p>-<p>-<a id="instance"> <h3 id="head-c3bec6bcbc9b9f04e60fcb1d9c9c1a37f3e12e93">instance</h3>--</p>-<p>-Please write this -</p>-<p>-<a id="let"><a id="in"> <h3 id="head-89c4d2efdccc7367e3ac101d6e4db4eead4fcdda">let, in</h3>--</p>-<p>-Let expressions have the general form: -</p>--<pre class=code>-<B><FONT COLOR="#A020F0">let</FONT></B> { d1 ; ... ; dn } <B><FONT COLOR="#A020F0">in</FONT></B> e-</PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-They introduce a nested, lexically-scoped, mutually-recursive list of declarations (let is often called letrec in other languages). The scope of the declarations is the expression e and the right hand side of the declarations. -</p>-<p>-<a id="module"> <h3 id="head-fbd34a2b6e6a9fe8161f97dc435642609ac0bc29">module</h3>--</p>-<p>-Please write this -</p>-<p>-<a id="newtype"> <h3 id="head-a4f7ecca3de79d65ba5665d08864fcc66bd20611">newtype</h3>--</p>-<p>-Please write this -</p>-<p>-<a id="qualified"> <h3 id="head-9f04d6a7d7bb81380c6230d828b6b0454dab10aa">qualified</h3>--</p>-<p>-Please write this -</p>-<p>-<a id="type"> <h3 id="head-d0a3e7f81a9885e99049d1cae0336d269d5e47a9">type</h3>--</p>-<p>-Please write this -</p>-<p>-<a id="where"> <h3 id="head-46148cc3b4d2b3ac8073f14b0cba7f25ffff54bd">where</h3>--</p>-<p>-Please write this -</p>-</div>----<div id="footer">-<div id="credits">-<p>-    <a href="http://moinmoin.wikiwikiweb.de/">MoinMoin Powered</a><br>-    <a href="http://www.python.org/">-        <img src="/moinwiki/classic/img/PythonPowered.png" width="55" height="22" alt="PythonPowered">-    </a>-</p>-</div>---<a href="/hawiki/Keywords?action=refresh&amp;arena=Page.py&amp;key=Keywords.text_html">RefreshCache</a> for this page (cached 2005-12-12 14:33:44)<br>-<p>Immutable page (last edited 2005-11-21 23:02:42 by <span title="midd-cache-5.server.ntli.net">MikeDodds</span>)</p>--<form method="POST" action="/hawiki/Keywords">-<p>-<input type="hidden" name="action" value="inlinesearch">-<input type="hidden" name="context" value="40">-<a href="/hawiki/FindPage?value=Keywords">FindPage</a> or search titles <input type="text" name="text_title" value="" size="15" maxlength="50"><input type="image" src="/moinwiki/classic/img/moin-search.png" name="button_title" alt="[?]">, full text <input type="text" name="text_full" value="" size="15" maxlength="50"><input type="image" src="/moinwiki/classic/img/moin-search.png" name="button_full" alt="[?]"> or <a href="/hawiki/SiteNavigation">SiteNavigation</a>-</p>-</form>--<p>Or try one of these actions: <a href="/hawiki/Keywords?action=DeletePage">DeletePage</a>, <a href="/hawiki/Keywords?action=LikePages">LikePages</a>, <a href="/hawiki/Keywords?action=LocalSiteMap">LocalSiteMap</a>, <a href="/hawiki/Keywords?action=SpellCheck">SpellCheck</a></p>--</div>--</body>-</html>-
− scripts/hoogle/wiki/LibraryDocumentation.html
@@ -1,104 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">-<html>-<head>----<title>LibraryDocumentation - The Haskell Wiki</title>-<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="all" href="/moinwiki/classic/css/common.css">-<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="screen" href="/moinwiki/classic/css/screen.css">-<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="print" href="/moinwiki/classic/css/print.css">---<link rel="Start" href="/hawiki/FrontPage">-<link rel="Alternate" title="Wiki Markup" href="/hawiki/LibraryDocumentation?action=raw">-<link rel="Alternate" media="print" title="Print View" href="/hawiki/LibraryDocumentation?action=print">-<link rel="Search" href="/hawiki/FindPage">-<link rel="Index" href="/hawiki/TitleIndex">-<link rel="Glossary" href="/hawiki/WordIndex">-<link rel="Help" href="/hawiki/HelpOnFormatting">-</head>--<body lang="en" dir="ltr">---<div id="logo"><a href="/hawiki/FrontPage"><img src="/small-lambda.gif" alt="The Haskell Wiki"></a></div>-<div id="username"><a href="/hawiki/UserPreferences">UserPreferences</a></div>-<div id="title"><h1><a title="Click here to do a full-text search for this title" href="/hawiki/LibraryDocumentation?action=fullsearch&amp;value=LibraryDocumentation&amp;literal=1&amp;case=1&amp;context=40">LibraryDocumentation</a></h1></div>-<ul id="iconbar">-<li><a title="Edit" href="/hawiki/LibraryDocumentation?action=edit"><img src="/moinwiki/classic/img/moin-edit.png" alt="Edit" height="12" width="12"></a></li>-<li><a title="View" href="/hawiki/LibraryDocumentation"><img src="/moinwiki/classic/img/moin-show.png" alt="View" height="13" width="12"></a></li>-<li><a title="Diffs" href="/hawiki/LibraryDocumentation?action=diff"><img src="/moinwiki/classic/img/moin-diff.png" alt="Diffs" height="11" width="15"></a></li>-<li><a title="Info" href="/hawiki/LibraryDocumentation?action=info"><img src="/moinwiki/classic/img/moin-info.png" alt="Info" height="11" width="12"></a></li>-<li><a title="Subscribe" href="/hawiki/LibraryDocumentation?action=subscribe"><img src="/moinwiki/classic/img/moin-subscribe.png" alt="Subscribe" height="10" width="14"></a></li>-<li><a title="Raw" href="/hawiki/LibraryDocumentation?action=raw"><img src="/moinwiki/classic/img/moin-raw.png" alt="Raw" height="13" width="12"></a></li>-<li><a title="Print" href="/hawiki/LibraryDocumentation?action=print"><img src="/moinwiki/classic/img/moin-print.png" alt="Print" height="14" width="16"></a></li>-</ul>--<ul id="navibar">-<li><a href="/hawiki/FrontPage">FrontPage</a></li>-<li><a href="/hawiki/RecentChanges">RecentChanges</a></li>-<li><a href="/hawiki/FindPage">FindPage</a></li>-<li><a href="/hawiki/HelpContents">HelpContents</a></li>-</ul>-<hr id="pagetrail">----<div id="content" lang="en" dir="ltr">-<h2 id="head-6c3291251c371ac5af8f9e8d11dec0f193f75fe3">Library Documentation</h2>-<p>-This is a folder for documentation of every function in the Haskell world. It will be used by <a href="/hawiki/Hoogle">Hoogle</a> when someone searches for a function. -</p>-<h3 id="head-8b4617b659a51d0b5756991a46730570511eef04">Naming</h3>-<p>-In order to find things unambiguously, its necessary to put things in every specific places. To give an example: all the documentation for Data.Map should be placed at LibraryDocumentation/Data.Map. Every function should have an anchor defined, for example insert would be on that page with #v:insert as the anchor (this is to be compatible with Haddock). -</p>-<h3 id="head-600584c2d5ccb97c0c0c424d9f32d6b102fcb040">Pages</h3>-<p>-<ul>-<li>-<a href="/hawiki/LibraryDocumentation">LibraryDocumentation</a></li>-<li>-<a href="/hawiki/LibraryDocumentation_2fCPUTime">LibraryDocumentation/CPUTime</a></li>-<li>-<a href="/hawiki/LibraryDocumentation_2fIx">LibraryDocumentation/Ix</a></li>-<li>-<a href="/hawiki/LibraryDocumentation_2fPrelude">LibraryDocumentation/Prelude</a></li>-</ul>-- -</p>-</div>----<div id="footer">-<div id="credits">-<p>-    <a href="http://moinmoin.wikiwikiweb.de/">MoinMoin Powered</a><br>-    <a href="http://www.python.org/">-        <img src="/moinwiki/classic/img/PythonPowered.png" width="55" height="22" alt="PythonPowered">-    </a>-</p>-</div>---<a href="/hawiki/LibraryDocumentation?action=refresh&amp;arena=Page.py&amp;key=LibraryDocumentation.text_html">RefreshCache</a> for this page (cached 2005-12-13 11:35:26)<br>-<p>Immutable page (last edited 2005-12-13 11:35:26 by <span title="pc163.ad.cs.york.ac.uk"><a href="/hawiki/NeilMitchell">NeilMitchell</a></span>)</p>--<form method="POST" action="/hawiki/LibraryDocumentation">-<p>-<input type="hidden" name="action" value="inlinesearch">-<input type="hidden" name="context" value="40">-<a href="/hawiki/FindPage?value=LibraryDocumentation">FindPage</a> or search titles <input type="text" name="text_title" value="" size="15" maxlength="50"><input type="image" src="/moinwiki/classic/img/moin-search.png" name="button_title" alt="[?]">, full text <input type="text" name="text_full" value="" size="15" maxlength="50"><input type="image" src="/moinwiki/classic/img/moin-search.png" name="button_full" alt="[?]"> or <a href="/hawiki/SiteNavigation">SiteNavigation</a>-</p>-</form>--<p>Or try one of these actions: <a href="/hawiki/LibraryDocumentation?action=DeletePage">DeletePage</a>, <a href="/hawiki/LibraryDocumentation?action=LikePages">LikePages</a>, <a href="/hawiki/LibraryDocumentation?action=LocalSiteMap">LocalSiteMap</a>, <a href="/hawiki/LibraryDocumentation?action=SpellCheck">SpellCheck</a></p>--</div>--</body>-</html>-
− scripts/hoogle/wiki/LibraryDocumentation_2fCPUTime.html
@@ -1,120 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">-<html>-<head>----<title>LibraryDocumentation/CPUTime - The Haskell Wiki</title>-<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="all" href="/moinwiki/classic/css/common.css">-<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="screen" href="/moinwiki/classic/css/screen.css">-<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="print" href="/moinwiki/classic/css/print.css">---<link rel="Start" href="/hawiki/FrontPage">-<link rel="Alternate" title="Wiki Markup" href="/hawiki/LibraryDocumentation_2fCPUTime?action=raw">-<link rel="Alternate" media="print" title="Print View" href="/hawiki/LibraryDocumentation_2fCPUTime?action=print">-<link rel="Up" href="/hawiki/LibraryDocumentation">-<link rel="Search" href="/hawiki/FindPage">-<link rel="Index" href="/hawiki/TitleIndex">-<link rel="Glossary" href="/hawiki/WordIndex">-<link rel="Help" href="/hawiki/HelpOnFormatting">-</head>--<body lang="en" dir="ltr">---<div id="logo"><a href="/hawiki/FrontPage"><img src="/small-lambda.gif" alt="The Haskell Wiki"></a></div>-<div id="username"><a href="/hawiki/UserPreferences">UserPreferences</a></div>-<div id="title"><h1><a title="Click here to do a full-text search for this title" href="/hawiki/LibraryDocumentation_2fCPUTime?action=fullsearch&amp;value=%2FCPUTime&amp;literal=1&amp;case=1&amp;context=40">LibraryDocumentation/CPUTime</a></h1></div>-<ul id="iconbar">-<li><a title="Up" href="/hawiki/LibraryDocumentation"><img src="/moinwiki/classic/img/moin-parent.png" alt="Up" height="13" width="15"></a></li>-<li><a title="Edit" href="/hawiki/LibraryDocumentation_2fCPUTime?action=edit"><img src="/moinwiki/classic/img/moin-edit.png" alt="Edit" height="12" width="12"></a></li>-<li><a title="View" href="/hawiki/LibraryDocumentation_2fCPUTime"><img src="/moinwiki/classic/img/moin-show.png" alt="View" height="13" width="12"></a></li>-<li><a title="Diffs" href="/hawiki/LibraryDocumentation_2fCPUTime?action=diff"><img src="/moinwiki/classic/img/moin-diff.png" alt="Diffs" height="11" width="15"></a></li>-<li><a title="Info" href="/hawiki/LibraryDocumentation_2fCPUTime?action=info"><img src="/moinwiki/classic/img/moin-info.png" alt="Info" height="11" width="12"></a></li>-<li><a title="Subscribe" href="/hawiki/LibraryDocumentation_2fCPUTime?action=subscribe"><img src="/moinwiki/classic/img/moin-subscribe.png" alt="Subscribe" height="10" width="14"></a></li>-<li><a title="Raw" href="/hawiki/LibraryDocumentation_2fCPUTime?action=raw"><img src="/moinwiki/classic/img/moin-raw.png" alt="Raw" height="13" width="12"></a></li>-<li><a title="Print" href="/hawiki/LibraryDocumentation_2fCPUTime?action=print"><img src="/moinwiki/classic/img/moin-print.png" alt="Print" height="14" width="16"></a></li>-</ul>--<ul id="navibar">-<li><a href="/hawiki/FrontPage">FrontPage</a></li>-<li><a href="/hawiki/RecentChanges">RecentChanges</a></li>-<li><a href="/hawiki/FindPage">FindPage</a></li>-<li><a href="/hawiki/HelpContents">HelpContents</a></li>-</ul>-<hr id="pagetrail">----<div id="content" lang="en" dir="ltr">-<h2 id="head-a6ea707e5fa7bf03213557afa08cd6b01f303f1a">CPUTime - Library Documentation</h2>-<p>-Part of the <a href="/hawiki/LibraryDocumentation">LibraryDocumentation</a> project. -</p>-<p>-A standard Haskell 98 library for measuring elapsed CPU/Processor Time. In the hierarchical libraries this has become System.CPUTime. <a class="external" href="http://haskell.org/ghc/docs/latest/html/libraries/base/System-CPUTime.html">(Haddock)</a> -</p>-<p>-<a id="v:cpuTimePrecision"> <h3 id="head-278b725e8ba0393a991d5e5c895e878e1186d1d3">cpuTimePrecision :: Integer</h3>--</p>-<p>-This is the precision of the result given by <a href="#v:getCPUTime">getCPUTime</a>. This is the smallest measurable difference in CPU time that the implementation can record, and is given as an integral number of picoseconds. -</p>-<p>-In the hierarchical libraries, this has been moved to the module System.CPUTime. <a class="external" href="http://haskell.org/ghc/docs/latest/html/libraries/base/System-CPUTime.html#v%cpuTimePrecision">(Haddock)</a> -</p>-<p>-<a id="v:getCPUTime"> <h3 id="head-677d1f37a7f98f3c89fec24ec679fe5adab73774">getCPUTime :: IO Integer</h3>--</p>-<p>-Computation <tt>getCPUTime</tt> returns the number of picoseconds of CPU time used by the current program. The precision of this result is given by <a href="#v:cpuTimePrecision">cpuTimePrecision</a>. -</p>--<pre class=code>-&gt; getCPUTime &gt;&gt;= \x -&gt; print x-296875000000-</PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-In the hierarchical libraries, this has been moved to the module System.CPUTime. <a class="external" href="http://haskell.org/ghc/docs/latest/html/libraries/base/System-CPUTime.html#v%3AgetCPUTime">(Haddock)</a> -</p>-</div>----<div id="footer">-<div id="credits">-<p>-    <a href="http://moinmoin.wikiwikiweb.de/">MoinMoin Powered</a><br>-    <a href="http://www.python.org/">-        <img src="/moinwiki/classic/img/PythonPowered.png" width="55" height="22" alt="PythonPowered">-    </a>-</p>-</div>---<a href="/hawiki/LibraryDocumentation_2fCPUTime?action=refresh&amp;arena=Page.py&amp;key=LibraryDocumentation_2fCPUTime.text_html">RefreshCache</a> for this page (cached 2005-12-13 11:46:10)<br>-<p>Immutable page (last edited 2005-12-13 11:46:10 by <span title="pc163.ad.cs.york.ac.uk"><a href="/hawiki/NeilMitchell">NeilMitchell</a></span>)</p>--<form method="POST" action="/hawiki/LibraryDocumentation_2fCPUTime">-<p>-<input type="hidden" name="action" value="inlinesearch">-<input type="hidden" name="context" value="40">-<a href="/hawiki/FindPage?value=LibraryDocumentation%2FCPUTime">FindPage</a> or search titles <input type="text" name="text_title" value="" size="15" maxlength="50"><input type="image" src="/moinwiki/classic/img/moin-search.png" name="button_title" alt="[?]">, full text <input type="text" name="text_full" value="" size="15" maxlength="50"><input type="image" src="/moinwiki/classic/img/moin-search.png" name="button_full" alt="[?]"> or <a href="/hawiki/SiteNavigation">SiteNavigation</a>-</p>-</form>--<p>Or try one of these actions: <a href="/hawiki/LibraryDocumentation_2fCPUTime?action=DeletePage">DeletePage</a>, <a href="/hawiki/LibraryDocumentation_2fCPUTime?action=LikePages">LikePages</a>, <a href="/hawiki/LibraryDocumentation_2fCPUTime?action=LocalSiteMap">LocalSiteMap</a>, <a href="/hawiki/LibraryDocumentation_2fCPUTime?action=SpellCheck">SpellCheck</a></p>--</div>--</body>-</html>-
− scripts/hoogle/wiki/LibraryDocumentation_2fIx.html
@@ -1,219 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">-<html>-<head>----<title>LibraryDocumentation/Ix - The Haskell Wiki</title>-<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="all" href="/moinwiki/classic/css/common.css">-<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="screen" href="/moinwiki/classic/css/screen.css">-<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="print" href="/moinwiki/classic/css/print.css">---<link rel="Start" href="/hawiki/FrontPage">-<link rel="Alternate" title="Wiki Markup" href="/hawiki/LibraryDocumentation_2fIx?action=raw">-<link rel="Alternate" media="print" title="Print View" href="/hawiki/LibraryDocumentation_2fIx?action=print">-<link rel="Up" href="/hawiki/LibraryDocumentation">-<link rel="Search" href="/hawiki/FindPage">-<link rel="Index" href="/hawiki/TitleIndex">-<link rel="Glossary" href="/hawiki/WordIndex">-<link rel="Help" href="/hawiki/HelpOnFormatting">-</head>--<body lang="en" dir="ltr">---<div id="logo"><a href="/hawiki/FrontPage"><img src="/small-lambda.gif" alt="The Haskell Wiki"></a></div>-<div id="username"><a href="/hawiki/UserPreferences">UserPreferences</a></div>-<div id="title"><h1><a title="Click here to do a full-text search for this title" href="/hawiki/LibraryDocumentation_2fIx?action=fullsearch&amp;value=%2FIx&amp;literal=1&amp;case=1&amp;context=40">LibraryDocumentation/Ix</a></h1></div>-<ul id="iconbar">-<li><a title="Up" href="/hawiki/LibraryDocumentation"><img src="/moinwiki/classic/img/moin-parent.png" alt="Up" height="13" width="15"></a></li>-<li><a title="Edit" href="/hawiki/LibraryDocumentation_2fIx?action=edit"><img src="/moinwiki/classic/img/moin-edit.png" alt="Edit" height="12" width="12"></a></li>-<li><a title="View" href="/hawiki/LibraryDocumentation_2fIx"><img src="/moinwiki/classic/img/moin-show.png" alt="View" height="13" width="12"></a></li>-<li><a title="Diffs" href="/hawiki/LibraryDocumentation_2fIx?action=diff"><img src="/moinwiki/classic/img/moin-diff.png" alt="Diffs" height="11" width="15"></a></li>-<li><a title="Info" href="/hawiki/LibraryDocumentation_2fIx?action=info"><img src="/moinwiki/classic/img/moin-info.png" alt="Info" height="11" width="12"></a></li>-<li><a title="Subscribe" href="/hawiki/LibraryDocumentation_2fIx?action=subscribe"><img src="/moinwiki/classic/img/moin-subscribe.png" alt="Subscribe" height="10" width="14"></a></li>-<li><a title="Raw" href="/hawiki/LibraryDocumentation_2fIx?action=raw"><img src="/moinwiki/classic/img/moin-raw.png" alt="Raw" height="13" width="12"></a></li>-<li><a title="Print" href="/hawiki/LibraryDocumentation_2fIx?action=print"><img src="/moinwiki/classic/img/moin-print.png" alt="Print" height="14" width="16"></a></li>-</ul>--<ul id="navibar">-<li><a href="/hawiki/FrontPage">FrontPage</a></li>-<li><a href="/hawiki/RecentChanges">RecentChanges</a></li>-<li><a href="/hawiki/FindPage">FindPage</a></li>-<li><a href="/hawiki/HelpContents">HelpContents</a></li>-</ul>-<hr id="pagetrail">----<div id="content" lang="en" dir="ltr">-<h2 id="head-dde02609261bd0c16866b9a827640d68bbe6a821">Ix - Library Documentation</h2>-<p>-Part of the <a href="/hawiki/LibraryDocumentation">LibraryDocumentation</a> project. -</p>-<p>-Controls indexing, typically used in conjunction with <a class="nonexistent" href="/hawiki/LibraryDocumentation_2fArray">?</a>LibraryDocumentation/Array. -</p>--<pre class=code>-<B><FONT COLOR="#A020F0">module</FONT></B> Ix ( Ix(range, index, inRange), rangeSize ) <B><FONT COLOR="#A020F0">where</FONT></B>--<B><FONT COLOR="#A020F0">class</FONT></B>  (Ord a) =&gt; Ix a  <B><FONT COLOR="#A020F0">where</FONT></B>-   range               <FONT COLOR="#228B22"><B>:: (a,a) -&gt; [a]-</FONT></B>   index               <FONT COLOR="#228B22"><B>:: (a,a) -&gt; a -&gt; Int-</FONT></B>   inRange             <FONT COLOR="#228B22"><B>:: (a,a) -&gt; a -&gt; Bool-</FONT></B>-rangeSize <FONT COLOR="#228B22"><B>:: Ix a =&gt; (a,a) -&gt; Int-</FONT></B>rangeSize b@(l,h) | null (range b) = 0-                 | otherwise      = index b h + 1-<I><FONT COLOR="#B22222">-- NB: replacing &quot;null (range b)&quot; by &quot;l &gt; h&quot; fails if-</FONT></I><I><FONT COLOR="#B22222">-- the bounds are tuples. For example,-</FONT></I><I><FONT COLOR="#B22222">-- (2,1) &gt; (1,2),-</FONT></I><I><FONT COLOR="#B22222">-- but-</FONT></I><I><FONT COLOR="#B22222">-- range ((2,1),(1,2)) = []-</FONT></I>--<B><FONT COLOR="#A020F0">instance</FONT></B>  Ix Char  <B><FONT COLOR="#A020F0">where</FONT></B>-   range (m,n) = [m..n]-   index b@(c,c') ci-       | inRange b ci  =  fromEnum ci - fromEnum c-       | otherwise     =  error <FONT COLOR="#BC8F8F"><B>&quot;Ix.index: Index out of range.&quot;</FONT></B>-   inRange (c,c') i    =  c &lt;= i &amp;&amp; i &lt;= c'--<B><FONT COLOR="#A020F0">instance</FONT></B>  Ix Int  <B><FONT COLOR="#A020F0">where</FONT></B>-   range (m,n) = [m..n]-   index b@(m,n) i-       | inRange b i   =  i - m-       | otherwise     =  error <FONT COLOR="#BC8F8F"><B>&quot;Ix.index: Index out of range.&quot;</FONT></B>-   inRange (m,n) i     =  m &lt;= i &amp;&amp; i &lt;= n--<B><FONT COLOR="#A020F0">instance</FONT></B>  Ix Integer  <B><FONT COLOR="#A020F0">where</FONT></B>-   range (m,n) = [m..n]-   index b@(m,n) i-       | inRange b i   =  fromInteger (i - m)-       | otherwise     =  error <FONT COLOR="#BC8F8F"><B>&quot;Ix.index: Index out of range.&quot;</FONT></B>-   inRange (m,n) i     =  m &lt;= i &amp;&amp; i &lt;= n--<B><FONT COLOR="#A020F0">instance</FONT></B> (Ix a,Ix b) =&gt; Ix (a, b) <I><FONT COLOR="#B22222">-- as derived, for all tuples-</FONT></I><B><FONT COLOR="#A020F0">instance</FONT></B> Ix Bool                  <I><FONT COLOR="#B22222">-- as derived-</FONT></I><B><FONT COLOR="#A020F0">instance</FONT></B> Ix Ordering              <I><FONT COLOR="#B22222">-- as derived-</FONT></I><B><FONT COLOR="#A020F0">instance</FONT></B> Ix ()                    <I><FONT COLOR="#B22222">-- as derived-</FONT></I></PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-<a id="v:index"> <h3 id="head-8b66ce514e1ab53baa1ebe66a4af6f1888633181">index :: Ix a =&gt; (a,a) -&gt; a -&gt; Int</h3>--</p>-<p>-maps a bounding pair, which defines the lower and upper bounds of the range, and a subscript, to an integer. -</p>--<pre class=code>-&gt; index (10,15) 12-2--&gt; index (<FONT COLOR="#BC8F8F"><B>'A'</FONT></B>,<FONT COLOR="#BC8F8F"><B>'Z'</FONT></B>) <FONT COLOR="#BC8F8F"><B>'Z'</FONT></B>-25--&gt; index ((1,5),(6,10)) (3,7)-14-</PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-<a id="v:inRange"> <h3 id="head-c08754f3aacece95e4cb9c733d7ea17c99235b51">inRange :: Ix a =&gt; (a,a) -&gt; a -&gt; Bool</h3>--</p>-<p>-Returns True if  a particular subscript lies in the range defined by a bounding pair. -</p>--<pre class=code>-&gt; inRange (1,5) 3-True--&gt; inRange (1,5) 12-False--&gt; inRange ((1,5),(10,12)) (7,8)-True-</PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-<a id="v:range"> <h3 id="head-fc36039f6140a31c1b23060b6947b7365e915d7f">range :: Ix a =&gt; (a,a) -&gt; [a]</h3>--</p>-<p>-The range operation enumerates all subscripts. -</p>--<pre class=code>-&gt; range (3,6)-[3,4,5,6]--&gt; range ((1,3),(2,4))-[(1,3),(1,4),(2,3),(2,4)]--&gt; range (<FONT COLOR="#BC8F8F"><B>'e'</FONT></B>,<FONT COLOR="#BC8F8F"><B>'i'</FONT></B>)-<FONT COLOR="#BC8F8F"><B>&quot;efghi&quot;</FONT></B>--&gt; range ((<FONT COLOR="#BC8F8F"><B>'a'</FONT></B>,<FONT COLOR="#BC8F8F"><B>'b'</FONT></B>),(<FONT COLOR="#BC8F8F"><B>'c'</FONT></B>,<FONT COLOR="#BC8F8F"><B>'d'</FONT></B>))-[(<FONT COLOR="#BC8F8F"><B>'a'</FONT></B>,<FONT COLOR="#BC8F8F"><B>'b'</FONT></B>),(<FONT COLOR="#BC8F8F"><B>'a'</FONT></B>,<FONT COLOR="#BC8F8F"><B>'c'</FONT></B>),(<FONT COLOR="#BC8F8F"><B>'a'</FONT></B>,<FONT COLOR="#BC8F8F"><B>'d'</FONT></B>),(<FONT COLOR="#BC8F8F"><B>'b'</FONT></B>,<FONT COLOR="#BC8F8F"><B>'b'</FONT></B>),(<FONT COLOR="#BC8F8F"><B>'b'</FONT></B>,<FONT COLOR="#BC8F8F"><B>'c'</FONT></B>),(<FONT COLOR="#BC8F8F"><B>'b'</FONT></B>,<FONT COLOR="#BC8F8F"><B>'d'</FONT></B>),(<FONT COLOR="#BC8F8F"><B>'c'</FONT></B>,<FONT COLOR="#BC8F8F"><B>'b'</FONT></B>),(<FONT COLOR="#BC8F8F"><B>'c'</FONT></B>,<FONT COLOR="#BC8F8F"><B>'c'</FONT></B>),(<FONT COLOR="#BC8F8F"><B>'c'</FONT></B>,<FONT COLOR="#BC8F8F"><B>'d'</FONT></B>)]-</PRE>-</BODY>-</HTML>-<p>- -</p>-<p>-<a id="v:rangeSize"> <h3 id="head-b0badd06df078ffb18abba0f50563ee6e112c4ee">rangeSize :: Ix a =&gt; (a,a) -&gt; Int</h3>--</p>-<p>-TODO -</p>-</div>----<div id="footer">-<div id="credits">-<p>-    <a href="http://moinmoin.wikiwikiweb.de/">MoinMoin Powered</a><br>-    <a href="http://www.python.org/">-        <img src="/moinwiki/classic/img/PythonPowered.png" width="55" height="22" alt="PythonPowered">-    </a>-</p>-</div>---<a href="/hawiki/LibraryDocumentation_2fIx?action=refresh&amp;arena=Page.py&amp;key=LibraryDocumentation_2fIx.text_html">RefreshCache</a> for this page (cached 2005-12-13 12:05:37)<br>-<p>Immutable page (last edited 2005-12-13 12:05:36 by <span title="pc163.ad.cs.york.ac.uk"><a href="/hawiki/NeilMitchell">NeilMitchell</a></span>)</p>--<form method="POST" action="/hawiki/LibraryDocumentation_2fIx">-<p>-<input type="hidden" name="action" value="inlinesearch">-<input type="hidden" name="context" value="40">-<a href="/hawiki/FindPage?value=LibraryDocumentation%2FIx">FindPage</a> or search titles <input type="text" name="text_title" value="" size="15" maxlength="50"><input type="image" src="/moinwiki/classic/img/moin-search.png" name="button_title" alt="[?]">, full text <input type="text" name="text_full" value="" size="15" maxlength="50"><input type="image" src="/moinwiki/classic/img/moin-search.png" name="button_full" alt="[?]"> or <a href="/hawiki/SiteNavigation">SiteNavigation</a>-</p>-</form>--<p>Or try one of these actions: <a href="/hawiki/LibraryDocumentation_2fIx?action=DeletePage">DeletePage</a>, <a href="/hawiki/LibraryDocumentation_2fIx?action=LikePages">LikePages</a>, <a href="/hawiki/LibraryDocumentation_2fIx?action=LocalSiteMap">LocalSiteMap</a>, <a href="/hawiki/LibraryDocumentation_2fIx?action=SpellCheck">SpellCheck</a></p>--</div>--</body>-</html>-
− scripts/hoogle/wiki/LibraryDocumentation_2fPrelude.html
@@ -1,90 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">-<html>-<head>----<title>LibraryDocumentation/Prelude - The Haskell Wiki</title>-<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="all" href="/moinwiki/classic/css/common.css">-<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="screen" href="/moinwiki/classic/css/screen.css">-<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="print" href="/moinwiki/classic/css/print.css">---<link rel="Start" href="/hawiki/FrontPage">-<link rel="Alternate" title="Wiki Markup" href="/hawiki/LibraryDocumentation_2fPrelude?action=raw">-<link rel="Alternate" media="print" title="Print View" href="/hawiki/LibraryDocumentation_2fPrelude?action=print">-<link rel="Up" href="/hawiki/LibraryDocumentation">-<link rel="Search" href="/hawiki/FindPage">-<link rel="Index" href="/hawiki/TitleIndex">-<link rel="Glossary" href="/hawiki/WordIndex">-<link rel="Help" href="/hawiki/HelpOnFormatting">-</head>--<body lang="en" dir="ltr">---<div id="logo"><a href="/hawiki/FrontPage"><img src="/small-lambda.gif" alt="The Haskell Wiki"></a></div>-<div id="username"><a href="/hawiki/UserPreferences">UserPreferences</a></div>-<div id="title"><h1><a title="Click here to do a full-text search for this title" href="/hawiki/LibraryDocumentation_2fPrelude?action=fullsearch&amp;value=%2FPrelude&amp;literal=1&amp;case=1&amp;context=40">LibraryDocumentation/Prelude</a></h1></div>-<ul id="iconbar">-<li><a title="Up" href="/hawiki/LibraryDocumentation"><img src="/moinwiki/classic/img/moin-parent.png" alt="Up" height="13" width="15"></a></li>-<li><a title="Edit" href="/hawiki/LibraryDocumentation_2fPrelude?action=edit"><img src="/moinwiki/classic/img/moin-edit.png" alt="Edit" height="12" width="12"></a></li>-<li><a title="View" href="/hawiki/LibraryDocumentation_2fPrelude"><img src="/moinwiki/classic/img/moin-show.png" alt="View" height="13" width="12"></a></li>-<li><a title="Diffs" href="/hawiki/LibraryDocumentation_2fPrelude?action=diff"><img src="/moinwiki/classic/img/moin-diff.png" alt="Diffs" height="11" width="15"></a></li>-<li><a title="Info" href="/hawiki/LibraryDocumentation_2fPrelude?action=info"><img src="/moinwiki/classic/img/moin-info.png" alt="Info" height="11" width="12"></a></li>-<li><a title="Subscribe" href="/hawiki/LibraryDocumentation_2fPrelude?action=subscribe"><img src="/moinwiki/classic/img/moin-subscribe.png" alt="Subscribe" height="10" width="14"></a></li>-<li><a title="Raw" href="/hawiki/LibraryDocumentation_2fPrelude?action=raw"><img src="/moinwiki/classic/img/moin-raw.png" alt="Raw" height="13" width="12"></a></li>-<li><a title="Print" href="/hawiki/LibraryDocumentation_2fPrelude?action=print"><img src="/moinwiki/classic/img/moin-print.png" alt="Print" height="14" width="16"></a></li>-</ul>--<ul id="navibar">-<li><a href="/hawiki/FrontPage">FrontPage</a></li>-<li><a href="/hawiki/RecentChanges">RecentChanges</a></li>-<li><a href="/hawiki/FindPage">FindPage</a></li>-<li><a href="/hawiki/HelpContents">HelpContents</a></li>-</ul>-<hr id="pagetrail">----<div id="content" lang="en" dir="ltr">-<h2 id="head-b18de56196691742b93c5fb84303bd9f2985f28a">Prelude - Library Documentation</h2>-<p>-Part of the <a href="/hawiki/LibraryDocumentation">LibraryDocumentation</a> project. -</p>-<p>-Todo... -</p>-</div>----<div id="footer">-<div id="credits">-<p>-    <a href="http://moinmoin.wikiwikiweb.de/">MoinMoin Powered</a><br>-    <a href="http://www.python.org/">-        <img src="/moinwiki/classic/img/PythonPowered.png" width="55" height="22" alt="PythonPowered">-    </a>-</p>-</div>---<a href="/hawiki/LibraryDocumentation_2fPrelude?action=refresh&amp;arena=Page.py&amp;key=LibraryDocumentation_2fPrelude.text_html">RefreshCache</a> for this page (cached 2005-12-13 12:06:36)<br>-<p>Immutable page (last edited 2005-12-13 12:06:36 by <span title="pc163.ad.cs.york.ac.uk"><a href="/hawiki/NeilMitchell">NeilMitchell</a></span>)</p>--<form method="POST" action="/hawiki/LibraryDocumentation_2fPrelude">-<p>-<input type="hidden" name="action" value="inlinesearch">-<input type="hidden" name="context" value="40">-<a href="/hawiki/FindPage?value=LibraryDocumentation%2FPrelude">FindPage</a> or search titles <input type="text" name="text_title" value="" size="15" maxlength="50"><input type="image" src="/moinwiki/classic/img/moin-search.png" name="button_title" alt="[?]">, full text <input type="text" name="text_full" value="" size="15" maxlength="50"><input type="image" src="/moinwiki/classic/img/moin-search.png" name="button_full" alt="[?]"> or <a href="/hawiki/SiteNavigation">SiteNavigation</a>-</p>-</form>--<p>Or try one of these actions: <a href="/hawiki/LibraryDocumentation_2fPrelude?action=DeletePage">DeletePage</a>, <a href="/hawiki/LibraryDocumentation_2fPrelude?action=LikePages">LikePages</a>, <a href="/hawiki/LibraryDocumentation_2fPrelude?action=LocalSiteMap">LocalSiteMap</a>, <a href="/hawiki/LibraryDocumentation_2fPrelude?action=SpellCheck">SpellCheck</a></p>--</div>--</body>-</html>-
− scripts/hoogle/wiki/backup.bat
@@ -1,7 +0,0 @@-REM First get the library docs
-wget http://www.haskell.org/hawiki/LibraryDocumentation --html-extension --recursive --level=1 --include-directories=hawiki
-copy www.haskell.org\hawiki\LibraryDocumentation*.* .
-
-REM And now specific hoogle related pages
-wget http://www.haskell.org/hawiki/Hoogle --html-extension
-wget http://www.haskell.org/hawiki/Keywords --html-extension
− scripts/timein
@@ -1,23 +0,0 @@-#!/usr/bin/perl-#-# author : Don Stewart-# Tue Oct  5 12:24:58 EST 2004--$page ='http://www.timeanddate.com/worldclock/results.html';--$city = $ARGV[0];--@results = `w3m -dump "$page?query=$city"`;--$error = "Sorry, don't know this city";--for (@results) {-	if (/no matching cities/) {-		print "$error\n";-		exit 0;-	}-        next if not /Current time/;-        s/^.*time\s*//;-        print;-        exit 0;-}
− scripts/vim/README
@@ -1,11 +0,0 @@-Vim support for lambdabot--To use, -    * install these scripts into your path somewhere-    -From within Vim, type:-    !!foo--where 'foo' is the script to run, and it will replace the contents of-the current line, with the result filtered through that lambdabot-command.
− scripts/vim/bot
@@ -1,19 +0,0 @@-#!/bin/sh--# Copyright (c) 2006 Don Stewart - http://www.cse.unsw.edu.au/~dons-# GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)--#-# Generic lambdabot binding-#-# Select the expression you want to refactor, on a line of its own, and-# in vim, type:-#       !!bot cmd-#-# (Assuming your lambdabot is installed in $HOME/lambdabot, it will-# replace the expression with the pointfree version-#--DECL=`cat`-cd $HOME/lambdabot/-echo "$* $DECL" | ./lambdabot | sed '$d;s/lambdabot> //'
− scripts/vim/pl
@@ -1,21 +0,0 @@-#!/bin/sh--# Copyright (c) 2006 Don Stewart - http://www.cse.unsw.edu.au/~dons-# GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)--#-# A shell script to be called from vim, to automatically refactor a code-# fragment.-#-# Select the expression you want to refactor, on a line of its own, and-# in vim, type:-#       !!pl-#-# (Assuming your lambdabot is installed in $HOME/lambdabot, it will-# replace the expression with the pointfree version-#--DECL=`cat`-cd $HOME/lambdabot/-echo "pl $DECL" | ./lambdabot 2> /dev/null | sed '$d;/Irc/d;s/lambdabot> //'-
− scripts/vim/run
@@ -1,21 +0,0 @@-#!/bin/sh--# Copyright (c) 2006 Don Stewart - http://www.cse.unsw.edu.au/~dons-# adapted by Gareth Smith-# GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)--#-# A shell script to be called from vim, to use the awsesome power of haskell-# string processing in everyday editing.-#-# Select the line you want to edit, and in vim, type:-#       !!run-#-# (Assuming your lambdabot is installed in $HOME/lambdabot) it will-# run the line as a haskell expression.-#--DECL=`cat`-cd $HOME/lambdabot-echo "run $DECL" | ./lambdabot 2> /dev/null | sed '$d;/Irc/d;s/lambdabot> //'-
− scripts/vim/runwith
@@ -1,32 +0,0 @@-#!/bin/sh--# Copyright (c) 2006 Don Stewart - http://www.cse.unsw.edu.au/~dons-# adapted by Gareth Smith-# GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)--#-# A shell script to be called from vim, to use the awsesome power of haskell-# string processing in everyday editing.-#-# Select the line you want to edit, and in vim, type:-#       !!runwith f-#-# where f :: (Show a) => String -> a-#-# (Assuming your lambdabot is installed in $HOME/lambdabot) it will-# replace the line with (f line)-#-# Hint: If you find yourself using a particular function a lot, use:-#       !!bot let-# to define it in lambdabot's local namespace.-#-# Isn't perfect yet - I'd like it if for functions f :: String -> String, that-# the returned String didn't have to pass through the show function, so we-# didn't get extraneous quote marks. For now, you can s/"//g them away though-# :)-#--DECL=`cat`-cd $HOME/lambdabot-echo "run $* \"$DECL\"" | ./lambdabot 2> /dev/null | sed '$d;/Irc/d;s/lambdabot> //'-
− scripts/vim/typeOf
@@ -1,12 +0,0 @@-#!/bin/sh--# Copyright (c) 2005 Don Stewart - http://www.cse.unsw.edu.au/~dons-# GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)--# input is a top level .hs decls--FILE=$*-DECL=`cat`-ID=`echo $DECL | sed 's/^\([^ ]*\).*/\1/'`-echo ":t $ID" | ghci -v0 -cpp -fglasgow-exts -w $FILE-echo $DECL
− testsuite/Makefile
@@ -1,13 +0,0 @@-HC_OPTS=        -fasm -O2 -fth -fglasgow-exts -i..-PP=             ./logpp-GHC=            ghc $(HC_OPTS) --make -pgmF $(PP) -F -threaded--all: run-utests--.PHONY: run-utests-run-utests: -	$(GHC) -o $@ UnitTestsMain.hs--.PHONY: clean-clean:-	rm -f *.o *.hi $(BINS) run-utests
− testsuite/README
@@ -1,1 +0,0 @@-Add tests to Tests.hs. Should be fairly obvious.
− testsuite/TestFramework.hs
@@ -1,208 +0,0 @@-module TestFramework (--  assert_, assertEqual_, assertEqual2_, assertNotNull_, assertNull_,-  assertSeqEqual_,-  assertLambdabot_,--  tests, random, io80,--  HU.Test(..), runTestTT--) where--import Data.Char-import IO ( stderr )-import List ( (\\) )-import Language.Haskell.TH-import qualified Test.HUnit as HU-import System.Random hiding (random)-import Test.QuickCheck--import Lib.Process-import System.Directory-import qualified Control.Exception as E--type Location = (String, Int)--showLoc :: Location -> String-showLoc (f,n) = f ++ ":" ++ show n--assert_ :: Location -> Bool -> HU.Assertion-assert_ loc False = HU.assertFailure ("assert failed at " ++ showLoc loc)-assert_ loc True = return ()---- lb-assertLambdabot_ :: Location -> String -> String -> HU.Assertion-assertLambdabot_ loc src expected = do-    actual <- echo src--    if expected /= actual-       then HU.assertFailure (msg actual)-       else return ()--    where msg a = "assertEqual failed at " ++ showLoc loc ++ -                "\n expected: " ++ show expected ++ "\n but got:  " ++ show a--assertEqual_ :: (Eq a, Show a) => Location -> a -> a -> HU.Assertion-assertEqual_ loc expected actual =--    if expected /= actual-       then HU.assertFailure msg-       else return ()--    where msg = "assertEqual failed at " ++ showLoc loc ++ -                "\n expected: " ++ show expected ++ "\n but got:  " ++ show actual--assertEqual2_ :: Eq a => Location -> a -> a -> HU.Assertion-assertEqual2_ loc expected actual = -    if expected /= actual-       then HU.assertFailure ("assertEqual2' failed at " ++ showLoc loc)-       else return ()--assertSeqEqual_ :: (Eq a, Show a) => Location -> [a] -> [a] -> HU.Assertion-assertSeqEqual_ loc expected actual = -    let ne = length expected-        na = length actual-        in case () of-            _| ne /= na ->-                 HU.assertFailure ("assertSeqEqual failed at " ++ showLoc loc-                                   ++ "\n expected length: " ++ show ne-                                   ++ "\n actual length: " ++ show na)-             | not (unorderedEq expected actual) ->-                 HU.assertFailure ("assertSeqEqual failed at " ++ showLoc loc-                                   ++ "\n expected: " ++ show expected-                                   ++ "\n actual: " ++ show actual)-             | otherwise -> return ()-    where unorderedEq l1 l2 = -              null (l1 \\ l2) && null (l2 \\ l1)-              --assertNotNull_ :: Location -> [a] -> HU.Assertion-assertNotNull_ loc [] = HU.assertFailure ("assertNotNull failed at " ++ showLoc loc)-assertNotNull_ _ (_:_) = return ()--assertNull_ :: Location -> [a] -> HU.Assertion-assertNull_ loc (_:_) = HU.assertFailure ("assertNull failed at " ++ showLoc loc)-assertNull_ loc [] = return ()---tests :: String -> Q [Dec] -> Q [Dec]-tests name decs = -    do decs' <- decs-       let ts = collectTests decs'-       e <- [| HU.TestLabel name (HU.TestList $(listE (map mkExp ts))) |]-       let lete = LetE decs' e-           suiteDec = ValD (VarP (mkName name)) (NormalB lete) []-           resDecs = [suiteDec]-       --runIO $ putStrLn (pprint resDecs)-       return resDecs-    where-    collectTests :: [Dec] -> [Name]-    collectTests [] = []-    collectTests (ValD (VarP name) _ _ : rest) -        | isTestName (nameBase name) = name : collectTests rest-    collectTests (_ : rest) = collectTests rest-    isTestName ('t':'e':'s':'t':_) = True-    isTestName _ = False-    mkExp :: Name -> Q Exp-    mkExp name = -        let s = nameBase name-            in [| HU.TestLabel s (HU.TestCase $(varE name)) |]----- We use our own test runner, because HUnit print test paths a bit unreadable:--- If a test list contains a named tests, then HUnit prints `i:n' where i--- is the index of the named tests and n is the name.--{--`runTestText` executes a test, processing each report line according-to the given reporting scheme.  The reporting scheme's state is-threaded through calls to the reporting scheme's function and finally-returned, along with final count values.--}-                                               -runTestText :: HU.PutText st -> HU.Test -> IO (HU.Counts, st)-runTestText (HU.PutText put us) t = do-  put allTestsStr True us-  (counts, us') <- HU.performTest reportStart reportError reportFailure us t-  us'' <- put (HU.showCounts counts) True us'-  return (counts, us'')- where-  allTestsStr = unlines ("All tests:" :-                         map (\p -> "  " ++ showPath p) (HU.testCasePaths t))-  reportStart ss us = put (HU.showCounts (HU.counts ss)) False us-  reportError   = reportProblem "Error:"   "Error in:   "-  reportFailure = reportProblem "Failure:" "Failure in: "-  reportProblem p0 p1 msg ss us = put line True us-   where line  = "### " ++ kind ++ path' ++ '\n' : msg-         kind  = if null path' then p0 else p1-         path' = showPath (HU.path ss)----{--`showPath` converts a test case path to a string, separating adjacent-elements by ':'.  An element of the path is quoted (as with `show`)-when there is potential ambiguity.--}--showPath :: HU.Path -> String-showPath [] = ""-showPath nodes = foldr1 f (map showNode (filterNodes (reverse nodes)))- where f a b = a ++ ":" ++ b-       showNode (HU.ListItem n) = show n-       showNode (HU.Label label) = safe label (show label)-       safe s ss = if ':' `elem` s || "\"" ++ s ++ "\"" /= ss then ss else s-       filterNodes (HU.ListItem _ : l@(HU.Label _) : rest) = -           l : filterNodes rest-       filterNodes [] = []-       filterNodes (x:rest) = x : filterNodes rest--{--`runTestTT` provides the "standard" text-based test controller.-Reporting is made to standard error, and progress reports are-included.  For possible programmatic use, the final counts are-returned.  The "TT" in the name suggests "Text-based reporting to the-Terminal".--}--runTestTT :: HU.Test -> IO HU.Counts-runTestTT t = do (counts, 0) <- runTestText (HU.putTextToHandle stderr True) t-                 return counts--lambdabot     = "./lambdabot"-lambdabotHome = ".."---- run the lambdabot-echo :: String -> IO String-echo cmd = E.handle (\e -> return (show e)) $ do-    p <- getCurrentDirectory-    setCurrentDirectory lambdabotHome-    let s = cmd ++ "\n"-    v <- eval lambdabot s clean-    setCurrentDirectory p-    return v- where-    clean s = let f = drop 11 . reverse-              in case f (f s) of-                    [] -> []-                    x  -> init x--    eval :: FilePath -> String -> (String -> String) -> IO String-    eval binary src scrub = do-        (out,_,_) <- popen binary [] (Just src)-        return ( scrub out )--random :: Arbitrary a => IO a-random = do-    g <- getStdGen-    return $ generate 1000 g (arbitrary :: Arbitrary a => Gen a)--io80 :: IO String -> IO String-io80 f = take 80 `fmap` f--instance Arbitrary Char where-    -- filters ctrl chars, and chops lines too remember!-    arbitrary     = elements $ ['a'..'z'] ++ ['A' .. 'Z'] ++ ['0' .. '9']-    coarbitrary c = variant (ord c `rem` 4)-
− testsuite/Tests.hs
@@ -1,50 +0,0 @@-module Tests where--import Control.Monad-import TestFramework---- number of tests to run-n    = 10--run f = mapM_ (const f) [1..n]-------------------------------------------------------------------------------- Test the dummy plugin----$(tests "dummyPlugin" [d|-- testDummy = lb "dummy" "dummy"- testEval  = lb "eval"  ""-- testId= run $ do-            s <- io80 random-            lb ("id " ++ s) (" " ++ s)-- testBug = lb "bug" "http://hackage.haskell.org/trac/ghc/newticket?type=bug"-- |])-------------------------------------------------------------------------------- Test the Where plugin-----$(tests "wherePlugin" [d|-    testWhere   = lb "where ghc" "http://haskell.org/ghc"-    testWhat    = lb "where ghc" "http://haskell.org/ghc"-    testUrl     = lb "where ghc" "http://haskell.org/ghc"- |] )-------------------------------------------------------------------------------- Test the Source plugin-----$(tests "sourcePlugin" [d|-    testSource  = lb "source foldr" $ unlines-        [ "foldr k z xs = go xs"-        ,"    where go []     = z"-        ,"          go (y:ys) = y `k` go ys"]-- |] )
− testsuite/UnitTestsMain.hs
@@ -1,11 +0,0 @@-module Main where--import TestFramework-import Tests--allTests = TestList-    [ dummyPlugin-    , wherePlugin-    ]--main = runTestTT allTests
− testsuite/VariableExpansion.hs
@@ -1,90 +0,0 @@-module VariableExpansion (expand) where--import Language.Haskell.TH--data Token1 = LitChar Char-           | ShowVar1 String-           | StrVar1 String-             deriving (Eq, Show)--data Token2 = LitStr String-           | ShowVar2 String-           | StrVar2 String-             deriving (Eq, Show)--splitAtElem :: Eq a => [a] -> a -> ([a], [a])-splitAtElem l e = splitAtPred l (e ==)---- splitAtPred [1,2,3,4] (==3)---   ==> ([1,2],[3,4])-splitAtPred :: [a] -> (a -> Bool) -> ([a], [a])-splitAtPred (x:xs) p-    | p x        = ([], x:xs)-    | otherwise  = let (a, b) = splitAtPred xs p-                       in (x:a, b)-splitAtPred [] _ = ([], [])--parse :: String -> Q [Token1]-parse ('$':'$':s) = do l <- parse s-                       return (LitChar '$' : l)-parse ('%':'%':s) = do l <- parse s-                       return (LitChar '%' : l)-parse ('$':'{':s) = do (name, restToks) <- parseVar s-                       return (ShowVar1 name : restToks)-parse ('%':'{':s) = do (name, restToks) <- parseVar s-                       return (StrVar1 name : restToks)-parse ('$':_:_)   = fail "Error parsing string to expand"-parse ('%':_:_)   = fail "Error parsing string to expand"-parse (c:s)       = do l <- parse s-                       return (LitChar c : l)-parse []          = return []--parseVar :: [Char] -> Q ([Char], [Token1])-parseVar s =-    case splitAtElem s '}' of-      (_, []) -> fail "Error parsing string to expand"-      (name, '}':rest) -> do l <- parse rest-                             return (name, l)-      _       -> fail "Error parsing string to expand"---token1ToToken2 :: [Token1] -> [Token2]-token1ToToken2 [] = []-token1ToToken2 toks = -    let (chars, rest) = splitAtPred toks (\t -> case t of-                                                  ShowVar1 _ -> True-                                                  StrVar1 _  -> True-                                                  _          -> False)-        (vars, rest') = splitAtPred rest (\t -> case t of-                                                  LitChar _ -> True-                                                  _         -> False)-        s = map (\t -> case t of LitChar c -> c; _ -> error "token1ToToken2:s") chars-        vars' = map (\t -> case t of-                             ShowVar1 v -> ShowVar2 v-                             StrVar1 v  -> StrVar2 v-                             _          -> error "token1ToToken2") vars-        in (if s /= "" then [LitStr s] else []) ++ vars' ++ -           token1ToToken2 rest'---expand :: String -> ExpQ-expand s =-    do tokens <- parse s-       --runIO $ putStrLn ("parsing ok: " ++ show tokens)-       let tokens2 = token1ToToken2 tokens-       --runIO $ putStrLn ("tokens2: " ++ show tokens2)-       exps <- sequence $ map toExp tokens2-       conc <- [| (++) |]-       return $ foldr -                  (\l r -> InfixE (Just l) conc (Just r))-                  (LitE (StringL ""))-                  exps-    where toExp (LitStr s')   = litE (StringL s')-          toExp (ShowVar2 s') = [| show $(varE (mkName s')) |]-          toExp (StrVar2 s')  = varE (mkName s')----- Local Variables: **--- indent-tabs-mode: nil **--- tab-width: 4 **--- End: **
− testsuite/logpp
@@ -1,13 +0,0 @@-#!/bin/sh--origName=$1-inName=$2-outName=$3-macros=`dirname $0`/macros.m4--if [ -z "origName" -o -z "$inName" -o -z "$outName" ] ; then-    echo "Usage: $0 original-filename input-filename output-filename"-    exit 1-fi--exec /usr/bin/m4 -s "-D__orig_file__=\"$origName\"" "-D__TOPLEVEL_DIRECTORY__=\"`pwd`\"" "$macros" "$inName" > "$outName"
− testsuite/logpp.in
@@ -1,13 +0,0 @@-#!/bin/sh--origName=$1-inName=$2-outName=$3-macros=`dirname $0`/macros.m4--if [ -z "origName" -o -z "$inName" -o -z "$outName" ] ; then-    echo "Usage: $0 original-filename input-filename output-filename"-    exit 1-fi--exec @WithM4@ -s "-D__orig_file__=\"$origName\"" "-D__TOPLEVEL_DIRECTORY__=\"`pwd`\"" "$macros" "$inName" > "$outName"
− testsuite/macros.m4
@@ -1,16 +0,0 @@-define(SRC_LOC_, (`__orig_file__', `__line__'))-define(debug, (debug_ `SRC_LOC_'))dnl-define(info, (info_ `SRC_LOC_'))dnl-define(warn, (warn_ `SRC_LOC_'))dnl-define(fatal, (fatal_ `SRC_LOC_'))dnl-define(niceError, (niceError_ `SRC_LOC_'))dnl-define(dtrace, (dtrace_ `SRC_LOC_'))dnl-define(assert, (assert_ `SRC_LOC_'))dnl-define(assertEqual, (assertEqual_ `SRC_LOC_'))dnl-define(lb, (assertLambdabot_ `SRC_LOC_'))dnl-define(assertEqual2, (assertEqual2_ `SRC_LOC_'))dnl-define(assertSeqEqual, (assertSeqEqual_ `SRC_LOC_'))dnl-define(assertNull, (assertNull_ `SRC_LOC_'))dnl-define(assertNotNull, (assertNotNull_ `SRC_LOC_'))dnl-changequote(,)dnl-changecom(",")dnl