-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Some monad transformers and typeclasses for abstraction of global dependencies.
--
@package chatty
@version 0.6.2.1
-- | Provides typeclasses for clocks and randomizer environments
module System.Chatty.Misc
-- | Typeclass for all monads that know the time
class (Functor m, Monad m) => ChClock m where mgetstamp = fmap (flip diffUTCTime (UTCTime (fromGregorian 1970 1 1) (secondsToDiffTime 0))) mutctime
mutctime :: ChClock m => m UTCTime
mgetstamp :: ChClock m => m NominalDiffTime
-- | Typeclass for all monads that may provide random numbers
class Monad m => ChRandom m
mrandom :: (ChRandom m, Random r) => m r
mrandomR :: (ChRandom m, Random r) => (r, r) -> m r
instance ChRandom IO
instance ChClock IO
module Text.Chatty.Templates
-- | Returns a TypeQ from a name
strToType :: Name -> Q Type
-- | Provides handle-closing.
module Text.Chatty.Finalizer
-- | Class for all handle-finalizing monads. Required for file
-- redirections.
class Monad m => ChFinalizer m where mqfhs = foldr ((>>) . mqfh) (return ())
mqfh :: ChFinalizer m => Handle -> m ()
mqfhs :: ChFinalizer m => [Handle] -> m ()
mfin :: ChFinalizer m => m ()
-- | Handle-closing transformer
newtype HandleCloserT m a
HandleCloser :: ([Handle] -> m (a, [Handle])) -> HandleCloserT m a
runHandleCloserT :: HandleCloserT m a -> [Handle] -> m (a, [Handle])
-- | Run function with handle closer
withLazyIO :: (MonadIO m, Functor m) => HandleCloserT m a -> m a
instance MonadIO m => ChFinalizer (HandleCloserT m)
instance MonadIO m => MonadIO (HandleCloserT m)
instance Monad m => Functor (HandleCloserT m)
instance MonadTrans HandleCloserT
instance Monad m => Monad (HandleCloserT m)
-- | Provides a typeclass for all monads that may scan text.
module Text.Chatty.Scanner
-- | A typeclass for all monads that may read input.
class Monad m => ChScanner m where mscanh = return Nothing
mscan1 :: ChScanner m => m Char
mscanL :: ChScanner m => m String
mscannable :: ChScanner m => m Bool
mscanh :: ChScanner m => m (Maybe Handle)
mready :: ChScanner m => m Bool
-- | HereStringT holds a given string and uses it as input for the function
-- (much like here-strings in the shell)
newtype HereStringT m a
HereString :: (String -> m (a, String)) -> HereStringT m a
runHereStringT :: HereStringT m a -> String -> m (a, String)
-- | QuietT does not convey any input (much like <devnull in the
-- shell)
newtype QuietT m a
Quiet :: m a -> QuietT m a
runQuietT :: QuietT m a -> m a
-- | InRedirT redirects all input to a given handle (much like <filename
-- in the shell)
newtype InRedirT m a
InRedir :: (Handle -> m (a, Handle)) -> InRedirT m a
runInRedirT' :: InRedirT m a -> Handle -> m (a, Handle)
-- | InRedirT on an IO monad
type InRedir = InRedirT (HandleCloserT IO)
-- | Run InRedirT with handle
runInRedirT :: Functor m => InRedirT m a -> Handle -> m a
-- | Run InRedir with handle
runInRedir :: InRedir a -> Handle -> IO a
-- | Run InRedirT with a filename
runInRedirFT :: (Functor m, MonadIO m, ChFinalizer m) => InRedirT m a -> FilePath -> m a
-- | Run InRedir with a filename
runInRedirF :: InRedir a -> FilePath -> IO a
-- | Line-scanning alternative to mscan1/L
mscanLn :: ChScanner m => m String
-- | Scan a fixed number of chars
mscanN :: ChScanner m => Int -> m String
-- | Redirection source that does not provide any output
data EmptyI
EmptyI :: EmptyI
-- | Class for all primitive redirection sources.
class RedirectionSource t mt a r | t -> mt, t a -> r
(.<.) :: (RedirectionSource t mt a r, ChFinalizer m, Functor m, MonadIO m, ChScanner (mt m)) => mt m a -> t -> m r
-- | Class for all Here-Documents
class RedirectionHeredoc t mt a r | t -> mt, t a -> r
(.<<.) :: (RedirectionHeredoc t mt a r, Functor m, ChScanner (mt m)) => mt m a -> t -> m r
instance RedirectionHeredoc String HereStringT a a
instance RedirectionSource Handle InRedirT a a
instance RedirectionSource FilePath InRedirT a a
instance RedirectionSource EmptyI QuietT a a
instance ChFinalizer m => ChFinalizer (InRedirT m)
instance Monad m => Functor (InRedirT m)
instance MonadIO m => ChScanner (InRedirT m)
instance MonadIO m => MonadIO (InRedirT m)
instance MonadTrans InRedirT
instance Monad m => Monad (InRedirT m)
instance Functor m => Functor (QuietT m)
instance Monad m => ChScanner (QuietT m)
instance MonadTrans QuietT
instance Monad m => Monad (QuietT m)
instance ChFinalizer m => ChFinalizer (HereStringT m)
instance MonadIO m => MonadIO (HereStringT m)
instance Monad m => ChScanner (HereStringT m)
instance Monad m => Functor (HereStringT m)
instance MonadTrans HereStringT
instance Monad m => Monad (HereStringT m)
instance Monad m => ChScanner (StateT String m)
instance ChScanner IO
-- | Provides a typeclass for buffered scanners as well as a buffering
-- monad transformer.
module Text.Chatty.Scanner.Buffered
-- | Typeclass for all buffered ChScanners.
class ChScanner m => ChBufferedScanner m
mpeek1 :: ChBufferedScanner m => m Char
mprepend :: ChBufferedScanner m => String -> m ()
-- | Typeclass for all BufferedScanners with support for pushing
-- and popping.
class ChBufferedScanner m => ChStackBufferedScanner m
mpush :: ChStackBufferedScanner m => m ()
mpop :: ChStackBufferedScanner m => m ()
-- | A buffering MonadScanner transformer that lets you use
-- mpeek1 and mprepend everywhere.
newtype ScannerBufferT m a
ScannerBuffer :: ([String] -> m (a, [String])) -> ScannerBufferT m a
runScannerBufferT :: ScannerBufferT m a -> [String] -> m (a, [String])
instance ChScanner m => ChStackBufferedScanner (ScannerBufferT m)
instance ChScanner m => ChBufferedScanner (ScannerBufferT m)
instance MonadIO m => MonadIO (ScannerBufferT m)
instance ChScanner m => ChScanner (ScannerBufferT m)
instance Monad m => Functor (ScannerBufferT m)
instance MonadTrans ScannerBufferT
instance Monad m => Monad (ScannerBufferT m)
instance Monad m => ChBufferedScanner (HereStringT m)
instance Monad m => ChBufferedScanner (StateT String m)
-- | Provides a typeclass for all monads that may print text.
module Text.Chatty.Printer
-- | A typeclass for all monads that may output strings.
class Monad m => ChPrinter m where mnoecho = mprint mflush = return () mnomask = mprint
mprint :: ChPrinter m => String -> m ()
mnoecho :: ChPrinter m => String -> m ()
mflush :: ChPrinter m => m ()
mnomask :: ChPrinter m => String -> m ()
-- | DeafT discards all output (much like >/dev/null in the shell)
newtype DeafT m a
Deaf :: m a -> DeafT m a
runDeafT :: DeafT m a -> m a
-- | Redirects all output to a given handle (much like >filename in the
-- shell)
newtype OutRedirT m a
OutRedir :: (Handle -> m (a, Handle)) -> OutRedirT m a
runOutRedirT' :: OutRedirT m a -> Handle -> m (a, Handle)
-- | OutRedirT on a blank IO monad
type OutRedir = OutRedirT IO
-- | Run OutRedirT with a Handle
runOutRedirT :: Functor m => OutRedirT m a -> Handle -> m a
-- | Run OutRedir with a Handle
runOutRedir :: OutRedir a -> Handle -> IO a
-- | Run OutRedirT with a FilePath
runOutRedirFT :: (Functor m, MonadIO m) => OutRedirT m a -> FilePath -> IOMode -> m a
-- | Run OutRedir with a FilePath
runOutRedirF :: OutRedir a -> FilePath -> IOMode -> IO a
-- | Catches all output (much like VAR=$(...) in the shell)
newtype RecorderT m a
Recorder :: ([String] -> m (a, [String])) -> RecorderT m a
runRecorderT' :: RecorderT m a -> [String] -> m (a, [String])
-- | RecorderT on the Identity
type Recorder = RecorderT Identity
-- | The recorder state. Use this together with replay,
-- replayM or replay_.
newtype Replayable
Replayable :: [String] -> Replayable
-- | Replay a recorder state inside a Monad.
replayM :: Monad m => m Replayable -> m String
-- | Replay a recorder state in a pure context.
replay :: Replayable -> String
-- | Replay the current recorder state without leaving the recorder.
replay_ :: Monad m => RecorderT m String
-- | Run Recorder and also return its state.
runRecorder :: Recorder a -> (a, Replayable)
-- | Run RecorderT and also return its state.
runRecorderT :: (Functor m, Monad m) => RecorderT m a -> m (a, Replayable)
-- | Line-terminating alternative to mprint
mprintLn :: ChPrinter m => String -> m ()
-- | Line-terminating alternative to mnomask
mnomaskLn :: ChPrinter m => String -> m ()
-- | Redirection target that discards input.
data DiscardO
DiscardO :: DiscardO
-- | Redirection target that records input.
data RecordO
RecordO :: RecordO
-- | Class for all redirection targets.
class RedirectionTarget t mt a r | t -> mt, t a -> r where (.>>.) = (.>.)
(.>.) :: (RedirectionTarget t mt a r, Functor m, MonadIO m, ChPrinter (mt m)) => mt m a -> t -> m r
(.>>.) :: (RedirectionTarget t mt a r, Functor m, MonadIO m, ChPrinter (mt m)) => mt m a -> t -> m r
instance RedirectionTarget Handle OutRedirT a a
instance RedirectionTarget FilePath OutRedirT a a
instance RedirectionTarget RecordO RecorderT a (a, Replayable)
instance RedirectionTarget DiscardO DeafT a a
instance Show Replayable
instance MonadIO m => MonadIO (RecorderT m)
instance Monad m => Functor (RecorderT m)
instance Monad m => ChPrinter (RecorderT m)
instance MonadTrans RecorderT
instance Monad m => Monad (RecorderT m)
instance Monad m => Functor (OutRedirT m)
instance MonadIO m => ChPrinter (OutRedirT m)
instance MonadIO m => MonadIO (OutRedirT m)
instance MonadTrans OutRedirT
instance Monad m => Monad (OutRedirT m)
instance Monad m => ChPrinter (DeafT m)
instance MonadIO m => MonadIO (DeafT m)
instance Functor m => Functor (DeafT m)
instance MonadTrans DeafT
instance Monad m => Monad (DeafT m)
instance Monad m => ChPrinter (StateT String m)
instance ChPrinter IO
-- | Provides a typeclass for process spawning.
module System.Chatty.Spawn
-- | Class for all (real or pseudo) process-spawning monads.
class Monad m => ChSpawn m
mspw :: ChSpawn m => String -> [String] -> Either Handle String -> m (Int, String, [Handle])
mah :: ChSpawn m => String -> m Bool
-- | Spawn process
spawn :: (ChFinalizer m, ChScanner m, ChPrinter m, ChSpawn m, Functor m) => String -> [String] -> m Int
instance ChSpawn IO
-- | Provides a MonadSpawn overlay that may catch specific spawn calls and
-- handle them itself.
module System.Chatty.Spawn.Overlay
-- | MonadSpawn overlay. Carries a map of own command implementations that
-- are called instead of the actual ones.
newtype SpawnOverlayT m a
SpawnOverlay :: ([(String, [String] -> String -> m (Int, String))] -> m (a, [(String, [String] -> String -> m (Int, String))])) -> SpawnOverlayT m a
runSpawnOverlayT :: SpawnOverlayT m a -> [(String, [String] -> String -> m (Int, String))] -> m (a, [(String, [String] -> String -> m (Int, String))])
instance ChSpawn m => ChSpawn (SpawnOverlayT m)
instance Monad m => Functor (SpawnOverlayT m)
instance MonadIO m => MonadIO (SpawnOverlayT m)
instance MonadTrans SpawnOverlayT
instance Monad m => Monad (SpawnOverlayT m)
-- | Provides builtins for some common commands.
module System.Chatty.Spawn.Builtins
-- | Use builtins if possible.
withBuiltins :: (Functor m, ChSpawn m) => SpawnOverlayT m a -> m a
-- | Provides a printer class that offers several channels.
module Text.Chatty.Channel.Printer
-- | Typeclass for all printers that offer several channels.
class (ChPrinter m, Eq c) => ChChannelPrinter c m where cbracket c m = cstart c >> m >>= \ a -> cfin c >> return a cprint c s = cbracket c $ mprint s
cbracket :: ChChannelPrinter c m => c -> m a -> m a
cstart :: ChChannelPrinter c m => c -> m ()
cfin :: ChChannelPrinter c m => c -> m ()
cprint :: ChChannelPrinter c m => c -> String -> m ()
cthis :: ChChannelPrinter c m => m c
-- | Catches all output on multiple channels.
newtype ArchiverT c m a
Archiver :: (([(c, [String])], [c]) -> m (a, ([(c, [String])], [c]))) -> ArchiverT c m a
runArchiverT' :: ArchiverT c m a -> ([(c, [String])], [c]) -> m (a, ([(c, [String])], [c]))
type IntArchiverT = ArchiverT Int
type BoolArchiverT = ArchiverT Bool
type HandleArchiverT = ArchiverT Handle
runArchiverT :: (Eq c, Monad m) => c -> ArchiverT c m a -> m (a, [(c, Replayable)])
-- | Forwards output only on a specific channel.
newtype FilterT c m a
Filter :: ((c, [c]) -> m (a, [c])) -> FilterT c m a
runFilterT :: FilterT c m a -> (c, [c]) -> m (a, [c])
type IntFilterT = FilterT Int
type BoolFilterT = FilterT Bool
type HandleFilterT = FilterT Handle
-- | Joins all output regardless of its channel.
newtype JoinerT m a
Joiner :: m a -> JoinerT m a
runJoinerT :: JoinerT m a -> m a
instance (Eq c, ChPrinter m) => ChChannelPrinter c (JoinerT m)
instance ChPrinter m => ChPrinter (JoinerT m)
instance Functor m => Functor (JoinerT m)
instance MonadIO m => MonadIO (JoinerT m)
instance MonadTrans JoinerT
instance Monad m => Monad (JoinerT m)
instance (Eq c, ChPrinter m) => ChChannelPrinter c (FilterT c m)
instance (Eq c, ChPrinter m) => ChPrinter (FilterT c m)
instance Monad m => Functor (FilterT c m)
instance MonadIO m => MonadIO (FilterT c m)
instance MonadTrans (FilterT c)
instance Monad m => Monad (FilterT c m)
instance (Eq c, Monad m) => ChChannelPrinter c (ArchiverT c m)
instance (Eq c, Monad m) => ChPrinter (ArchiverT c m)
instance Monad m => Functor (ArchiverT c m)
instance MonadIO m => MonadIO (ArchiverT c m)
instance MonadTrans (ArchiverT c)
instance Monad m => Monad (ArchiverT c m)
module System.Chatty.Filesystem
data FSExec a
FSSucc :: a -> FSExec a
NoPermission :: FSExec a
NotFound :: FSExec a
data File m
File :: m (FSExec ()) -> m (FSExec ()) -> String -> String -> File m
loadFun :: File m -> m (FSExec ())
saveFun :: File m -> m (FSExec ())
leftBehind :: File m -> String
rightPending :: File m -> String
newtype Path
MultiPath :: [PathSpec] -> Path
data PathSpec
Path :: PathRoot -> [PathSeg] -> PathSpec
data PathRoot
Absolute :: PathRoot
Relative :: PathRoot
data PathSeg
SelParent :: PathSeg
SelChild :: String -> PathSeg
type FileA m = Atom (File m)
data Mountpoint m
Mount :: [Mountpoint m] -> Atom a -> Path -> (Path -> (Atom a, Path) -> m (FSExec (FileA m))) -> Mountpoint m
subMounts :: Mountpoint m -> [Mountpoint m]
mstate :: Mountpoint m -> Atom a
mpath :: Mountpoint m -> Path
mopen :: Mountpoint m -> Path -> (Atom a, Path) -> m (FSExec (FileA m))
class Monad m => ChFilesystem m
fopen :: ChFilesystem m => Path -> m (FSExec (FileA m))
fpwd :: ChFilesystem m => m Path
fcd :: ChFilesystem m => Path -> m ()
class Monad m => CanLoad m n
fload :: CanLoad m n => FileA n -> m (FSExec ())
class Monad m => CanSave m n
fsave :: CanSave m n => FileA n -> m (FSExec ())
class Monad m => CanMount m n
fmount :: CanMount m n => Mountpoint n -> m ()
data FilePrinterT m a
FilePrinter :: (FileA m -> m a) -> FilePrinterT m a
runFilePrinterT :: FilePrinterT m a -> FileA m -> m a
data FileScannerT m a
FileScanner :: (FileA m -> m a) -> FileScannerT m a
runFileScannerT :: FileScannerT m a -> FileA m -> m a
newtype NullFsT m a
NullFs :: (Path -> [Mountpoint (NullFsT m)] -> m (a, Path, [Mountpoint (NullFsT m)])) -> NullFsT m a
runNullFsT :: NullFsT m a -> Path -> [Mountpoint (NullFsT m)] -> m (a, Path, [Mountpoint (NullFsT m)])
absPath :: ChFilesystem m => Path -> m Path
cmpPath' :: [PathSeg] -> [PathSeg] -> Maybe [PathSeg]
cmpPath :: Path -> Path -> Path
isPath :: Path -> Bool
path :: String -> Path
expandofs :: (ChAtoms m, ChFilesystem m) => m (Mountpoint m)
printerfs :: (ChPrinter m, ChAtoms m, ChFilesystem m) => m (Mountpoint m)
mount :: (CanMount m m, ChAtoms m, ChFilesystem m) => m (Mountpoint m) -> Path -> m ()
withNullFs :: ChAtoms m => NullFsT m a -> m a
withExpandoFs :: (ChAtoms m, ChAtoms (NullFsT m)) => NullFsT m a -> m a
instance Eq PathRoot
instance Ord PathRoot
instance Show PathRoot
instance Eq PathSeg
instance Ord PathSeg
instance Show PathSeg
instance Eq PathSpec
instance Ord PathSpec
instance Show PathSpec
instance Eq Path
instance Ord Path
instance Show Path
instance Monad m => CanMount (NullFsT m) (NullFsT m)
instance Monad m => ChFilesystem (NullFsT m)
instance MonadIO m => MonadIO (NullFsT m)
instance MonadTrans NullFsT
instance Functor f => Functor (NullFsT f)
instance Monad m => Monad (NullFsT m)
instance ChAtoms m => ChScanner (FileScannerT m)
instance ChAtoms m => ChPrinter (FilePrinterT m)
instance MonadIO m => MonadIO (FileScannerT m)
instance MonadIO m => MonadIO (FilePrinterT m)
instance MonadTrans FileScannerT
instance MonadTrans FilePrinterT
instance Functor f => Functor (FileScannerT f)
instance Functor f => Functor (FilePrinterT f)
instance Monad m => Monad (FileScannerT m)
instance Monad m => Monad (FilePrinterT m)
-- | Provides a printer class that may broadcast to all channels that
-- fulfill a condition.
module Text.Chatty.Channel.Broadcast
-- | Typeclass for all channel printers that may broadcast to all channels
-- that fulfill a condition.
class ChChannelPrinter c m => ChBroadcaster c m
bprint :: ChBroadcaster c m => (c -> m Bool) -> String -> m ()
-- | Typeclass for all broadcaster that may embrace sections
class ChBroadcaster c m => ChBroadcasterBracket c m where bbracket f m = bstart f >> m >>= \ a -> bfin f >> return a
bbracket :: ChBroadcasterBracket c m => (c -> m Bool) -> m a -> m a
bstart :: ChBroadcasterBracket c m => (c -> m Bool) -> m ()
bfin :: ChBroadcasterBracket c m => (c -> m Bool) -> m ()
-- | Provides an extended printer class that supports colours.
module Text.Chatty.Extended.Printer
-- | Typeclass for all printers that support colourized output.
class ChPrinter m => ChExtendedPrinter m where ebracket c m = do { estart c; a <- m; efin; return a } eprint c = ebracket c . mprint eprintLn c s = eprint c s >> mprintLn "" enomask c = ebracket c . mnomask enomaskLn c s = enomask c s >> mprintLn ""
ebracket :: ChExtendedPrinter m => Colour -> m a -> m a
eprint :: ChExtendedPrinter m => Colour -> String -> m ()
eprintLn :: ChExtendedPrinter m => Colour -> String -> m ()
enomask :: ChExtendedPrinter m => Colour -> String -> m ()
enomaskLn :: ChExtendedPrinter m => Colour -> String -> m ()
estart :: ChExtendedPrinter m => Colour -> m ()
efin :: ChExtendedPrinter m => m ()
-- | Colour tone.
data Tone
Green :: Tone
Red :: Tone
Yellow :: Tone
Blue :: Tone
Black :: Tone
White :: Tone
Cyan :: Tone
Magenta :: Tone
-- | Colour brightness
data Colour
Dull :: Tone -> Colour
Vivid :: Tone -> Colour
expandClr :: ChExtendedPrinter m => String -> m ()
-- | Provides generic string expansion
module Text.Chatty.Expansion
-- | Typeclass for all string-expanding monads.
class Monad e => ChExpand e
expand :: ChExpand e => String -> e String
newtype NullExpanderT m a
NullExpander :: m a -> NullExpanderT m a
runNullExpanderT :: NullExpanderT m a -> m a
withExpansion :: Monad m => NullExpanderT m a -> m a
instance Monad m => ChExpand (NullExpanderT m)
instance MonadIO m => MonadIO (NullExpanderT m)
instance Functor m => Functor (NullExpanderT m)
instance MonadTrans NullExpanderT
instance Monad m => Monad (NullExpanderT m)
module Text.Chatty.Expansion.Vars
-- | Some environment variable
data EnvVar
-- | Not set.
NotSet :: EnvVar
-- | An embeddable string.
Literal :: String -> EnvVar
-- | Something we can show.
Scalar :: a -> EnvVar
-- | Array of that
Array :: [EnvVar] -> EnvVar
-- | Environment storage and variable expander.
newtype ExpanderT m a
Expander :: ([(String, EnvVar)] -> m (a, [(String, EnvVar)])) -> ExpanderT m a
runExpanderT :: ExpanderT m a -> [(String, EnvVar)] -> m (a, [(String, EnvVar)])
-- | Run this function inside a blank environment.
localEnvironment :: Functor m => ExpanderT m a -> m a
-- | Run this function in a locally modifiable, but not exported
-- environment
forkEnvironment :: (Functor m, Monad m, MonadIO m) => ExpanderT m a -> m a
-- | Export this local environment.
exportAll :: (Monad m, MonadIO m) => ExpanderT m ()
-- | Expand $variables
expandVars :: (Monad m, Functor m, ChExpanderEnv m) => String -> m String
-- | Is alphanumeric?
isAnum :: Char -> Bool
-- | Typeclass for all environment storages.
class Monad ee => ChExpanderEnv ee
mgetv :: ChExpanderEnv ee => String -> ee EnvVar
mputv :: ChExpanderEnv ee => String -> EnvVar -> ee ()
instance ChExpanderEnv IO
instance Monad m => ChExpanderEnv (ExpanderT m)
instance ChExpand m => ChExpand (ExpanderT m)
instance ChExpand IO
instance Monad m => Functor (ExpanderT m)
instance MonadIO m => MonadIO (ExpanderT m)
instance MonadTrans ExpanderT
instance Monad m => Monad (ExpanderT m)
instance Show EnvVar
module Text.Chatty.Expansion.History
newtype HistoryT m a
History :: ([String] -> m (a, [String])) -> HistoryT m a
runHistoryT :: HistoryT m a -> [String] -> m (a, [String])
class Monad he => ChHistoryEnv he
mcounth :: ChHistoryEnv he => he Int
mgeth :: ChHistoryEnv he => Int -> he String
mputh :: ChHistoryEnv he => String -> he ()
expandHist :: ChHistoryEnv h => String -> h String
withHistory :: Monad m => HistoryT m a -> m a
instance ChExpand m => ChExpand (HistoryT m)
instance Monad m => ChHistoryEnv (HistoryT m)
instance Monad m => Functor (HistoryT m)
instance MonadIO m => MonadIO (HistoryT m)
instance MonadTrans HistoryT
instance Monad m => Monad (HistoryT m)
-- | Provides an ChExtendedPrinter that handles colours using HTML
-- output.
module Text.Chatty.Extended.HTML
-- | An ChExtendedPrinter for HTML output.
newtype HtmlPrinterT m a
HtmlPrinter :: m a -> HtmlPrinterT m a
runHtmlPrinterT :: HtmlPrinterT m a -> m a
-- | Convert the given character to its HTML representation.
maskHtml :: Char -> String
-- | Convert the given colour to its CSS representation.
hexColour :: Colour -> [Char]
instance (Functor m, ChExpand m) => ChExpand (HtmlPrinterT m)
instance ChPrinter m => ChExtendedPrinter (HtmlPrinterT m)
instance ChPrinter m => ChPrinter (HtmlPrinterT m)
instance MonadIO m => MonadIO (HtmlPrinterT m)
instance Functor m => Functor (HtmlPrinterT m)
instance MonadTrans HtmlPrinterT
instance Monad m => Monad (HtmlPrinterT m)
-- | Provides a ChExtendedPrinter that handles colours using
-- standardized ANSI codes.
module Text.Chatty.Extended.ANSI
-- | A ChExtendedPrinter that uses ANSI colour codes.
newtype AnsiPrinterT m a
AnsiPrinter :: ([Colour] -> m (a, [Colour])) -> AnsiPrinterT m a
runAnsiPrinterT :: AnsiPrinterT m a -> [Colour] -> m (a, [Colour])
-- | Convert Chatty's colour intensity to ansi-terminal's one
mkColourInt :: Colour -> ColorIntensity
-- | Convert Chatty's colour tone to ansi-terminal's one
mkColourCode :: Colour -> Color
instance (Functor m, ChExpand m) => ChExpand (AnsiPrinterT m)
instance ChPrinter m => ChExtendedPrinter (AnsiPrinterT m)
instance ChPrinter m => ChPrinter (AnsiPrinterT m)
instance MonadIO m => MonadIO (AnsiPrinterT m)
instance Monad m => Functor (AnsiPrinterT m)
instance MonadTrans AnsiPrinterT
instance Monad m => Monad (AnsiPrinterT m)
-- | Declares serveral templates for comfortable instance derivation
module Text.Chatty.Interactor.Templates
-- | Automatically derives a ChScanner instance for you.
mkScanner :: Name -> Q [Dec]
-- | Automatically derives a ChPrinter instance for you.
mkPrinter :: Name -> Q [Dec]
-- | Automatically derives a ChFinalizer instance for you.
mkFinalizer :: Name -> Q [Dec]
-- | Automatically derives a ChExpand instance for you.
mkExpander :: Name -> Q [Dec]
-- | Automatically derives an ChExpanderEnv instance for you
mkExpanderEnv :: Name -> Q [Dec]
-- | Automatically derives a ChHistoryEnv instance for you
mkHistoryEnv :: Name -> Q [Dec]
-- | mkInteractor takes a type name and a list of typeclass derivers and
-- applies them all.
mkInteractor :: InteractorMaker i => Name -> i
-- | Automatically derives a ChSpawn instance for you.
mkSpawn :: Name -> Q [Dec]
-- | Automatically derives a ChRandom instance for you.
mkRandom :: Name -> Q [Dec]
-- | Automatically derives a ChClock instance for you.
mkClock :: Name -> Q [Dec]
-- | Automatically derives all chatty typeclasses for you.
mkChatty :: Name -> Q [Dec]
-- | Automatically derives a ChChannelPrinter instance for you.
mkChannelPrinter :: Name -> Name -> Q [Dec]
-- | Automatically derives ChChannelPrinter instances for Int,
-- Bool and Handle channels.
mkDefCP :: Name -> Q [Dec]
-- | Automatically derives all chatty typeclasses that are sensible for an
-- ArchiverT.
mkArchiver :: Name -> Q [Dec]
-- | Automatically derives an ChExtendedPrinter instance for you.
mkExtendedPrinter :: Name -> Q [Dec]
-- | Automatically derives a ChBufferedScanner instance for you.
mkBufferedScanner :: Name -> Q [Dec]
-- | Automatically derives a ChCounter instance for you.
mkCounter :: Name -> Q [Dec]
-- | Automatically derives a ChAtoms instance for you.
mkAtoms :: Name -> Q [Dec]
-- | Automatically derives instances for ChFilesystem, CanLoad, CanSave,
-- CanMount.
mkFilesys :: Name -> Q [Dec]
instance InteractorMaker i => InteractorMaker ((Name -> Q [Dec]) -> i)
instance InteractorMaker (Q [Dec])
-- | Provides a bunch of derived instances for the various typeclasses.
module Text.Chatty.Interactor
-- | IgnorantT ignores all output and does not provide any input.
type IgnorantT m = QuietT (DeafT m)
-- | Ignorant is IgnorantT on the identity
type Ignorant = IgnorantT Identity
-- | ChattyT simulates a console, actually taking input as a string and
-- recording output.
type ChattyT m = HereStringT (RecorderT m)
-- | Chatty is ChattyT on the identity
type Chatty = ChattyT Identity
-- | Run IgnorantT (does not take anything)
runIgnorantT :: Monad m => IgnorantT m a -> m a
-- | Run Ignorant (does not take anything)
runIgnorant :: Ignorant a -> a
-- | Run ChattyT. Takes input as a string and returns (result, remaining
-- input, output).
runChattyT :: (Monad m, Functor m) => ChattyT m a -> String -> m (a, String, Replayable)
-- | Run Chatty. Takes input as a string and returns (result, remaining
-- input, output).
runChatty :: Chatty a -> String -> (a, String, Replayable)
-- | Connect the output of some function to the input of another one.
-- Compare with a pipe (cmd1 | cmd2).
(.|.) :: (Monad m, Functor m) => RecorderT m a -> HereStringT m b -> m b
-- | Runs the second function and feeds its output as an argument to the
-- first one. Compare with process expansion ($(cmd)).
(.<$.) :: (Functor m, Monad m) => (String -> m b) -> RecorderT m a -> m b
instance CanMount m0 n0 => CanMount (JoinerT m0) n0
instance CanSave m0 n0 => CanSave (JoinerT m0) n0
instance CanLoad m0 n0 => CanLoad (JoinerT m0) n0
instance (ChAtoms (JoinerT m0), ChFilesystem m0) => ChFilesystem (JoinerT m0)
instance ChAtoms m0 => ChAtoms (JoinerT m0)
instance ChCounter m0 => ChCounter (JoinerT m0)
instance ChClock m0 => ChClock (JoinerT m0)
instance ChRandom m0 => ChRandom (JoinerT m0)
instance ChSpawn m0 => ChSpawn (JoinerT m0)
instance ChFinalizer m0 => ChFinalizer (JoinerT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (JoinerT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (JoinerT m0)
instance ChExpand m0 => ChExpand (JoinerT m0)
instance ChScanner m0 => ChScanner (JoinerT m0)
instance CanMount m0 n0 => CanMount (HandleFilterT m0) n0
instance CanSave m0 n0 => CanSave (HandleFilterT m0) n0
instance CanLoad m0 n0 => CanLoad (HandleFilterT m0) n0
instance (ChAtoms (HandleFilterT m0), ChFilesystem m0) => ChFilesystem (HandleFilterT m0)
instance ChAtoms m0 => ChAtoms (HandleFilterT m0)
instance ChCounter m0 => ChCounter (HandleFilterT m0)
instance ChClock m0 => ChClock (HandleFilterT m0)
instance ChRandom m0 => ChRandom (HandleFilterT m0)
instance ChSpawn m0 => ChSpawn (HandleFilterT m0)
instance ChFinalizer m0 => ChFinalizer (HandleFilterT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (HandleFilterT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (HandleFilterT m0)
instance ChExpand m0 => ChExpand (HandleFilterT m0)
instance ChScanner m0 => ChScanner (HandleFilterT m0)
instance CanMount m0 n0 => CanMount (BoolFilterT m0) n0
instance CanSave m0 n0 => CanSave (BoolFilterT m0) n0
instance CanLoad m0 n0 => CanLoad (BoolFilterT m0) n0
instance (ChAtoms (BoolFilterT m0), ChFilesystem m0) => ChFilesystem (BoolFilterT m0)
instance ChAtoms m0 => ChAtoms (BoolFilterT m0)
instance ChCounter m0 => ChCounter (BoolFilterT m0)
instance ChClock m0 => ChClock (BoolFilterT m0)
instance ChRandom m0 => ChRandom (BoolFilterT m0)
instance ChSpawn m0 => ChSpawn (BoolFilterT m0)
instance ChFinalizer m0 => ChFinalizer (BoolFilterT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (BoolFilterT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (BoolFilterT m0)
instance ChExpand m0 => ChExpand (BoolFilterT m0)
instance ChScanner m0 => ChScanner (BoolFilterT m0)
instance CanMount m0 n0 => CanMount (IntFilterT m0) n0
instance CanSave m0 n0 => CanSave (IntFilterT m0) n0
instance CanLoad m0 n0 => CanLoad (IntFilterT m0) n0
instance (ChAtoms (IntFilterT m0), ChFilesystem m0) => ChFilesystem (IntFilterT m0)
instance ChAtoms m0 => ChAtoms (IntFilterT m0)
instance ChCounter m0 => ChCounter (IntFilterT m0)
instance ChClock m0 => ChClock (IntFilterT m0)
instance ChRandom m0 => ChRandom (IntFilterT m0)
instance ChSpawn m0 => ChSpawn (IntFilterT m0)
instance ChFinalizer m0 => ChFinalizer (IntFilterT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (IntFilterT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (IntFilterT m0)
instance ChExpand m0 => ChExpand (IntFilterT m0)
instance ChScanner m0 => ChScanner (IntFilterT m0)
instance CanMount m0 n0 => CanMount (HandleArchiverT m0) n0
instance CanSave m0 n0 => CanSave (HandleArchiverT m0) n0
instance CanLoad m0 n0 => CanLoad (HandleArchiverT m0) n0
instance (ChAtoms (HandleArchiverT m0), ChFilesystem m0) => ChFilesystem (HandleArchiverT m0)
instance ChAtoms m0 => ChAtoms (HandleArchiverT m0)
instance ChCounter m0 => ChCounter (HandleArchiverT m0)
instance ChClock m0 => ChClock (HandleArchiverT m0)
instance ChRandom m0 => ChRandom (HandleArchiverT m0)
instance ChSpawn m0 => ChSpawn (HandleArchiverT m0)
instance ChFinalizer m0 => ChFinalizer (HandleArchiverT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (HandleArchiverT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (HandleArchiverT m0)
instance ChExpand m0 => ChExpand (HandleArchiverT m0)
instance ChScanner m0 => ChScanner (HandleArchiverT m0)
instance CanMount m0 n0 => CanMount (BoolArchiverT m0) n0
instance CanSave m0 n0 => CanSave (BoolArchiverT m0) n0
instance CanLoad m0 n0 => CanLoad (BoolArchiverT m0) n0
instance (ChAtoms (BoolArchiverT m0), ChFilesystem m0) => ChFilesystem (BoolArchiverT m0)
instance ChAtoms m0 => ChAtoms (BoolArchiverT m0)
instance ChCounter m0 => ChCounter (BoolArchiverT m0)
instance ChClock m0 => ChClock (BoolArchiverT m0)
instance ChRandom m0 => ChRandom (BoolArchiverT m0)
instance ChSpawn m0 => ChSpawn (BoolArchiverT m0)
instance ChFinalizer m0 => ChFinalizer (BoolArchiverT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (BoolArchiverT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (BoolArchiverT m0)
instance ChExpand m0 => ChExpand (BoolArchiverT m0)
instance ChScanner m0 => ChScanner (BoolArchiverT m0)
instance CanMount m0 n0 => CanMount (IntArchiverT m0) n0
instance CanSave m0 n0 => CanSave (IntArchiverT m0) n0
instance CanLoad m0 n0 => CanLoad (IntArchiverT m0) n0
instance (ChAtoms (IntArchiverT m0), ChFilesystem m0) => ChFilesystem (IntArchiverT m0)
instance ChAtoms m0 => ChAtoms (IntArchiverT m0)
instance ChCounter m0 => ChCounter (IntArchiverT m0)
instance ChClock m0 => ChClock (IntArchiverT m0)
instance ChRandom m0 => ChRandom (IntArchiverT m0)
instance ChSpawn m0 => ChSpawn (IntArchiverT m0)
instance ChFinalizer m0 => ChFinalizer (IntArchiverT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (IntArchiverT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (IntArchiverT m0)
instance ChExpand m0 => ChExpand (IntArchiverT m0)
instance ChScanner m0 => ChScanner (IntArchiverT m0)
instance ChExtendedPrinter m0 => ChExtendedPrinter (AtomStoreT m0)
instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (AtomStoreT m0)
instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (AtomStoreT m0)
instance ChChannelPrinter Int m0 => ChChannelPrinter Int (AtomStoreT m0)
instance ChClock m0 => ChClock (AtomStoreT m0)
instance ChRandom m0 => ChRandom (AtomStoreT m0)
instance ChSpawn m0 => ChSpawn (AtomStoreT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (AtomStoreT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (AtomStoreT m0)
instance ChExpand m0 => ChExpand (AtomStoreT m0)
instance ChFinalizer m0 => ChFinalizer (AtomStoreT m0)
instance ChBufferedScanner m0 => ChBufferedScanner (AtomStoreT m0)
instance ChPrinter m0 => ChPrinter (AtomStoreT m0)
instance ChScanner m0 => ChScanner (AtomStoreT m0)
instance ChExtendedPrinter m0 => ChExtendedPrinter (CounterT m0)
instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (CounterT m0)
instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (CounterT m0)
instance ChChannelPrinter Int m0 => ChChannelPrinter Int (CounterT m0)
instance ChClock m0 => ChClock (CounterT m0)
instance ChRandom m0 => ChRandom (CounterT m0)
instance ChSpawn m0 => ChSpawn (CounterT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (CounterT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (CounterT m0)
instance ChExpand m0 => ChExpand (CounterT m0)
instance ChFinalizer m0 => ChFinalizer (CounterT m0)
instance ChBufferedScanner m0 => ChBufferedScanner (CounterT m0)
instance ChPrinter m0 => ChPrinter (CounterT m0)
instance ChScanner m0 => ChScanner (CounterT m0)
instance ChExtendedPrinter m0 => ChExtendedPrinter (NullFsT m0)
instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (NullFsT m0)
instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (NullFsT m0)
instance ChChannelPrinter Int m0 => ChChannelPrinter Int (NullFsT m0)
instance ChAtoms m0 => ChAtoms (NullFsT m0)
instance ChCounter m0 => ChCounter (NullFsT m0)
instance ChClock m0 => ChClock (NullFsT m0)
instance ChRandom m0 => ChRandom (NullFsT m0)
instance ChSpawn m0 => ChSpawn (NullFsT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (NullFsT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (NullFsT m0)
instance ChExpand m0 => ChExpand (NullFsT m0)
instance ChFinalizer m0 => ChFinalizer (NullFsT m0)
instance ChBufferedScanner m0 => ChBufferedScanner (NullFsT m0)
instance ChPrinter m0 => ChPrinter (NullFsT m0)
instance ChScanner m0 => ChScanner (NullFsT m0)
instance CanMount m0 n0 => CanMount (ScannerBufferT m0) n0
instance CanSave m0 n0 => CanSave (ScannerBufferT m0) n0
instance CanLoad m0 n0 => CanLoad (ScannerBufferT m0) n0
instance (ChAtoms (ScannerBufferT m0), ChFilesystem m0) => ChFilesystem (ScannerBufferT m0)
instance ChAtoms m0 => ChAtoms (ScannerBufferT m0)
instance ChCounter m0 => ChCounter (ScannerBufferT m0)
instance ChSpawn m0 => ChSpawn (ScannerBufferT m0)
instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (ScannerBufferT m0)
instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (ScannerBufferT m0)
instance ChChannelPrinter Int m0 => ChChannelPrinter Int (ScannerBufferT m0)
instance ChClock m0 => ChClock (ScannerBufferT m0)
instance ChRandom m0 => ChRandom (ScannerBufferT m0)
instance ChFinalizer m0 => ChFinalizer (ScannerBufferT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (ScannerBufferT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (ScannerBufferT m0)
instance ChExpand m0 => ChExpand (ScannerBufferT m0)
instance ChExtendedPrinter m0 => ChExtendedPrinter (ScannerBufferT m0)
instance ChPrinter m0 => ChPrinter (ScannerBufferT m0)
instance CanMount m0 n0 => CanMount (HistoryT m0) n0
instance CanSave m0 n0 => CanSave (HistoryT m0) n0
instance CanLoad m0 n0 => CanLoad (HistoryT m0) n0
instance (ChAtoms (HistoryT m0), ChFilesystem m0) => ChFilesystem (HistoryT m0)
instance ChAtoms m0 => ChAtoms (HistoryT m0)
instance ChCounter m0 => ChCounter (HistoryT m0)
instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (HistoryT m0)
instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (HistoryT m0)
instance ChChannelPrinter Int m0 => ChChannelPrinter Int (HistoryT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (HistoryT m0)
instance ChClock m0 => ChClock (HistoryT m0)
instance ChRandom m0 => ChRandom (HistoryT m0)
instance ChSpawn m0 => ChSpawn (HistoryT m0)
instance ChFinalizer m0 => ChFinalizer (HistoryT m0)
instance ChExtendedPrinter m0 => ChExtendedPrinter (HistoryT m0)
instance ChPrinter m0 => ChPrinter (HistoryT m0)
instance ChBufferedScanner m0 => ChBufferedScanner (HistoryT m0)
instance ChScanner m0 => ChScanner (HistoryT m0)
instance CanMount m0 n0 => CanMount (NullExpanderT m0) n0
instance CanSave m0 n0 => CanSave (NullExpanderT m0) n0
instance CanLoad m0 n0 => CanLoad (NullExpanderT m0) n0
instance (ChAtoms (NullExpanderT m0), ChFilesystem m0) => ChFilesystem (NullExpanderT m0)
instance ChAtoms m0 => ChAtoms (NullExpanderT m0)
instance ChCounter m0 => ChCounter (NullExpanderT m0)
instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (NullExpanderT m0)
instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (NullExpanderT m0)
instance ChChannelPrinter Int m0 => ChChannelPrinter Int (NullExpanderT m0)
instance ChClock m0 => ChClock (NullExpanderT m0)
instance ChRandom m0 => ChRandom (NullExpanderT m0)
instance ChSpawn m0 => ChSpawn (NullExpanderT m0)
instance ChFinalizer m0 => ChFinalizer (NullExpanderT m0)
instance ChExtendedPrinter m0 => ChExtendedPrinter (NullExpanderT m0)
instance ChPrinter m0 => ChPrinter (NullExpanderT m0)
instance ChBufferedScanner m0 => ChBufferedScanner (NullExpanderT m0)
instance ChScanner m0 => ChScanner (NullExpanderT m0)
instance CanMount m0 n0 => CanMount (AnsiPrinterT m0) n0
instance CanSave m0 n0 => CanSave (AnsiPrinterT m0) n0
instance CanLoad m0 n0 => CanLoad (AnsiPrinterT m0) n0
instance (ChAtoms (AnsiPrinterT m0), ChFilesystem m0) => ChFilesystem (AnsiPrinterT m0)
instance ChAtoms m0 => ChAtoms (AnsiPrinterT m0)
instance ChCounter m0 => ChCounter (AnsiPrinterT m0)
instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (AnsiPrinterT m0)
instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (AnsiPrinterT m0)
instance ChChannelPrinter Int m0 => ChChannelPrinter Int (AnsiPrinterT m0)
instance ChClock m0 => ChClock (AnsiPrinterT m0)
instance ChRandom m0 => ChRandom (AnsiPrinterT m0)
instance ChSpawn m0 => ChSpawn (AnsiPrinterT m0)
instance ChFinalizer m0 => ChFinalizer (AnsiPrinterT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (AnsiPrinterT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (AnsiPrinterT m0)
instance ChBufferedScanner m0 => ChBufferedScanner (AnsiPrinterT m0)
instance ChScanner m0 => ChScanner (AnsiPrinterT m0)
instance CanMount m0 n0 => CanMount (HtmlPrinterT m0) n0
instance CanSave m0 n0 => CanSave (HtmlPrinterT m0) n0
instance CanLoad m0 n0 => CanLoad (HtmlPrinterT m0) n0
instance (ChAtoms (HtmlPrinterT m0), ChFilesystem m0) => ChFilesystem (HtmlPrinterT m0)
instance ChAtoms m0 => ChAtoms (HtmlPrinterT m0)
instance ChCounter m0 => ChCounter (HtmlPrinterT m0)
instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (HtmlPrinterT m0)
instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (HtmlPrinterT m0)
instance ChChannelPrinter Int m0 => ChChannelPrinter Int (HtmlPrinterT m0)
instance ChClock m0 => ChClock (HtmlPrinterT m0)
instance ChRandom m0 => ChRandom (HtmlPrinterT m0)
instance ChSpawn m0 => ChSpawn (HtmlPrinterT m0)
instance ChFinalizer m0 => ChFinalizer (HtmlPrinterT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (HtmlPrinterT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (HtmlPrinterT m0)
instance ChBufferedScanner m0 => ChBufferedScanner (HtmlPrinterT m0)
instance ChScanner m0 => ChScanner (HtmlPrinterT m0)
instance CanMount m0 n0 => CanMount (SpawnOverlayT m0) n0
instance CanSave m0 n0 => CanSave (SpawnOverlayT m0) n0
instance CanLoad m0 n0 => CanLoad (SpawnOverlayT m0) n0
instance (ChAtoms (SpawnOverlayT m0), ChFilesystem m0) => ChFilesystem (SpawnOverlayT m0)
instance ChAtoms m0 => ChAtoms (SpawnOverlayT m0)
instance ChCounter m0 => ChCounter (SpawnOverlayT m0)
instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (SpawnOverlayT m0)
instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (SpawnOverlayT m0)
instance ChChannelPrinter Int m0 => ChChannelPrinter Int (SpawnOverlayT m0)
instance ChClock m0 => ChClock (SpawnOverlayT m0)
instance ChRandom m0 => ChRandom (SpawnOverlayT m0)
instance ChFinalizer m0 => ChFinalizer (SpawnOverlayT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (SpawnOverlayT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (SpawnOverlayT m0)
instance ChExpand m0 => ChExpand (SpawnOverlayT m0)
instance ChBufferedScanner m0 => ChBufferedScanner (SpawnOverlayT m0)
instance ChScanner m0 => ChScanner (SpawnOverlayT m0)
instance ChExtendedPrinter m0 => ChExtendedPrinter (SpawnOverlayT m0)
instance ChPrinter m0 => ChPrinter (SpawnOverlayT m0)
instance CanMount m0 n0 => CanMount (InRedirT m0) n0
instance CanSave m0 n0 => CanSave (InRedirT m0) n0
instance CanLoad m0 n0 => CanLoad (InRedirT m0) n0
instance (ChAtoms (InRedirT m0), ChFilesystem m0) => ChFilesystem (InRedirT m0)
instance ChAtoms m0 => ChAtoms (InRedirT m0)
instance ChCounter m0 => ChCounter (InRedirT m0)
instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (InRedirT m0)
instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (InRedirT m0)
instance ChChannelPrinter Int m0 => ChChannelPrinter Int (InRedirT m0)
instance ChClock m0 => ChClock (InRedirT m0)
instance ChRandom m0 => ChRandom (InRedirT m0)
instance ChSpawn m0 => ChSpawn (InRedirT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (InRedirT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (InRedirT m0)
instance ChExpand m0 => ChExpand (InRedirT m0)
instance ChExtendedPrinter m0 => ChExtendedPrinter (InRedirT m0)
instance ChPrinter m0 => ChPrinter (InRedirT m0)
instance CanMount m0 n0 => CanMount (QuietT m0) n0
instance CanSave m0 n0 => CanSave (QuietT m0) n0
instance CanLoad m0 n0 => CanLoad (QuietT m0) n0
instance (ChAtoms (QuietT m0), ChFilesystem m0) => ChFilesystem (QuietT m0)
instance ChAtoms m0 => ChAtoms (QuietT m0)
instance ChCounter m0 => ChCounter (QuietT m0)
instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (QuietT m0)
instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (QuietT m0)
instance ChChannelPrinter Int m0 => ChChannelPrinter Int (QuietT m0)
instance ChClock m0 => ChClock (QuietT m0)
instance ChRandom m0 => ChRandom (QuietT m0)
instance ChSpawn m0 => ChSpawn (QuietT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (QuietT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (QuietT m0)
instance ChExpand m0 => ChExpand (QuietT m0)
instance ChExtendedPrinter m0 => ChExtendedPrinter (QuietT m0)
instance ChPrinter m0 => ChPrinter (QuietT m0)
instance CanMount m0 n0 => CanMount (HereStringT m0) n0
instance CanSave m0 n0 => CanSave (HereStringT m0) n0
instance CanLoad m0 n0 => CanLoad (HereStringT m0) n0
instance (ChAtoms (HereStringT m0), ChFilesystem m0) => ChFilesystem (HereStringT m0)
instance ChAtoms m0 => ChAtoms (HereStringT m0)
instance ChCounter m0 => ChCounter (HereStringT m0)
instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (HereStringT m0)
instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (HereStringT m0)
instance ChChannelPrinter Int m0 => ChChannelPrinter Int (HereStringT m0)
instance ChClock m0 => ChClock (HereStringT m0)
instance ChRandom m0 => ChRandom (HereStringT m0)
instance ChSpawn m0 => ChSpawn (HereStringT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (HereStringT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (HereStringT m0)
instance ChExpand m0 => ChExpand (HereStringT m0)
instance ChExtendedPrinter m0 => ChExtendedPrinter (HereStringT m0)
instance ChPrinter m0 => ChPrinter (HereStringT m0)
instance CanMount m0 n0 => CanMount (ExpanderT m0) n0
instance CanSave m0 n0 => CanSave (ExpanderT m0) n0
instance CanLoad m0 n0 => CanLoad (ExpanderT m0) n0
instance (ChAtoms (ExpanderT m0), ChFilesystem m0) => ChFilesystem (ExpanderT m0)
instance ChAtoms m0 => ChAtoms (ExpanderT m0)
instance ChCounter m0 => ChCounter (ExpanderT m0)
instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (ExpanderT m0)
instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (ExpanderT m0)
instance ChChannelPrinter Int m0 => ChChannelPrinter Int (ExpanderT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (ExpanderT m0)
instance ChClock m0 => ChClock (ExpanderT m0)
instance ChRandom m0 => ChRandom (ExpanderT m0)
instance ChSpawn m0 => ChSpawn (ExpanderT m0)
instance ChFinalizer m0 => ChFinalizer (ExpanderT m0)
instance ChPrinter m0 => ChPrinter (ExpanderT m0)
instance ChBufferedScanner m0 => ChBufferedScanner (ExpanderT m0)
instance ChScanner m0 => ChScanner (ExpanderT m0)
instance CanMount m0 n0 => CanMount (HandleCloserT m0) n0
instance CanSave m0 n0 => CanSave (HandleCloserT m0) n0
instance CanLoad m0 n0 => CanLoad (HandleCloserT m0) n0
instance (ChAtoms (HandleCloserT m0), ChFilesystem m0) => ChFilesystem (HandleCloserT m0)
instance ChAtoms m0 => ChAtoms (HandleCloserT m0)
instance ChCounter m0 => ChCounter (HandleCloserT m0)
instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (HandleCloserT m0)
instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (HandleCloserT m0)
instance ChChannelPrinter Int m0 => ChChannelPrinter Int (HandleCloserT m0)
instance ChClock m0 => ChClock (HandleCloserT m0)
instance ChRandom m0 => ChRandom (HandleCloserT m0)
instance ChSpawn m0 => ChSpawn (HandleCloserT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (HandleCloserT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (HandleCloserT m0)
instance ChExpand m0 => ChExpand (HandleCloserT m0)
instance ChPrinter m0 => ChPrinter (HandleCloserT m0)
instance ChBufferedScanner m0 => ChBufferedScanner (HandleCloserT m0)
instance ChScanner m0 => ChScanner (HandleCloserT m0)
instance CanMount m0 n0 => CanMount (OutRedirT m0) n0
instance CanSave m0 n0 => CanSave (OutRedirT m0) n0
instance CanLoad m0 n0 => CanLoad (OutRedirT m0) n0
instance (ChAtoms (OutRedirT m0), ChFilesystem m0) => ChFilesystem (OutRedirT m0)
instance ChAtoms m0 => ChAtoms (OutRedirT m0)
instance ChCounter m0 => ChCounter (OutRedirT m0)
instance ChClock m0 => ChClock (OutRedirT m0)
instance ChRandom m0 => ChRandom (OutRedirT m0)
instance ChSpawn m0 => ChSpawn (OutRedirT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (OutRedirT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (OutRedirT m0)
instance ChExpand m0 => ChExpand (OutRedirT m0)
instance ChFinalizer m0 => ChFinalizer (OutRedirT m0)
instance ChBufferedScanner m0 => ChBufferedScanner (OutRedirT m0)
instance ChScanner m0 => ChScanner (OutRedirT m0)
instance CanMount m0 n0 => CanMount (DeafT m0) n0
instance CanSave m0 n0 => CanSave (DeafT m0) n0
instance CanLoad m0 n0 => CanLoad (DeafT m0) n0
instance (ChAtoms (DeafT m0), ChFilesystem m0) => ChFilesystem (DeafT m0)
instance ChAtoms m0 => ChAtoms (DeafT m0)
instance ChCounter m0 => ChCounter (DeafT m0)
instance ChClock m0 => ChClock (DeafT m0)
instance ChRandom m0 => ChRandom (DeafT m0)
instance ChSpawn m0 => ChSpawn (DeafT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (DeafT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (DeafT m0)
instance ChExpand m0 => ChExpand (DeafT m0)
instance ChFinalizer m0 => ChFinalizer (DeafT m0)
instance ChBufferedScanner m0 => ChBufferedScanner (DeafT m0)
instance ChScanner m0 => ChScanner (DeafT m0)
instance CanMount m0 n0 => CanMount (RecorderT m0) n0
instance CanSave m0 n0 => CanSave (RecorderT m0) n0
instance CanLoad m0 n0 => CanLoad (RecorderT m0) n0
instance (ChAtoms (RecorderT m0), ChFilesystem m0) => ChFilesystem (RecorderT m0)
instance ChAtoms m0 => ChAtoms (RecorderT m0)
instance ChCounter m0 => ChCounter (RecorderT m0)
instance ChClock m0 => ChClock (RecorderT m0)
instance ChRandom m0 => ChRandom (RecorderT m0)
instance ChSpawn m0 => ChSpawn (RecorderT m0)
instance ChHistoryEnv m0 => ChHistoryEnv (RecorderT m0)
instance ChExpanderEnv m0 => ChExpanderEnv (RecorderT m0)
instance ChExpand m0 => ChExpand (RecorderT m0)
instance ChFinalizer m0 => ChFinalizer (RecorderT m0)
instance ChBufferedScanner m0 => ChBufferedScanner (RecorderT m0)
instance ChScanner m0 => ChScanner (RecorderT m0)
-- | Provides in-haskell implementations for some standard functions
module System.Chatty.Commands
-- | Like cat on the command line. Accepts a list of filenames.
-- Simple pass-through, if none are provided.
cat :: (ChScanner m, ChPrinter m, MonadIO m, Functor m, ChFinalizer m) => [String] -> m ()
-- | Like cat, but reverses the line order.
tac :: (ChFinalizer m, ChScanner m, ChPrinter m, MonadIO m, Functor m) => [String] -> m ()
-- | Pass-through, simultanously writing all input to a given file.
tee :: (ChScanner m, ChPrinter m, MonadIO m, Functor m) => String -> m ()
-- | Prints the given string, after expanding it.
echo :: (ChPrinter m, ChExpand m) => String -> m ()
-- | Mode for wc.
data WcMode
CountChars :: WcMode
CountLines :: WcMode
CountWords :: WcMode
-- | Count characters, lines or words of the input.
wc :: (ChScanner m, ChPrinter m, MonadIO m, Functor m) => WcMode -> m ()
-- | Change to given directory.
cd :: MonadIO m => String -> m ()
-- | Print current working directory.
pwd :: (MonadIO m, ChPrinter m) => m ()
-- | List directory contents of the given directories (current one, if
-- empty list).
ls :: (MonadIO m, ChPrinter m) => [String] -> m ()
-- | Filters only the first n lines of the input.
head :: (ChScanner m, ChPrinter m, MonadIO m, Functor m) => Int -> m ()
-- | FIlters only the last n lines of the input.
tail :: (ChScanner m, ChPrinter m, MonadIO m, Functor m) => Int -> m ()