chatty 0.5.5.1 → 0.6
raw patch · 22 files changed
+142/−356 lines, 22 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- System.Chatty.Misc: class (Functor m, Monad m) => MonadClock m where mgetstamp = fmap (flip diffUTCTime (UTCTime (fromGregorian 1970 1 1) (secondsToDiffTime 0))) mutctime
- System.Chatty.Misc: class Monad m => MonadRandom m
- System.Chatty.Misc: instance MonadClock IO
- System.Chatty.Misc: instance MonadRandom IO
- System.Chatty.Spawn: class Monad m => MonadSpawn m
- System.Chatty.Spawn: instance MonadSpawn IO
- System.Chatty.Spawn.Overlay: instance MonadSpawn m => MonadSpawn (SpawnOverlayT m)
- Text.Chatty.Channel.Broadcast: class ChannelPrinter c m => Broadcaster c m
- Text.Chatty.Channel.Broadcast: class Broadcaster c m => BroadcasterBracket c m where bbracket f m = bstart f >> m >>= \ a -> bfin f >> return a
- Text.Chatty.Channel.Printer: class (MonadPrinter m, Eq c) => ChannelPrinter c m where cbracket c m = cstart c >> m >>= \ a -> cfin c >> return a cprint c s = cbracket c $ mprint s
- Text.Chatty.Channel.Printer: instance (Eq c, Monad m) => ChannelPrinter c (ArchiverT c m)
- Text.Chatty.Channel.Printer: instance (Eq c, Monad m) => MonadPrinter (ArchiverT c m)
- Text.Chatty.Channel.Printer: instance (Eq c, MonadPrinter m) => ChannelPrinter c (FilterT c m)
- Text.Chatty.Channel.Printer: instance (Eq c, MonadPrinter m) => ChannelPrinter c (JoinerT m)
- Text.Chatty.Channel.Printer: instance (Eq c, MonadPrinter m) => MonadPrinter (FilterT c m)
- Text.Chatty.Channel.Printer: instance MonadPrinter m => MonadPrinter (JoinerT m)
- Text.Chatty.Expansion: class Monad e => MonadExpand e
- Text.Chatty.Expansion: instance Monad m => MonadExpand (NullExpanderT m)
- Text.Chatty.Expansion.History: class Monad he => HistoryEnv he
- Text.Chatty.Expansion.History: instance Monad m => HistoryEnv (HistoryT m)
- Text.Chatty.Expansion.History: instance MonadExpand m => MonadExpand (HistoryT m)
- Text.Chatty.Expansion.Vars: class Monad ee => ExpanderEnv ee
- Text.Chatty.Expansion.Vars: instance ExpanderEnv IO
- Text.Chatty.Expansion.Vars: instance Monad m => ExpanderEnv (ExpanderT m)
- Text.Chatty.Expansion.Vars: instance MonadExpand IO
- Text.Chatty.Expansion.Vars: instance MonadExpand m => MonadExpand (ExpanderT m)
- Text.Chatty.Extended.ANSI: instance (Functor m, MonadExpand m) => MonadExpand (AnsiPrinterT m)
- Text.Chatty.Extended.ANSI: instance MonadPrinter m => ExtendedPrinter (AnsiPrinterT m)
- Text.Chatty.Extended.ANSI: instance MonadPrinter m => MonadPrinter (AnsiPrinterT m)
- Text.Chatty.Extended.HTML: instance (Functor m, MonadExpand m) => MonadExpand (HtmlPrinterT m)
- Text.Chatty.Extended.HTML: instance MonadPrinter m => ExtendedPrinter (HtmlPrinterT m)
- Text.Chatty.Extended.HTML: instance MonadPrinter m => MonadPrinter (HtmlPrinterT m)
- Text.Chatty.Extended.Printer: class MonadPrinter m => ExtendedPrinter 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 ""
- Text.Chatty.Finalizer: class Monad m => MonadFinalizer m where mqfhs = foldr ((>>) . mqfh) (return ())
- Text.Chatty.Finalizer: instance MonadIO m => MonadFinalizer (HandleCloserT m)
- Text.Chatty.Interactor: instance BufferedScanner m0 => BufferedScanner (AnsiPrinterT m0)
- Text.Chatty.Interactor: instance BufferedScanner m0 => BufferedScanner (DeafT m0)
- Text.Chatty.Interactor: instance BufferedScanner m0 => BufferedScanner (ExpanderT m0)
- Text.Chatty.Interactor: instance BufferedScanner m0 => BufferedScanner (HandleCloserT m0)
- Text.Chatty.Interactor: instance BufferedScanner m0 => BufferedScanner (HistoryT m0)
- Text.Chatty.Interactor: instance BufferedScanner m0 => BufferedScanner (HtmlPrinterT m0)
- Text.Chatty.Interactor: instance BufferedScanner m0 => BufferedScanner (NullExpanderT m0)
- Text.Chatty.Interactor: instance BufferedScanner m0 => BufferedScanner (OutRedirT m0)
- Text.Chatty.Interactor: instance BufferedScanner m0 => BufferedScanner (RecorderT m0)
- Text.Chatty.Interactor: instance BufferedScanner m0 => BufferedScanner (SpawnOverlayT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Bool m0 => ChannelPrinter Bool (AnsiPrinterT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Bool m0 => ChannelPrinter Bool (ExpanderT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Bool m0 => ChannelPrinter Bool (HandleCloserT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Bool m0 => ChannelPrinter Bool (HereStringT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Bool m0 => ChannelPrinter Bool (HistoryT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Bool m0 => ChannelPrinter Bool (HtmlPrinterT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Bool m0 => ChannelPrinter Bool (InRedirT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Bool m0 => ChannelPrinter Bool (NullExpanderT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Bool m0 => ChannelPrinter Bool (QuietT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Bool m0 => ChannelPrinter Bool (ScannerBufferT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Bool m0 => ChannelPrinter Bool (SpawnOverlayT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Handle m0 => ChannelPrinter Handle (AnsiPrinterT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Handle m0 => ChannelPrinter Handle (ExpanderT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Handle m0 => ChannelPrinter Handle (HandleCloserT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Handle m0 => ChannelPrinter Handle (HereStringT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Handle m0 => ChannelPrinter Handle (HistoryT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Handle m0 => ChannelPrinter Handle (HtmlPrinterT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Handle m0 => ChannelPrinter Handle (InRedirT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Handle m0 => ChannelPrinter Handle (NullExpanderT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Handle m0 => ChannelPrinter Handle (QuietT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Handle m0 => ChannelPrinter Handle (ScannerBufferT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Handle m0 => ChannelPrinter Handle (SpawnOverlayT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Int m0 => ChannelPrinter Int (AnsiPrinterT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Int m0 => ChannelPrinter Int (ExpanderT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Int m0 => ChannelPrinter Int (HandleCloserT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Int m0 => ChannelPrinter Int (HereStringT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Int m0 => ChannelPrinter Int (HistoryT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Int m0 => ChannelPrinter Int (HtmlPrinterT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Int m0 => ChannelPrinter Int (InRedirT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Int m0 => ChannelPrinter Int (NullExpanderT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Int m0 => ChannelPrinter Int (QuietT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Int m0 => ChannelPrinter Int (ScannerBufferT m0)
- Text.Chatty.Interactor: instance ChannelPrinter Int m0 => ChannelPrinter Int (SpawnOverlayT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (AnsiPrinterT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (BoolArchiverT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (BoolFilterT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (DeafT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (HandleArchiverT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (HandleCloserT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (HandleFilterT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (HereStringT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (HistoryT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (HtmlPrinterT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (InRedirT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (IntArchiverT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (IntFilterT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (JoinerT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (OutRedirT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (QuietT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (RecorderT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (ScannerBufferT m0)
- Text.Chatty.Interactor: instance ExpanderEnv m0 => ExpanderEnv (SpawnOverlayT m0)
- Text.Chatty.Interactor: instance ExtendedPrinter m0 => ExtendedPrinter (HereStringT m0)
- Text.Chatty.Interactor: instance ExtendedPrinter m0 => ExtendedPrinter (HistoryT m0)
- Text.Chatty.Interactor: instance ExtendedPrinter m0 => ExtendedPrinter (InRedirT m0)
- Text.Chatty.Interactor: instance ExtendedPrinter m0 => ExtendedPrinter (NullExpanderT m0)
- Text.Chatty.Interactor: instance ExtendedPrinter m0 => ExtendedPrinter (QuietT m0)
- Text.Chatty.Interactor: instance ExtendedPrinter m0 => ExtendedPrinter (ScannerBufferT m0)
- Text.Chatty.Interactor: instance ExtendedPrinter m0 => ExtendedPrinter (SpawnOverlayT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (AnsiPrinterT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (BoolArchiverT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (BoolFilterT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (DeafT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (ExpanderT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (HandleArchiverT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (HandleCloserT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (HandleFilterT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (HereStringT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (HtmlPrinterT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (InRedirT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (IntArchiverT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (IntFilterT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (JoinerT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (OutRedirT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (QuietT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (RecorderT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (ScannerBufferT m0)
- Text.Chatty.Interactor: instance HistoryEnv m0 => HistoryEnv (SpawnOverlayT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (AnsiPrinterT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (BoolArchiverT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (BoolFilterT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (DeafT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (ExpanderT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (HandleArchiverT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (HandleCloserT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (HandleFilterT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (HereStringT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (HistoryT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (HtmlPrinterT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (InRedirT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (IntArchiverT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (IntFilterT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (JoinerT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (NullExpanderT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (OutRedirT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (QuietT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (RecorderT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (ScannerBufferT m0)
- Text.Chatty.Interactor: instance MonadClock m0 => MonadClock (SpawnOverlayT m0)
- Text.Chatty.Interactor: instance MonadExpand m0 => MonadExpand (BoolArchiverT m0)
- Text.Chatty.Interactor: instance MonadExpand m0 => MonadExpand (BoolFilterT m0)
- Text.Chatty.Interactor: instance MonadExpand m0 => MonadExpand (DeafT m0)
- Text.Chatty.Interactor: instance MonadExpand m0 => MonadExpand (HandleArchiverT m0)
- Text.Chatty.Interactor: instance MonadExpand m0 => MonadExpand (HandleCloserT m0)
- Text.Chatty.Interactor: instance MonadExpand m0 => MonadExpand (HandleFilterT m0)
- Text.Chatty.Interactor: instance MonadExpand m0 => MonadExpand (HereStringT m0)
- Text.Chatty.Interactor: instance MonadExpand m0 => MonadExpand (InRedirT m0)
- Text.Chatty.Interactor: instance MonadExpand m0 => MonadExpand (IntArchiverT m0)
- Text.Chatty.Interactor: instance MonadExpand m0 => MonadExpand (IntFilterT m0)
- Text.Chatty.Interactor: instance MonadExpand m0 => MonadExpand (JoinerT m0)
- Text.Chatty.Interactor: instance MonadExpand m0 => MonadExpand (OutRedirT m0)
- Text.Chatty.Interactor: instance MonadExpand m0 => MonadExpand (QuietT m0)
- Text.Chatty.Interactor: instance MonadExpand m0 => MonadExpand (RecorderT m0)
- Text.Chatty.Interactor: instance MonadExpand m0 => MonadExpand (ScannerBufferT m0)
- Text.Chatty.Interactor: instance MonadExpand m0 => MonadExpand (SpawnOverlayT m0)
- Text.Chatty.Interactor: instance MonadFinalizer m0 => MonadFinalizer (AnsiPrinterT m0)
- Text.Chatty.Interactor: instance MonadFinalizer m0 => MonadFinalizer (BoolArchiverT m0)
- Text.Chatty.Interactor: instance MonadFinalizer m0 => MonadFinalizer (BoolFilterT m0)
- Text.Chatty.Interactor: instance MonadFinalizer m0 => MonadFinalizer (DeafT m0)
- Text.Chatty.Interactor: instance MonadFinalizer m0 => MonadFinalizer (ExpanderT m0)
- Text.Chatty.Interactor: instance MonadFinalizer m0 => MonadFinalizer (HandleArchiverT m0)
- Text.Chatty.Interactor: instance MonadFinalizer m0 => MonadFinalizer (HandleFilterT m0)
- Text.Chatty.Interactor: instance MonadFinalizer m0 => MonadFinalizer (HistoryT m0)
- Text.Chatty.Interactor: instance MonadFinalizer m0 => MonadFinalizer (HtmlPrinterT m0)
- Text.Chatty.Interactor: instance MonadFinalizer m0 => MonadFinalizer (IntArchiverT m0)
- Text.Chatty.Interactor: instance MonadFinalizer m0 => MonadFinalizer (IntFilterT m0)
- Text.Chatty.Interactor: instance MonadFinalizer m0 => MonadFinalizer (JoinerT m0)
- Text.Chatty.Interactor: instance MonadFinalizer m0 => MonadFinalizer (NullExpanderT m0)
- Text.Chatty.Interactor: instance MonadFinalizer m0 => MonadFinalizer (OutRedirT m0)
- Text.Chatty.Interactor: instance MonadFinalizer m0 => MonadFinalizer (RecorderT m0)
- Text.Chatty.Interactor: instance MonadFinalizer m0 => MonadFinalizer (ScannerBufferT m0)
- Text.Chatty.Interactor: instance MonadFinalizer m0 => MonadFinalizer (SpawnOverlayT m0)
- Text.Chatty.Interactor: instance MonadPrinter m0 => MonadPrinter (ExpanderT m0)
- Text.Chatty.Interactor: instance MonadPrinter m0 => MonadPrinter (HandleCloserT m0)
- Text.Chatty.Interactor: instance MonadPrinter m0 => MonadPrinter (HereStringT m0)
- Text.Chatty.Interactor: instance MonadPrinter m0 => MonadPrinter (HistoryT m0)
- Text.Chatty.Interactor: instance MonadPrinter m0 => MonadPrinter (InRedirT m0)
- Text.Chatty.Interactor: instance MonadPrinter m0 => MonadPrinter (NullExpanderT m0)
- Text.Chatty.Interactor: instance MonadPrinter m0 => MonadPrinter (QuietT m0)
- Text.Chatty.Interactor: instance MonadPrinter m0 => MonadPrinter (ScannerBufferT m0)
- Text.Chatty.Interactor: instance MonadPrinter m0 => MonadPrinter (SpawnOverlayT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (AnsiPrinterT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (BoolArchiverT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (BoolFilterT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (DeafT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (ExpanderT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (HandleArchiverT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (HandleCloserT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (HandleFilterT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (HereStringT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (HistoryT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (HtmlPrinterT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (InRedirT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (IntArchiverT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (IntFilterT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (JoinerT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (NullExpanderT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (OutRedirT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (QuietT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (RecorderT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (ScannerBufferT m0)
- Text.Chatty.Interactor: instance MonadRandom m0 => MonadRandom (SpawnOverlayT m0)
- Text.Chatty.Interactor: instance MonadScanner m0 => MonadScanner (AnsiPrinterT m0)
- Text.Chatty.Interactor: instance MonadScanner m0 => MonadScanner (BoolArchiverT m0)
- Text.Chatty.Interactor: instance MonadScanner m0 => MonadScanner (BoolFilterT m0)
- Text.Chatty.Interactor: instance MonadScanner m0 => MonadScanner (DeafT m0)
- Text.Chatty.Interactor: instance MonadScanner m0 => MonadScanner (ExpanderT m0)
- Text.Chatty.Interactor: instance MonadScanner m0 => MonadScanner (HandleArchiverT m0)
- Text.Chatty.Interactor: instance MonadScanner m0 => MonadScanner (HandleCloserT m0)
- Text.Chatty.Interactor: instance MonadScanner m0 => MonadScanner (HandleFilterT m0)
- Text.Chatty.Interactor: instance MonadScanner m0 => MonadScanner (HistoryT m0)
- Text.Chatty.Interactor: instance MonadScanner m0 => MonadScanner (HtmlPrinterT m0)
- Text.Chatty.Interactor: instance MonadScanner m0 => MonadScanner (IntArchiverT m0)
- Text.Chatty.Interactor: instance MonadScanner m0 => MonadScanner (IntFilterT m0)
- Text.Chatty.Interactor: instance MonadScanner m0 => MonadScanner (JoinerT m0)
- Text.Chatty.Interactor: instance MonadScanner m0 => MonadScanner (NullExpanderT m0)
- Text.Chatty.Interactor: instance MonadScanner m0 => MonadScanner (OutRedirT m0)
- Text.Chatty.Interactor: instance MonadScanner m0 => MonadScanner (RecorderT m0)
- Text.Chatty.Interactor: instance MonadScanner m0 => MonadScanner (SpawnOverlayT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (AnsiPrinterT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (BoolArchiverT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (BoolFilterT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (DeafT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (ExpanderT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (HandleArchiverT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (HandleCloserT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (HandleFilterT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (HereStringT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (HistoryT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (HtmlPrinterT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (InRedirT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (IntArchiverT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (IntFilterT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (JoinerT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (NullExpanderT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (OutRedirT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (QuietT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (RecorderT m0)
- Text.Chatty.Interactor: instance MonadSpawn m0 => MonadSpawn (ScannerBufferT m0)
- Text.Chatty.Parser: (??) :: (MonadParser m, Eq a) => m a -> m a -> m a
- Text.Chatty.Parser: (???) :: MonadParser m => m a -> m a -> m a
- Text.Chatty.Parser: alpha :: MonadParser m => m Char
- Text.Chatty.Parser: anum :: MonadParser m => m Char
- Text.Chatty.Parser: class MonadScanner m => MonadParser m
- Text.Chatty.Parser: digit :: MonadParser m => m Int
- Text.Chatty.Parser: many :: MonadParser m => m a -> m [a]
- Text.Chatty.Parser: match :: MonadParser m => Char -> m Char
- Text.Chatty.Parser: matchs :: MonadParser m => String -> m String
- Text.Chatty.Parser: number :: MonadParser m => m Int
- Text.Chatty.Parser: pabort :: MonadParser m => m a
- Text.Chatty.Parser: possibly :: MonadParser m => m a -> m (Maybe a)
- Text.Chatty.Parser: ptry :: (MonadParser m, MonadPlus n) => m a -> m (n a)
- Text.Chatty.Parser: request :: MonadScanner m => m Char
- Text.Chatty.Parser: some :: MonadParser m => m a -> m [a]
- Text.Chatty.Parser: white :: MonadParser m => m Char
- Text.Chatty.Parser.Nondeterministic: Failed :: ForkerT m a
- Text.Chatty.Parser.Nondeterministic: Result :: (m a) -> (Char -> ForkerT m a) -> ForkerT m a
- Text.Chatty.Parser.Nondeterministic: data ForkerT m a
- Text.Chatty.Parser.Nondeterministic: embedForkerT :: (MonadPlus n, Foldable n, MonadScanner m) => ForkerT n a -> m (n a)
- Text.Chatty.Parser.Nondeterministic: feedForkerT :: (MonadPlus m, Foldable m) => String -> ForkerT m a -> ForkerT m a
- Text.Chatty.Parser.Nondeterministic: feedForkerT1 :: (MonadPlus m, Foldable m) => Char -> ForkerT m a -> ForkerT m a
- Text.Chatty.Parser.Nondeterministic: instance (MonadPlus m, Foldable m) => Monad (ForkerT m)
- Text.Chatty.Parser.Nondeterministic: instance (MonadPlus m, Foldable m) => MonadParser (ForkerT m)
- Text.Chatty.Parser.Nondeterministic: instance (MonadPlus m, Foldable m) => MonadScanner (ForkerT m)
- Text.Chatty.Printer: class Monad m => MonadPrinter m where mnoecho = mprint mflush = return () mnomask = mprint
- Text.Chatty.Printer: instance Monad m => MonadPrinter (DeafT m)
- Text.Chatty.Printer: instance Monad m => MonadPrinter (RecorderT m)
- Text.Chatty.Printer: instance Monad m => MonadPrinter (StateT String m)
- Text.Chatty.Printer: instance MonadIO m => MonadPrinter (OutRedirT m)
- Text.Chatty.Printer: instance MonadPrinter IO
- Text.Chatty.Scanner: class Monad m => MonadScanner m where mscanh = return Nothing
- Text.Chatty.Scanner: instance Monad m => MonadScanner (HereStringT m)
- Text.Chatty.Scanner: instance Monad m => MonadScanner (QuietT m)
- Text.Chatty.Scanner: instance Monad m => MonadScanner (StateT String m)
- Text.Chatty.Scanner: instance MonadFinalizer m => MonadFinalizer (HereStringT m)
- Text.Chatty.Scanner: instance MonadFinalizer m => MonadFinalizer (InRedirT m)
- Text.Chatty.Scanner: instance MonadIO m => MonadScanner (InRedirT m)
- Text.Chatty.Scanner: instance MonadScanner IO
- Text.Chatty.Scanner.Buffered: class MonadScanner m => BufferedScanner m
- Text.Chatty.Scanner.Buffered: instance Monad m => BufferedScanner (HereStringT m)
- Text.Chatty.Scanner.Buffered: instance Monad m => BufferedScanner (StateT String m)
- Text.Chatty.Scanner.Buffered: instance MonadScanner m => BufferedScanner (ScannerBufferT m)
- Text.Chatty.Scanner.Buffered: instance MonadScanner m => MonadScanner (ScannerBufferT m)
- Text.Chatty.Typograph: simpleTypesetter :: (Functor m, MonadScanner m, MonadPrinter m) => Int -> m ()
+ System.Chatty.Misc: class (Functor m, Monad m) => ChClock m where mgetstamp = fmap (flip diffUTCTime (UTCTime (fromGregorian 1970 1 1) (secondsToDiffTime 0))) mutctime
+ System.Chatty.Misc: class Monad m => ChRandom m
+ System.Chatty.Misc: instance ChClock IO
+ System.Chatty.Misc: instance ChRandom IO
+ System.Chatty.Spawn: class Monad m => ChSpawn m
+ System.Chatty.Spawn: instance ChSpawn IO
+ System.Chatty.Spawn.Overlay: instance ChSpawn m => ChSpawn (SpawnOverlayT m)
+ Text.Chatty.Channel.Broadcast: class ChChannelPrinter c m => ChBroadcaster c m
+ Text.Chatty.Channel.Broadcast: class ChBroadcaster c m => ChBroadcasterBracket c m where bbracket f m = bstart f >> m >>= \ a -> bfin f >> return a
+ Text.Chatty.Channel.Printer: 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
+ Text.Chatty.Channel.Printer: instance (Eq c, ChPrinter m) => ChChannelPrinter c (FilterT c m)
+ Text.Chatty.Channel.Printer: instance (Eq c, ChPrinter m) => ChChannelPrinter c (JoinerT m)
+ Text.Chatty.Channel.Printer: instance (Eq c, ChPrinter m) => ChPrinter (FilterT c m)
+ Text.Chatty.Channel.Printer: instance (Eq c, Monad m) => ChChannelPrinter c (ArchiverT c m)
+ Text.Chatty.Channel.Printer: instance (Eq c, Monad m) => ChPrinter (ArchiverT c m)
+ Text.Chatty.Channel.Printer: instance ChPrinter m => ChPrinter (JoinerT m)
+ Text.Chatty.Expansion: class Monad e => ChExpand e
+ Text.Chatty.Expansion: instance Monad m => ChExpand (NullExpanderT m)
+ Text.Chatty.Expansion.History: class Monad he => ChHistoryEnv he
+ Text.Chatty.Expansion.History: instance ChExpand m => ChExpand (HistoryT m)
+ Text.Chatty.Expansion.History: instance Monad m => ChHistoryEnv (HistoryT m)
+ Text.Chatty.Expansion.Vars: class Monad ee => ChExpanderEnv ee
+ Text.Chatty.Expansion.Vars: instance ChExpand IO
+ Text.Chatty.Expansion.Vars: instance ChExpand m => ChExpand (ExpanderT m)
+ Text.Chatty.Expansion.Vars: instance ChExpanderEnv IO
+ Text.Chatty.Expansion.Vars: instance Monad m => ChExpanderEnv (ExpanderT m)
+ Text.Chatty.Extended.ANSI: instance (Functor m, ChExpand m) => ChExpand (AnsiPrinterT m)
+ Text.Chatty.Extended.ANSI: instance ChPrinter m => ChExtendedPrinter (AnsiPrinterT m)
+ Text.Chatty.Extended.ANSI: instance ChPrinter m => ChPrinter (AnsiPrinterT m)
+ Text.Chatty.Extended.HTML: instance (Functor m, ChExpand m) => ChExpand (HtmlPrinterT m)
+ Text.Chatty.Extended.HTML: instance ChPrinter m => ChExtendedPrinter (HtmlPrinterT m)
+ Text.Chatty.Extended.HTML: instance ChPrinter m => ChPrinter (HtmlPrinterT m)
+ Text.Chatty.Extended.Printer: 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 ""
+ Text.Chatty.Finalizer: class Monad m => ChFinalizer m where mqfhs = foldr ((>>) . mqfh) (return ())
+ Text.Chatty.Finalizer: instance MonadIO m => ChFinalizer (HandleCloserT m)
+ Text.Chatty.Interactor: instance ChBufferedScanner m0 => ChBufferedScanner (AnsiPrinterT m0)
+ Text.Chatty.Interactor: instance ChBufferedScanner m0 => ChBufferedScanner (DeafT m0)
+ Text.Chatty.Interactor: instance ChBufferedScanner m0 => ChBufferedScanner (ExpanderT m0)
+ Text.Chatty.Interactor: instance ChBufferedScanner m0 => ChBufferedScanner (HandleCloserT m0)
+ Text.Chatty.Interactor: instance ChBufferedScanner m0 => ChBufferedScanner (HistoryT m0)
+ Text.Chatty.Interactor: instance ChBufferedScanner m0 => ChBufferedScanner (HtmlPrinterT m0)
+ Text.Chatty.Interactor: instance ChBufferedScanner m0 => ChBufferedScanner (NullExpanderT m0)
+ Text.Chatty.Interactor: instance ChBufferedScanner m0 => ChBufferedScanner (OutRedirT m0)
+ Text.Chatty.Interactor: instance ChBufferedScanner m0 => ChBufferedScanner (RecorderT m0)
+ Text.Chatty.Interactor: instance ChBufferedScanner m0 => ChBufferedScanner (SpawnOverlayT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (AnsiPrinterT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (ExpanderT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (HandleCloserT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (HereStringT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (HistoryT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (HtmlPrinterT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (InRedirT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (NullExpanderT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (QuietT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (ScannerBufferT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Bool m0 => ChChannelPrinter Bool (SpawnOverlayT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (AnsiPrinterT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (ExpanderT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (HandleCloserT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (HereStringT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (HistoryT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (HtmlPrinterT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (InRedirT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (NullExpanderT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (QuietT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (ScannerBufferT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Handle m0 => ChChannelPrinter Handle (SpawnOverlayT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Int m0 => ChChannelPrinter Int (AnsiPrinterT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Int m0 => ChChannelPrinter Int (ExpanderT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Int m0 => ChChannelPrinter Int (HandleCloserT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Int m0 => ChChannelPrinter Int (HereStringT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Int m0 => ChChannelPrinter Int (HistoryT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Int m0 => ChChannelPrinter Int (HtmlPrinterT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Int m0 => ChChannelPrinter Int (InRedirT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Int m0 => ChChannelPrinter Int (NullExpanderT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Int m0 => ChChannelPrinter Int (QuietT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Int m0 => ChChannelPrinter Int (ScannerBufferT m0)
+ Text.Chatty.Interactor: instance ChChannelPrinter Int m0 => ChChannelPrinter Int (SpawnOverlayT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (AnsiPrinterT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (BoolArchiverT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (BoolFilterT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (DeafT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (ExpanderT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (HandleArchiverT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (HandleCloserT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (HandleFilterT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (HereStringT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (HistoryT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (HtmlPrinterT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (InRedirT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (IntArchiverT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (IntFilterT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (JoinerT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (NullExpanderT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (OutRedirT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (QuietT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (RecorderT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (ScannerBufferT m0)
+ Text.Chatty.Interactor: instance ChClock m0 => ChClock (SpawnOverlayT m0)
+ Text.Chatty.Interactor: instance ChExpand m0 => ChExpand (BoolArchiverT m0)
+ Text.Chatty.Interactor: instance ChExpand m0 => ChExpand (BoolFilterT m0)
+ Text.Chatty.Interactor: instance ChExpand m0 => ChExpand (DeafT m0)
+ Text.Chatty.Interactor: instance ChExpand m0 => ChExpand (HandleArchiverT m0)
+ Text.Chatty.Interactor: instance ChExpand m0 => ChExpand (HandleCloserT m0)
+ Text.Chatty.Interactor: instance ChExpand m0 => ChExpand (HandleFilterT m0)
+ Text.Chatty.Interactor: instance ChExpand m0 => ChExpand (HereStringT m0)
+ Text.Chatty.Interactor: instance ChExpand m0 => ChExpand (InRedirT m0)
+ Text.Chatty.Interactor: instance ChExpand m0 => ChExpand (IntArchiverT m0)
+ Text.Chatty.Interactor: instance ChExpand m0 => ChExpand (IntFilterT m0)
+ Text.Chatty.Interactor: instance ChExpand m0 => ChExpand (JoinerT m0)
+ Text.Chatty.Interactor: instance ChExpand m0 => ChExpand (OutRedirT m0)
+ Text.Chatty.Interactor: instance ChExpand m0 => ChExpand (QuietT m0)
+ Text.Chatty.Interactor: instance ChExpand m0 => ChExpand (RecorderT m0)
+ Text.Chatty.Interactor: instance ChExpand m0 => ChExpand (ScannerBufferT m0)
+ Text.Chatty.Interactor: instance ChExpand m0 => ChExpand (SpawnOverlayT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (AnsiPrinterT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (BoolArchiverT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (BoolFilterT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (DeafT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (HandleArchiverT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (HandleCloserT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (HandleFilterT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (HereStringT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (HistoryT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (HtmlPrinterT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (InRedirT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (IntArchiverT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (IntFilterT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (JoinerT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (OutRedirT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (QuietT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (RecorderT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (ScannerBufferT m0)
+ Text.Chatty.Interactor: instance ChExpanderEnv m0 => ChExpanderEnv (SpawnOverlayT m0)
+ Text.Chatty.Interactor: instance ChExtendedPrinter m0 => ChExtendedPrinter (HereStringT m0)
+ Text.Chatty.Interactor: instance ChExtendedPrinter m0 => ChExtendedPrinter (HistoryT m0)
+ Text.Chatty.Interactor: instance ChExtendedPrinter m0 => ChExtendedPrinter (InRedirT m0)
+ Text.Chatty.Interactor: instance ChExtendedPrinter m0 => ChExtendedPrinter (NullExpanderT m0)
+ Text.Chatty.Interactor: instance ChExtendedPrinter m0 => ChExtendedPrinter (QuietT m0)
+ Text.Chatty.Interactor: instance ChExtendedPrinter m0 => ChExtendedPrinter (ScannerBufferT m0)
+ Text.Chatty.Interactor: instance ChExtendedPrinter m0 => ChExtendedPrinter (SpawnOverlayT m0)
+ Text.Chatty.Interactor: instance ChFinalizer m0 => ChFinalizer (AnsiPrinterT m0)
+ Text.Chatty.Interactor: instance ChFinalizer m0 => ChFinalizer (BoolArchiverT m0)
+ Text.Chatty.Interactor: instance ChFinalizer m0 => ChFinalizer (BoolFilterT m0)
+ Text.Chatty.Interactor: instance ChFinalizer m0 => ChFinalizer (DeafT m0)
+ Text.Chatty.Interactor: instance ChFinalizer m0 => ChFinalizer (ExpanderT m0)
+ Text.Chatty.Interactor: instance ChFinalizer m0 => ChFinalizer (HandleArchiverT m0)
+ Text.Chatty.Interactor: instance ChFinalizer m0 => ChFinalizer (HandleFilterT m0)
+ Text.Chatty.Interactor: instance ChFinalizer m0 => ChFinalizer (HistoryT m0)
+ Text.Chatty.Interactor: instance ChFinalizer m0 => ChFinalizer (HtmlPrinterT m0)
+ Text.Chatty.Interactor: instance ChFinalizer m0 => ChFinalizer (IntArchiverT m0)
+ Text.Chatty.Interactor: instance ChFinalizer m0 => ChFinalizer (IntFilterT m0)
+ Text.Chatty.Interactor: instance ChFinalizer m0 => ChFinalizer (JoinerT m0)
+ Text.Chatty.Interactor: instance ChFinalizer m0 => ChFinalizer (NullExpanderT m0)
+ Text.Chatty.Interactor: instance ChFinalizer m0 => ChFinalizer (OutRedirT m0)
+ Text.Chatty.Interactor: instance ChFinalizer m0 => ChFinalizer (RecorderT m0)
+ Text.Chatty.Interactor: instance ChFinalizer m0 => ChFinalizer (ScannerBufferT m0)
+ Text.Chatty.Interactor: instance ChFinalizer m0 => ChFinalizer (SpawnOverlayT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (AnsiPrinterT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (BoolArchiverT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (BoolFilterT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (DeafT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (ExpanderT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (HandleArchiverT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (HandleCloserT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (HandleFilterT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (HereStringT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (HtmlPrinterT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (InRedirT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (IntArchiverT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (IntFilterT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (JoinerT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (OutRedirT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (QuietT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (RecorderT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (ScannerBufferT m0)
+ Text.Chatty.Interactor: instance ChHistoryEnv m0 => ChHistoryEnv (SpawnOverlayT m0)
+ Text.Chatty.Interactor: instance ChPrinter m0 => ChPrinter (ExpanderT m0)
+ Text.Chatty.Interactor: instance ChPrinter m0 => ChPrinter (HandleCloserT m0)
+ Text.Chatty.Interactor: instance ChPrinter m0 => ChPrinter (HereStringT m0)
+ Text.Chatty.Interactor: instance ChPrinter m0 => ChPrinter (HistoryT m0)
+ Text.Chatty.Interactor: instance ChPrinter m0 => ChPrinter (InRedirT m0)
+ Text.Chatty.Interactor: instance ChPrinter m0 => ChPrinter (NullExpanderT m0)
+ Text.Chatty.Interactor: instance ChPrinter m0 => ChPrinter (QuietT m0)
+ Text.Chatty.Interactor: instance ChPrinter m0 => ChPrinter (ScannerBufferT m0)
+ Text.Chatty.Interactor: instance ChPrinter m0 => ChPrinter (SpawnOverlayT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (AnsiPrinterT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (BoolArchiverT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (BoolFilterT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (DeafT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (ExpanderT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (HandleArchiverT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (HandleCloserT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (HandleFilterT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (HereStringT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (HistoryT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (HtmlPrinterT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (InRedirT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (IntArchiverT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (IntFilterT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (JoinerT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (NullExpanderT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (OutRedirT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (QuietT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (RecorderT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (ScannerBufferT m0)
+ Text.Chatty.Interactor: instance ChRandom m0 => ChRandom (SpawnOverlayT m0)
+ Text.Chatty.Interactor: instance ChScanner m0 => ChScanner (AnsiPrinterT m0)
+ Text.Chatty.Interactor: instance ChScanner m0 => ChScanner (BoolArchiverT m0)
+ Text.Chatty.Interactor: instance ChScanner m0 => ChScanner (BoolFilterT m0)
+ Text.Chatty.Interactor: instance ChScanner m0 => ChScanner (DeafT m0)
+ Text.Chatty.Interactor: instance ChScanner m0 => ChScanner (ExpanderT m0)
+ Text.Chatty.Interactor: instance ChScanner m0 => ChScanner (HandleArchiverT m0)
+ Text.Chatty.Interactor: instance ChScanner m0 => ChScanner (HandleCloserT m0)
+ Text.Chatty.Interactor: instance ChScanner m0 => ChScanner (HandleFilterT m0)
+ Text.Chatty.Interactor: instance ChScanner m0 => ChScanner (HistoryT m0)
+ Text.Chatty.Interactor: instance ChScanner m0 => ChScanner (HtmlPrinterT m0)
+ Text.Chatty.Interactor: instance ChScanner m0 => ChScanner (IntArchiverT m0)
+ Text.Chatty.Interactor: instance ChScanner m0 => ChScanner (IntFilterT m0)
+ Text.Chatty.Interactor: instance ChScanner m0 => ChScanner (JoinerT m0)
+ Text.Chatty.Interactor: instance ChScanner m0 => ChScanner (NullExpanderT m0)
+ Text.Chatty.Interactor: instance ChScanner m0 => ChScanner (OutRedirT m0)
+ Text.Chatty.Interactor: instance ChScanner m0 => ChScanner (RecorderT m0)
+ Text.Chatty.Interactor: instance ChScanner m0 => ChScanner (SpawnOverlayT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (AnsiPrinterT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (BoolArchiverT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (BoolFilterT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (DeafT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (ExpanderT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (HandleArchiverT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (HandleCloserT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (HandleFilterT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (HereStringT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (HistoryT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (HtmlPrinterT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (InRedirT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (IntArchiverT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (IntFilterT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (JoinerT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (NullExpanderT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (OutRedirT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (QuietT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (RecorderT m0)
+ Text.Chatty.Interactor: instance ChSpawn m0 => ChSpawn (ScannerBufferT m0)
+ Text.Chatty.Printer: class Monad m => ChPrinter m where mnoecho = mprint mflush = return () mnomask = mprint
+ Text.Chatty.Printer: instance ChPrinter IO
+ Text.Chatty.Printer: instance Monad m => ChPrinter (DeafT m)
+ Text.Chatty.Printer: instance Monad m => ChPrinter (RecorderT m)
+ Text.Chatty.Printer: instance Monad m => ChPrinter (StateT String m)
+ Text.Chatty.Printer: instance MonadIO m => ChPrinter (OutRedirT m)
+ Text.Chatty.Printer: instance RedirectionTarget Handle OutRedirT a a
+ Text.Chatty.Scanner: class Monad m => ChScanner m where mscanh = return Nothing
+ Text.Chatty.Scanner: instance ChFinalizer m => ChFinalizer (HereStringT m)
+ Text.Chatty.Scanner: instance ChFinalizer m => ChFinalizer (InRedirT m)
+ Text.Chatty.Scanner: instance ChScanner IO
+ Text.Chatty.Scanner: instance Monad m => ChScanner (HereStringT m)
+ Text.Chatty.Scanner: instance Monad m => ChScanner (QuietT m)
+ Text.Chatty.Scanner: instance Monad m => ChScanner (StateT String m)
+ Text.Chatty.Scanner: instance MonadIO m => ChScanner (InRedirT m)
+ Text.Chatty.Scanner: instance RedirectionSource Handle InRedirT a a
+ Text.Chatty.Scanner.Buffered: class ChScanner m => ChBufferedScanner m
+ Text.Chatty.Scanner.Buffered: class ChBufferedScanner m => ChStackBufferedScanner m
+ Text.Chatty.Scanner.Buffered: instance ChScanner m => ChBufferedScanner (ScannerBufferT m)
+ Text.Chatty.Scanner.Buffered: instance ChScanner m => ChScanner (ScannerBufferT m)
+ Text.Chatty.Scanner.Buffered: instance ChScanner m => ChStackBufferedScanner (ScannerBufferT m)
+ Text.Chatty.Scanner.Buffered: instance Monad m => ChBufferedScanner (HereStringT m)
+ Text.Chatty.Scanner.Buffered: instance Monad m => ChBufferedScanner (StateT String m)
+ Text.Chatty.Scanner.Buffered: mpop :: ChStackBufferedScanner m => m ()
+ Text.Chatty.Scanner.Buffered: mpush :: ChStackBufferedScanner m => m ()
- System.Chatty.Commands: cat :: (MonadScanner m, MonadPrinter m, MonadIO m, Functor m, MonadFinalizer m) => [String] -> m ()
+ System.Chatty.Commands: cat :: (ChScanner m, ChPrinter m, MonadIO m, Functor m, ChFinalizer m) => [String] -> m ()
- System.Chatty.Commands: echo :: (MonadPrinter m, MonadExpand m) => String => m ()
+ System.Chatty.Commands: echo :: (ChPrinter m, ChExpand m) => String => m ()
- System.Chatty.Commands: head :: (MonadScanner m, MonadPrinter m, MonadIO m, Functor m) => Int -> m ()
+ System.Chatty.Commands: head :: (ChScanner m, ChPrinter m, MonadIO m, Functor m) => Int -> m ()
- System.Chatty.Commands: ls :: (MonadIO m, MonadPrinter m) => [String] -> m ()
+ System.Chatty.Commands: ls :: (MonadIO m, ChPrinter m) => [String] -> m ()
- System.Chatty.Commands: pwd :: (MonadIO m, MonadPrinter m) => m ()
+ System.Chatty.Commands: pwd :: (MonadIO m, ChPrinter m) => m ()
- System.Chatty.Commands: tac :: (MonadFinalizer m, MonadScanner m, MonadPrinter m, MonadIO m, Functor m) => [String] -> m ()
+ System.Chatty.Commands: tac :: (ChFinalizer m, ChScanner m, ChPrinter m, MonadIO m, Functor m) => [String] -> m ()
- System.Chatty.Commands: tail :: (MonadScanner m, MonadPrinter m, MonadIO m, Functor m) => Int -> m ()
+ System.Chatty.Commands: tail :: (ChScanner m, ChPrinter m, MonadIO m, Functor m) => Int -> m ()
- System.Chatty.Commands: tee :: (MonadScanner m, MonadPrinter m, MonadIO m, Functor m) => String -> m ()
+ System.Chatty.Commands: tee :: (ChScanner m, ChPrinter m, MonadIO m, Functor m) => String -> m ()
- System.Chatty.Commands: wc :: (MonadScanner m, MonadPrinter m, MonadIO m, Functor m) => WcMode -> m ()
+ System.Chatty.Commands: wc :: (ChScanner m, ChPrinter m, MonadIO m, Functor m) => WcMode -> m ()
- System.Chatty.Misc: mgetstamp :: MonadClock m => m NominalDiffTime
+ System.Chatty.Misc: mgetstamp :: ChClock m => m NominalDiffTime
- System.Chatty.Misc: mrandom :: (MonadRandom m, Random r) => m r
+ System.Chatty.Misc: mrandom :: (ChRandom m, Random r) => m r
- System.Chatty.Misc: mrandomR :: (MonadRandom m, Random r) => (r, r) -> m r
+ System.Chatty.Misc: mrandomR :: (ChRandom m, Random r) => (r, r) -> m r
- System.Chatty.Misc: mutctime :: MonadClock m => m UTCTime
+ System.Chatty.Misc: mutctime :: ChClock m => m UTCTime
- System.Chatty.Spawn: mah :: MonadSpawn m => String -> m Bool
+ System.Chatty.Spawn: mah :: ChSpawn m => String -> m Bool
- System.Chatty.Spawn: mspw :: MonadSpawn m => String -> [String] -> Either Handle String -> m (Int, String, [Handle])
+ System.Chatty.Spawn: mspw :: ChSpawn m => String -> [String] -> Either Handle String -> m (Int, String, [Handle])
- System.Chatty.Spawn: spawn :: (MonadFinalizer m, MonadScanner m, MonadPrinter m, MonadSpawn m, Functor m) => String -> [String] -> m Int
+ System.Chatty.Spawn: spawn :: (ChFinalizer m, ChScanner m, ChPrinter m, ChSpawn m, Functor m) => String -> [String] -> m Int
- System.Chatty.Spawn.Builtins: withBuiltins :: (Functor m, MonadSpawn m) => SpawnOverlayT m a -> m a
+ System.Chatty.Spawn.Builtins: withBuiltins :: (Functor m, ChSpawn m) => SpawnOverlayT m a -> m a
- Text.Chatty.Channel.Broadcast: bbracket :: BroadcasterBracket c m => (c -> m Bool) -> m a -> m a
+ Text.Chatty.Channel.Broadcast: bbracket :: ChBroadcasterBracket c m => (c -> m Bool) -> m a -> m a
- Text.Chatty.Channel.Broadcast: bfin :: BroadcasterBracket c m => (c -> m Bool) -> m ()
+ Text.Chatty.Channel.Broadcast: bfin :: ChBroadcasterBracket c m => (c -> m Bool) -> m ()
- Text.Chatty.Channel.Broadcast: bprint :: Broadcaster c m => (c -> m Bool) -> String -> m ()
+ Text.Chatty.Channel.Broadcast: bprint :: ChBroadcaster c m => (c -> m Bool) -> String -> m ()
- Text.Chatty.Channel.Broadcast: bstart :: BroadcasterBracket c m => (c -> m Bool) -> m ()
+ Text.Chatty.Channel.Broadcast: bstart :: ChBroadcasterBracket c m => (c -> m Bool) -> m ()
- Text.Chatty.Channel.Printer: cbracket :: ChannelPrinter c m => c -> m a -> m a
+ Text.Chatty.Channel.Printer: cbracket :: ChChannelPrinter c m => c -> m a -> m a
- Text.Chatty.Channel.Printer: cfin :: ChannelPrinter c m => c -> m ()
+ Text.Chatty.Channel.Printer: cfin :: ChChannelPrinter c m => c -> m ()
- Text.Chatty.Channel.Printer: cprint :: ChannelPrinter c m => c -> String -> m ()
+ Text.Chatty.Channel.Printer: cprint :: ChChannelPrinter c m => c -> String -> m ()
- Text.Chatty.Channel.Printer: cstart :: ChannelPrinter c m => c -> m ()
+ Text.Chatty.Channel.Printer: cstart :: ChChannelPrinter c m => c -> m ()
- Text.Chatty.Channel.Printer: cthis :: ChannelPrinter c m => m c
+ Text.Chatty.Channel.Printer: cthis :: ChChannelPrinter c m => m c
- Text.Chatty.Expansion: expand :: MonadExpand e => String -> e String
+ Text.Chatty.Expansion: expand :: ChExpand e => String -> e String
- Text.Chatty.Expansion.History: expandHist :: HistoryEnv h => String -> h String
+ Text.Chatty.Expansion.History: expandHist :: ChHistoryEnv h => String -> h String
- Text.Chatty.Expansion.History: mcounth :: HistoryEnv he => he Int
+ Text.Chatty.Expansion.History: mcounth :: ChHistoryEnv he => he Int
- Text.Chatty.Expansion.History: mgeth :: HistoryEnv he => Int -> he String
+ Text.Chatty.Expansion.History: mgeth :: ChHistoryEnv he => Int -> he String
- Text.Chatty.Expansion.History: mputh :: HistoryEnv he => String -> he ()
+ Text.Chatty.Expansion.History: mputh :: ChHistoryEnv he => String -> he ()
- Text.Chatty.Expansion.Vars: expandVars :: (Monad m, Functor m, ExpanderEnv m) => String -> m String
+ Text.Chatty.Expansion.Vars: expandVars :: (Monad m, Functor m, ChExpanderEnv m) => String -> m String
- Text.Chatty.Expansion.Vars: mgetv :: ExpanderEnv ee => String -> ee EnvVar
+ Text.Chatty.Expansion.Vars: mgetv :: ChExpanderEnv ee => String -> ee EnvVar
- Text.Chatty.Expansion.Vars: mputv :: ExpanderEnv ee => String -> EnvVar -> ee ()
+ Text.Chatty.Expansion.Vars: mputv :: ChExpanderEnv ee => String -> EnvVar -> ee ()
- Text.Chatty.Extended.Printer: ebracket :: ExtendedPrinter m => Colour -> m a -> m a
+ Text.Chatty.Extended.Printer: ebracket :: ChExtendedPrinter m => Colour -> m a -> m a
- Text.Chatty.Extended.Printer: efin :: ExtendedPrinter m => m ()
+ Text.Chatty.Extended.Printer: efin :: ChExtendedPrinter m => m ()
- Text.Chatty.Extended.Printer: enomask :: ExtendedPrinter m => Colour -> String -> m ()
+ Text.Chatty.Extended.Printer: enomask :: ChExtendedPrinter m => Colour -> String -> m ()
- Text.Chatty.Extended.Printer: enomaskLn :: ExtendedPrinter m => Colour -> String -> m ()
+ Text.Chatty.Extended.Printer: enomaskLn :: ChExtendedPrinter m => Colour -> String -> m ()
- Text.Chatty.Extended.Printer: eprint :: ExtendedPrinter m => Colour -> String -> m ()
+ Text.Chatty.Extended.Printer: eprint :: ChExtendedPrinter m => Colour -> String -> m ()
- Text.Chatty.Extended.Printer: eprintLn :: ExtendedPrinter m => Colour -> String -> m ()
+ Text.Chatty.Extended.Printer: eprintLn :: ChExtendedPrinter m => Colour -> String -> m ()
- Text.Chatty.Extended.Printer: estart :: ExtendedPrinter m => Colour -> m ()
+ Text.Chatty.Extended.Printer: estart :: ChExtendedPrinter m => Colour -> m ()
- Text.Chatty.Extended.Printer: expandClr :: ExtendedPrinter m => String -> m ()
+ Text.Chatty.Extended.Printer: expandClr :: ChExtendedPrinter m => String -> m ()
- Text.Chatty.Finalizer: mfin :: MonadFinalizer m => m ()
+ Text.Chatty.Finalizer: mfin :: ChFinalizer m => m ()
- Text.Chatty.Finalizer: mqfh :: MonadFinalizer m => Handle -> m ()
+ Text.Chatty.Finalizer: mqfh :: ChFinalizer m => Handle -> m ()
- Text.Chatty.Finalizer: mqfhs :: MonadFinalizer m => [Handle] -> m ()
+ Text.Chatty.Finalizer: mqfhs :: ChFinalizer m => [Handle] -> m ()
- Text.Chatty.Printer: (.>.) :: (RedirectionTarget t mt a r, Functor m, MonadIO m, MonadPrinter (mt m)) => mt m a -> t -> m r
+ Text.Chatty.Printer: (.>.) :: (RedirectionTarget t mt a r, Functor m, MonadIO m, ChPrinter (mt m)) => mt m a -> t -> m r
- Text.Chatty.Printer: (.>>.) :: (RedirectionTarget t mt a r, Functor m, MonadIO m, MonadPrinter (mt m)) => mt m a -> t -> m r
+ Text.Chatty.Printer: (.>>.) :: (RedirectionTarget t mt a r, Functor m, MonadIO m, ChPrinter (mt m)) => mt m a -> t -> m r
- Text.Chatty.Printer: mflush :: MonadPrinter m => m ()
+ Text.Chatty.Printer: mflush :: ChPrinter m => m ()
- Text.Chatty.Printer: mnoecho :: MonadPrinter m => String -> m ()
+ Text.Chatty.Printer: mnoecho :: ChPrinter m => String -> m ()
- Text.Chatty.Printer: mnomask :: MonadPrinter m => String -> m ()
+ Text.Chatty.Printer: mnomask :: ChPrinter m => String -> m ()
- Text.Chatty.Printer: mnomaskLn :: MonadPrinter m => String -> m ()
+ Text.Chatty.Printer: mnomaskLn :: ChPrinter m => String -> m ()
- Text.Chatty.Printer: mprint :: MonadPrinter m => String -> m ()
+ Text.Chatty.Printer: mprint :: ChPrinter m => String -> m ()
- Text.Chatty.Printer: mprintLn :: MonadPrinter m => String -> m ()
+ Text.Chatty.Printer: mprintLn :: ChPrinter m => String -> m ()
- Text.Chatty.Scanner: (.<.) :: (RedirectionSource t mt a r, MonadFinalizer m, Functor m, MonadIO m, MonadScanner (mt m)) => mt m a -> t -> m a
+ Text.Chatty.Scanner: (.<.) :: (RedirectionSource t mt a r, ChFinalizer m, Functor m, MonadIO m, ChScanner (mt m)) => mt m a -> t -> m r
- Text.Chatty.Scanner: (.<<.) :: (RedirectionHeredoc t mt a r, Functor m, MonadScanner (mt m)) => mt m a -> t -> m a
+ Text.Chatty.Scanner: (.<<.) :: (RedirectionHeredoc t mt a r, Functor m, ChScanner (mt m)) => mt m a -> t -> m r
- Text.Chatty.Scanner: mready :: MonadScanner m => m Bool
+ Text.Chatty.Scanner: mready :: ChScanner m => m Bool
- Text.Chatty.Scanner: mscan1 :: MonadScanner m => m Char
+ Text.Chatty.Scanner: mscan1 :: ChScanner m => m Char
- Text.Chatty.Scanner: mscanL :: MonadScanner m => m String
+ Text.Chatty.Scanner: mscanL :: ChScanner m => m String
- Text.Chatty.Scanner: mscanLn :: MonadScanner m => m String
+ Text.Chatty.Scanner: mscanLn :: ChScanner m => m String
- Text.Chatty.Scanner: mscanN :: MonadScanner m => Int -> m String
+ Text.Chatty.Scanner: mscanN :: ChScanner m => Int -> m String
- Text.Chatty.Scanner: mscanh :: MonadScanner m => m (Maybe Handle)
+ Text.Chatty.Scanner: mscanh :: ChScanner m => m (Maybe Handle)
- Text.Chatty.Scanner: mscannable :: MonadScanner m => m Bool
+ Text.Chatty.Scanner: mscannable :: ChScanner m => m Bool
- Text.Chatty.Scanner: runInRedirFT :: (Functor m, MonadIO m, MonadFinalizer m) => InRedirT m a -> FilePath -> m a
+ Text.Chatty.Scanner: runInRedirFT :: (Functor m, MonadIO m, ChFinalizer m) => InRedirT m a -> FilePath -> m a
- Text.Chatty.Scanner.Buffered: ScannerBuffer :: (String -> m (a, String)) -> ScannerBufferT m a
+ Text.Chatty.Scanner.Buffered: ScannerBuffer :: ([String] -> m (a, [String])) -> ScannerBufferT m a
- Text.Chatty.Scanner.Buffered: mpeek1 :: BufferedScanner m => m Char
+ Text.Chatty.Scanner.Buffered: mpeek1 :: ChBufferedScanner m => m Char
- Text.Chatty.Scanner.Buffered: mprepend :: BufferedScanner m => String -> m ()
+ Text.Chatty.Scanner.Buffered: mprepend :: ChBufferedScanner m => String -> m ()
- Text.Chatty.Scanner.Buffered: runScannerBufferT :: ScannerBufferT m a -> String -> m (a, String)
+ Text.Chatty.Scanner.Buffered: runScannerBufferT :: ScannerBufferT m a -> [String] -> m (a, [String])
Files
- System/Chatty/Commands.hs +9/−9
- System/Chatty/Misc.hs +4/−4
- System/Chatty/Spawn.hs +3/−3
- System/Chatty/Spawn/Builtins.hs +2/−2
- System/Chatty/Spawn/Overlay.hs +1/−1
- Text/Chatty/Channel/Broadcast.hs +2/−2
- Text/Chatty/Channel/Printer.hs +8/−8
- Text/Chatty/Expansion.hs +2/−2
- Text/Chatty/Expansion/History.hs +4/−4
- Text/Chatty/Expansion/Vars.hs +6/−6
- Text/Chatty/Extended/ANSI.hs +5/−5
- Text/Chatty/Extended/HTML.hs +5/−5
- Text/Chatty/Extended/Printer.hs +3/−3
- Text/Chatty/Finalizer.hs +2/−3
- Text/Chatty/Interactor/Templates.hs +25/−25
- Text/Chatty/Parser.hs +0/−92
- Text/Chatty/Parser/Nondeterministic.hs +0/−81
- Text/Chatty/Printer.hs +12/−10
- Text/Chatty/Scanner.hs +17/−15
- Text/Chatty/Scanner/Buffered.hs +27/−12
- Text/Chatty/Typograph.hs +0/−60
- chatty.cabal +5/−4
System/Chatty/Commands.hs view
@@ -37,32 +37,32 @@ import System.Posix.Files -- | Like 'cat' on the command line. Accepts a list of filenames. Simple pass-through, if none are provided.-cat :: (MonadScanner m, MonadPrinter m, MonadIO m,Functor m,MonadFinalizer m) => [String] -> m ()+cat :: (ChScanner m, ChPrinter m, MonadIO m,Functor m,ChFinalizer m) => [String] -> m () cat [] = mscanL >>= mprint cat [f] = cat [] .<. f cat (f:fs) = cat [f] >> cat fs -- | Like 'cat', but reverses the line order.-tac :: (MonadFinalizer m,MonadScanner m, MonadPrinter m, MonadIO m,Functor m) => [String] -> m ()+tac :: (ChFinalizer m,ChScanner m, ChPrinter m, MonadIO m,Functor m) => [String] -> m () tac [] = mscanL >>= (mprint . unlines . reverse . lines) tac fs = cat fs .|. tac [] -- | Pass-through, simultanously writing all input to a given file.-tee :: (MonadScanner m, MonadPrinter m, MonadIO m, Functor m) => String -> m ()+tee :: (ChScanner m, ChPrinter m, MonadIO m, Functor m) => String -> m () tee f = do s <- mscanL mprint s .>. f mprint s -- | Prints the given string, after expanding it.-echo :: (MonadPrinter m,MonadExpand m) => String => m ()+echo :: (ChPrinter m,ChExpand m) => String => m () echo = mprintLn <=< expand -- | Mode for 'wc'. data WcMode = CountChars | CountLines | CountWords -- | Count characters, lines or words of the input.-wc :: (MonadScanner m, MonadPrinter m, MonadIO m, Functor m) => WcMode -> m ()+wc :: (ChScanner m, ChPrinter m, MonadIO m, Functor m) => WcMode -> m () wc CountChars = mscanL >>= (mprint . show . length) >> mprint "\n" wc CountLines = mscanL >>= (mprint . show . length . lines) >> mprint "\n" wc CountWords = mscanL >>= (mprint . show . length . words) >> mprint "\n"@@ -72,11 +72,11 @@ cd = liftIO . setCurrentDirectory -- | Print current working directory.-pwd :: (MonadIO m,MonadPrinter m) => m ()+pwd :: (MonadIO m,ChPrinter m) => m () pwd = liftIO getCurrentDirectory >>= mprintLn -- | List directory contents of the given directories (current one, if empty list).-ls :: (MonadIO m,MonadPrinter m) => [String] -> m ()+ls :: (MonadIO m,ChPrinter m) => [String] -> m () ls [] = liftIO (getDirectoryContents ".") >>= (mprint . unlines) ls [p] = do fs <- liftIO $ getFileStatus p@@ -87,9 +87,9 @@ ls (p:ps) = ls [p] >> ls ps -- | Filters only the first n lines of the input.-head :: (MonadScanner m,MonadPrinter m,MonadIO m,Functor m) => Int -> m ()+head :: (ChScanner m,ChPrinter m,MonadIO m,Functor m) => Int -> m () head n = mscanL >>= (mprint . unlines . take n . lines) -- | FIlters only the last n lines of the input.-tail :: (MonadScanner m,MonadPrinter m,MonadIO m,Functor m) => Int -> m ()+tail :: (ChScanner m,ChPrinter m,MonadIO m,Functor m) => Int -> m () tail n = mscanL >>= (mprint . unlines . reverse . take n . reverse . lines)
System/Chatty/Misc.hs view
@@ -27,24 +27,24 @@ import System.Random -- | Typeclass for all monads that know the time-class (Functor m,Monad m) => MonadClock m where+class (Functor m,Monad m) => ChClock m where -- | Get UTC Time mutctime :: m UTCTime -- | Get timestamp, guaranteed to grow mgetstamp :: m NominalDiffTime mgetstamp = fmap (flip diffUTCTime (UTCTime (fromGregorian 1970 1 1) (secondsToDiffTime 0))) mutctime -instance MonadClock IO where+instance ChClock IO where mutctime = getCurrentTime -- | Typeclass for all monads that may provide random numbers-class Monad m => MonadRandom m where+class Monad m => ChRandom m where -- | Get a single random number mrandom :: Random r => m r -- | Get a single random number in the given range mrandomR :: Random r => (r,r) -> m r -instance MonadRandom IO where+instance ChRandom IO where mrandom = randomIO mrandomR rs = randomRIO rs
System/Chatty/Spawn.hs view
@@ -31,13 +31,13 @@ import qualified System.Process as P -- | Class for all (real or pseudo) process-spawning monads.-class Monad m => MonadSpawn m where+class Monad m => ChSpawn m where -- | Spawn process mspw :: String -> [String] -> Either Handle String -> m (Int,String,[Handle]) -- | Accept handle as input? mah :: String -> m Bool -instance MonadSpawn IO where+instance ChSpawn IO where mspw pn as (Left h) = do (_, Just hout, _, ph) <- P.createProcess (P.proc pn as){ P.std_in = P.UseHandle h,@@ -57,7 +57,7 @@ mah = return $ return True -- | Spawn process-spawn :: (MonadFinalizer m,MonadScanner m,MonadPrinter m, MonadSpawn m,Functor m) => String -> [String] -> m Int+spawn :: (ChFinalizer m,ChScanner m,ChPrinter m, ChSpawn m,Functor m) => String -> [String] -> m Int spawn fn as = do ah <- mah fn mscanh >>= \h' -> case if ah then h' else Nothing of
System/Chatty/Spawn/Builtins.hs view
@@ -26,10 +26,10 @@ import System.Chatty.Spawn.Overlay -- | Use builtins if possible.-withBuiltins :: (Functor m, MonadSpawn m) => SpawnOverlayT m a -> m a+withBuiltins :: (Functor m, ChSpawn m) => SpawnOverlayT m a -> m a withBuiltins m = fmap fst $ runSpawnOverlayT m builtins -builtins :: MonadSpawn m => [(String,[String] -> String -> m (Int,String))]+builtins :: ChSpawn m => [(String,[String] -> String -> m (Int,String))] builtins = ("cat", \_ si -> return (0,si)): []
System/Chatty/Spawn/Overlay.hs view
@@ -43,7 +43,7 @@ instance Monad m => Functor (SpawnOverlayT m) where fmap f a = SpawnOverlay $ \s -> do (a',s') <- runSpawnOverlayT a s; return (f a',s') -instance MonadSpawn m => MonadSpawn (SpawnOverlayT m) where+instance ChSpawn m => ChSpawn (SpawnOverlayT m) where mspw pn as (Right si) = SpawnOverlay $ \s -> case pn `elem` (map fst s) of True -> let c = snd $ head $ filter ((==pn).fst) s
Text/Chatty/Channel/Broadcast.hs view
@@ -31,12 +31,12 @@ import Text.Chatty.Channel.Printer -- | Typeclass for all channel printers that may broadcast to all channels that fulfill a condition.-class ChannelPrinter c m => Broadcaster c m where+class ChChannelPrinter c m => ChBroadcaster c m where -- | Print the string to all channels that fulfill the current condition. bprint :: (c -> m Bool) -> String -> m () -- | Typeclass for all broadcaster that may embrace sections-class Broadcaster c m => BroadcasterBracket c m where+class ChBroadcaster c m => ChBroadcasterBracket c m where -- | Run the function and print to all channels that fulfill the given condition. bbracket :: (c -> m Bool) -> m a -> m a bbracket f m = bstart f >> m >>= \a -> bfin f >> return a
Text/Chatty/Channel/Printer.hs view
@@ -22,7 +22,7 @@ -- | Provides a printer class that offers several channels. module Text.Chatty.Channel.Printer (- ChannelPrinter (..),+ ChChannelPrinter (..), ArchiverT (..), IntArchiverT, BoolArchiverT,@@ -43,7 +43,7 @@ import System.IO -- | Typeclass for all printers that offer several channels.-class (MonadPrinter m,Eq c) => ChannelPrinter c m where+class (ChPrinter m,Eq c) => ChChannelPrinter c m where -- | Run the function with the given channel. cbracket :: c -> m a -> m a cbracket c m = cstart c >> m >>= \a -> cfin c >> return a@@ -79,10 +79,10 @@ | p == k = (p,f a) : ps | otherwise = (p,a) : withAssoc k n f ps -instance (Eq c,Monad m) => MonadPrinter (ArchiverT c m) where+instance (Eq c,Monad m) => ChPrinter (ArchiverT c m) where mprint s = Archiver $ \(r,c:cx) -> return ((),(withAssoc c [] (s:) r,c:cx)) -instance (Eq c,Monad m) => ChannelPrinter c (ArchiverT c m) where+instance (Eq c,Monad m) => ChChannelPrinter c (ArchiverT c m) where cbracket c m = Archiver $ \(r,c1) -> do (a,(r',_)) <- runArchiverT' m (r,c:c1) return (a,(r',c1))@@ -114,11 +114,11 @@ instance Monad m => Functor (FilterT c m) where fmap f a = liftM f a -instance (Eq c,MonadPrinter m) => MonadPrinter (FilterT c m) where+instance (Eq c,ChPrinter m) => ChPrinter (FilterT c m) where mprint str = Filter $ \(c,c1:cx) -> if c == c1 then mprint str >> return ((),c1:cx) else return ((),c1:cx) mnomask str = Filter $ \(c,c1:cx) -> if c == c1 then mnomask str >> return ((),c1:cx) else return ((),c1:cx) -instance (Eq c,MonadPrinter m) => ChannelPrinter c (FilterT c m) where+instance (Eq c,ChPrinter m) => ChChannelPrinter c (FilterT c m) where cbracket c m = Filter $ \(cf,cx) -> do (a,_) <- runFilterT m (cf,c:cx) return (a,cx)@@ -147,11 +147,11 @@ instance Functor m => Functor (JoinerT m) where fmap f (Joiner j) = Joiner $ fmap f j -instance MonadPrinter m => MonadPrinter (JoinerT m) where+instance ChPrinter m => ChPrinter (JoinerT m) where mprint = lift . mprint mnomask = lift . mnomask -instance (Eq c,MonadPrinter m) => ChannelPrinter c (JoinerT m) where+instance (Eq c,ChPrinter m) => ChChannelPrinter c (JoinerT m) where cstart _ = return () cfin _ = return () cbracket _ m = m
Text/Chatty/Expansion.hs view
@@ -27,7 +27,7 @@ import Control.Monad.Trans.Class -- | Typeclass for all string-expanding monads.-class Monad e => MonadExpand e where+class Monad e => ChExpand e where -- | Expand the given string. expand :: String -> e String @@ -46,7 +46,7 @@ instance MonadIO m => MonadIO (NullExpanderT m) where liftIO = lift . liftIO -instance Monad m => MonadExpand (NullExpanderT m) where+instance Monad m => ChExpand (NullExpanderT m) where expand = return withExpansion :: Monad m => NullExpanderT m a -> m a
Text/Chatty/Expansion/History.hs view
@@ -46,19 +46,19 @@ instance Monad m => Functor (HistoryT m) where fmap f a = History $ \s -> do (a',s') <- runHistoryT a s; return (f a',s') -class Monad he => HistoryEnv he where+class Monad he => ChHistoryEnv he where mcounth :: he Int mgeth :: Int -> he String mputh :: String -> he () -instance Monad m => HistoryEnv (HistoryT m) where+instance Monad m => ChHistoryEnv (HistoryT m) where mcounth = History $ runKleisli (arr length &&& id) mgeth i | i <= 0 = let j = -i in History $ runKleisli (arr (!!j) &&& id) | otherwise = History . runKleisli $ arr ((!!i).reverse &&& id) mputh s = History . runKleisli $ arr (const () &&& (s:)) -expandHist :: HistoryEnv h => String -> h String+expandHist :: ChHistoryEnv h => String -> h String expandHist [] = return [] expandHist ('!':ss) = let (nm,rm) = (takeWhile isNum &&& dropWhile isNum) ss@@ -73,7 +73,7 @@ return (h++hs) expandHist (s:ss) = do ss' <- expandHist ss; return (s:ss') -instance MonadExpand m => MonadExpand (HistoryT m) where+instance ChExpand m => ChExpand (HistoryT m) where expand = lift . expand <=< expandHist withHistory :: Monad m => HistoryT m a -> m a
Text/Chatty/Expansion/Vars.hs view
@@ -78,14 +78,14 @@ liftIO $ forM_ vs $ \(k,v) -> setEnv k (show v) True return ((),vs) -instance MonadExpand IO where+instance ChExpand IO where expand = expandVars -instance MonadExpand m => MonadExpand (ExpanderT m) where+instance ChExpand m => ChExpand (ExpanderT m) where expand = lift . expand <=< expandVars -- | Expand $variables-expandVars :: (Monad m,Functor m,ExpanderEnv m) => String -> m String+expandVars :: (Monad m,Functor m,ChExpanderEnv m) => String -> m String expandVars [] = return [] expandVars ('\\':'$':ss) = do r <- expandVars ss; return ('$':r) expandVars ('$':'{':ss) =@@ -111,19 +111,19 @@ isAnum = (`elem` (['a'..'z']++['A'..'Z']++"_"++['0'..'9'])) -- | Typeclass for all environment storages.-class Monad ee => ExpanderEnv ee where+class Monad ee => ChExpanderEnv ee where -- | Get environment variable mgetv :: String -> ee EnvVar -- | Put environment variable mputv :: String -> EnvVar -> ee () -instance Monad m => ExpanderEnv (ExpanderT m) where+instance Monad m => ChExpanderEnv (ExpanderT m) where mgetv s = Expander $ \vs -> return $ case filter ((==s).fst) vs of [] -> (NotSet,vs) ((_,v):_) -> (v,vs) mputv k v = Expander $ \vs -> return ((),(k,v):filter ((/=k).fst) vs) -instance ExpanderEnv IO where+instance ChExpanderEnv IO where mgetv = fmap (\v -> case v of Nothing -> NotSet; Just v' -> Literal v') . getEnv mputv k v = setEnv k (show v) True
Text/Chatty/Extended/ANSI.hs view
@@ -19,7 +19,7 @@ along with Chatty. If not, see <http://www.gnu.org/licenses/>. -} --- | Provides an ExtendedPrinter that handles colours using standardized ANSI codes.+-- | Provides a 'ChExtendedPrinter' that handles colours using standardized ANSI codes. module Text.Chatty.Extended.ANSI where import qualified System.Console.ANSI as A@@ -30,7 +30,7 @@ import Text.Chatty.Extended.Printer import Text.Chatty.Expansion --- | An ExtendedPrinter that uses ANSI colour codes.+-- | A 'ChExtendedPrinter' that uses ANSI colour codes. newtype AnsiPrinterT m a = AnsiPrinter { runAnsiPrinterT :: [Colour] -> m (a,[Colour]) } instance Monad m => Monad (AnsiPrinterT m) where@@ -46,13 +46,13 @@ instance MonadIO m => MonadIO (AnsiPrinterT m) where liftIO = lift . liftIO -instance MonadPrinter m => MonadPrinter (AnsiPrinterT m) where+instance ChPrinter m => ChPrinter (AnsiPrinterT m) where mprint = lift . mprint mnoecho = lift . mnoecho mflush = lift mflush mnomask = lift . mnomask -instance MonadPrinter m => ExtendedPrinter (AnsiPrinterT m) where+instance ChPrinter m => ChExtendedPrinter (AnsiPrinterT m) where estart c = AnsiPrinter $ \c1 -> do mprint $ A.setSGRCode [A.SetColor A.Foreground (mkColourInt c) (mkColourCode c)] return ((),c:c1)@@ -65,7 +65,7 @@ mprint $ A.setSGRCode [A.Reset] return ((),[]) -instance (Functor m,MonadExpand m) => MonadExpand (AnsiPrinterT m) where+instance (Functor m,ChExpand m) => ChExpand (AnsiPrinterT m) where expand s = AnsiPrinter $ \cx -> do s1 <- (expand =<<) $ liftM (replay.snd) $ runRecorderT $ liftM fst $ flip runAnsiPrinterT cx $ expandClr s return (s1, cx)
Text/Chatty/Extended/HTML.hs view
@@ -19,7 +19,7 @@ along with Chatty. If not, see <http://www.gnu.org/licenses/>. -} --- | Provides an 'ExtendedPrinter' that handles colours using HTML output.+-- | Provides an 'ChExtendedPrinter' that handles colours using HTML output. module Text.Chatty.Extended.HTML where import Text.Chatty.Printer@@ -29,7 +29,7 @@ import Control.Monad.Trans.Class import Control.Monad.IO.Class --- | An 'ExtendedPrinter' for HTML output.+-- | An 'ChExtendedPrinter' for HTML output. newtype HtmlPrinterT m a = HtmlPrinter { runHtmlPrinterT :: m a } instance Monad m => Monad (HtmlPrinterT m) where@@ -45,17 +45,17 @@ instance MonadIO m => MonadIO (HtmlPrinterT m) where liftIO = lift . liftIO -instance MonadPrinter m => MonadPrinter (HtmlPrinterT m) where+instance ChPrinter m => ChPrinter (HtmlPrinterT m) where mprint = lift . mprint . concatMap maskHtml mnoecho = lift . mnoecho . concatMap maskHtml mflush = lift mflush mnomask = lift . mnomask -instance MonadPrinter m => ExtendedPrinter (HtmlPrinterT m) where+instance ChPrinter m => ChExtendedPrinter (HtmlPrinterT m) where estart c = lift $ mprint $ concat ["<span style=\"color: #", hexColour c, ";\">"] efin = lift $ mprint "</span>" -instance (Functor m,MonadExpand m) => MonadExpand (HtmlPrinterT m) where+instance (Functor m,ChExpand m) => ChExpand (HtmlPrinterT m) where expand = lift . expand <=< liftM (replay.snd) . runRecorderT . runHtmlPrinterT . expandClr -- | Convert the given character to its HTML representation.
Text/Chatty/Extended/Printer.hs view
@@ -20,7 +20,7 @@ -} -- | Provides an extended printer class that supports colours.-module Text.Chatty.Extended.Printer (ExtendedPrinter(..),Tone(..),Colour(..),expandClr) where+module Text.Chatty.Extended.Printer (ChExtendedPrinter(..),Tone(..),Colour(..),expandClr) where import Text.Chatty.Printer @@ -30,7 +30,7 @@ data Colour = Dull Tone | Vivid Tone -- | Typeclass for all printers that support colourized output.-class MonadPrinter m => ExtendedPrinter m where+class ChPrinter m => ChExtendedPrinter m where -- | Run the function with the given colour. ebracket :: Colour -> m a -> m a ebracket c m = do estart c; a <- m; efin; return a@@ -62,7 +62,7 @@ procClr c ss = let (nm,rm) = splitBrace ss in ebracket c (expandClr nm) >> expandClr rm -expandClr :: ExtendedPrinter m => String -> m ()+expandClr :: ChExtendedPrinter m => String -> m () expandClr ('%':'{':'V':'0':';':ss) = procClr (Vivid Black) ss expandClr ('%':'{':'V':'1':';':ss) = procClr (Vivid Red) ss expandClr ('%':'{':'V':'2':';':ss) = procClr (Vivid Green) ss
Text/Chatty/Finalizer.hs view
@@ -28,7 +28,7 @@ import System.IO -- | Class for all handle-finalizing monads. Required for file redirections.-class Monad m => MonadFinalizer m where+class Monad m => ChFinalizer m where -- | Enqueue handle mqfh :: Handle -> m () -- | Enqueue list of handles@@ -53,7 +53,7 @@ instance MonadIO m => MonadIO (HandleCloserT m) where liftIO = lift . liftIO -instance MonadIO m => MonadFinalizer (HandleCloserT m) where+instance MonadIO m => ChFinalizer (HandleCloserT m) where mqfh h = HandleCloser $ \hs -> return ((),h:hs) mfin = HandleCloser $ \hs -> do sequence_ $ fmap (liftIO.hClose) hs@@ -62,4 +62,3 @@ -- | Run function with handle closer withLazyIO :: (MonadIO m,Functor m) => HandleCloserT m a -> m a withLazyIO m = fmap fst $ runHandleCloserT (do a <- m; mfin; return a) []-
Text/Chatty/Interactor/Templates.hs view
@@ -42,10 +42,10 @@ import System.Chatty.Misc import System.IO --- | Automatically derives a MonadScanner instance for you.+-- | Automatically derives a ChScanner instance for you. mkScanner :: Name -> Q [Dec] mkScanner s = [d|- instance MonadScanner m => MonadScanner ($sx m) where+ instance ChScanner m => ChScanner ($sx m) where mscan1 = lift mscan1 mscanL = lift mscanL mscannable = lift mscannable@@ -54,19 +54,19 @@ |] where sx = strToType s --- | Automatically derives a BufferedScanner instance for you.+-- | Automatically derives a ChBufferedScanner instance for you. mkBufferedScanner :: Name -> Q [Dec] mkBufferedScanner s = [d|- instance BufferedScanner m => BufferedScanner ($sx m) where+ instance ChBufferedScanner m => ChBufferedScanner ($sx m) where mpeek1 = lift mpeek1 mprepend = lift . mprepend |] where sx = strToType s --- | Automatically derives a MonadPrinter instance for you.+-- | Automatically derives a ChPrinter instance for you. mkPrinter :: Name -> Q [Dec] mkPrinter s = [d|- instance MonadPrinter m => MonadPrinter ($sx m) where+ instance ChPrinter m => ChPrinter ($sx m) where mprint = lift . mprint mnoecho = lift . mnoecho mflush = lift mflush@@ -74,10 +74,10 @@ |] where sx = strToType s --- | Automatically derives an ExtendedPrinter instance for you.+-- | Automatically derives an ChExtendedPrinter instance for you. mkExtendedPrinter :: Name -> Q [Dec] mkExtendedPrinter s = [d|- instance ExtendedPrinter m => ExtendedPrinter ($sx m) where+ instance ChExtendedPrinter m => ChExtendedPrinter ($sx m) where estart = lift . estart efin = lift efin eprint c = lift . eprint c@@ -85,10 +85,10 @@ |] where sx = strToType s --- | Automatically derives a ChannelPrinter instance for you.+-- | Automatically derives a ChChannelPrinter instance for you. mkChannelPrinter :: Name -> Name -> Q [Dec] mkChannelPrinter c s = [d|- instance ChannelPrinter $cx m => ChannelPrinter $cx ($sx m) where+ instance ChChannelPrinter $cx m => ChChannelPrinter $cx ($sx m) where cstart = lift . cstart cfin = lift . cfin cprint c = lift . cprint c@@ -109,7 +109,7 @@ where sx = strToType s cx = strToType c-} --- | Automatically derives ChannelPrinter instances for 'Int', 'Bool' and 'Handle' channels.+-- | Automatically derives ChChannelPrinter instances for 'Int', 'Bool' and 'Handle' channels. mkDefCP :: Name -> Q [Dec] mkDefCP s = mkInteractor s (mkChannelPrinter ''Int) (mkChannelPrinter ''Bool) (mkChannelPrinter ''Handle) @@ -117,64 +117,64 @@ mkDefBC :: Name -> Q [Dec] mkDefBC s = mkInteractor s (mkBroadcaster ''Int) (mkBroadcaster ''Bool) (mkBroadcaster ''Handle)-} --- | Automatically derives a MonadFinalizer instance for you.+-- | Automatically derives a ChFinalizer instance for you. mkFinalizer :: Name -> Q [Dec] mkFinalizer s = [d|- instance MonadFinalizer m => MonadFinalizer ($sx m) where+ instance ChFinalizer m => ChFinalizer ($sx m) where mqfh = lift . mqfh mfin = lift mfin |] where sx = strToType s --- | Automatically derives a MonadExpand instance for you.+-- | Automatically derives a ChExpand instance for you. mkExpander :: Name -> Q [Dec] mkExpander s = [d|- instance MonadExpand m => MonadExpand ($sx m) where+ instance ChExpand m => ChExpand ($sx m) where expand = lift . expand |] where sx = strToType s --- | Automatically derives an ExpanderEnv instance for you+-- | Automatically derives an ChExpanderEnv instance for you mkExpanderEnv :: Name -> Q [Dec] mkExpanderEnv s = [d|- instance ExpanderEnv m => ExpanderEnv ($sx m) where+ instance ChExpanderEnv m => ChExpanderEnv ($sx m) where mgetv = lift . mgetv mputv k v = lift $ mputv k v |] where sx = strToType s --- | Automatically derives a HistoryEnv instance for you+-- | Automatically derives a ChHistoryEnv instance for you mkHistoryEnv :: Name -> Q [Dec] mkHistoryEnv s = [d|- instance HistoryEnv m => HistoryEnv ($sx m) where+ instance ChHistoryEnv m => ChHistoryEnv ($sx m) where mcounth = lift mcounth mgeth = lift . mgeth mputh = lift . mputh |] where sx = strToType s --- | Automatically derives a MonadSpawn instance for you.+-- | Automatically derives a ChSpawn instance for you. mkSpawn :: Name -> Q [Dec] mkSpawn s = [d|- instance MonadSpawn m => MonadSpawn ($sx m) where+ instance ChSpawn m => ChSpawn ($sx m) where mspw pn as si = lift $ mspw pn as si mah = lift . mah |] where sx = strToType s --- | Automatically derives a MonadRandom instance for you.+-- | Automatically derives a ChRandom instance for you. mkRandom :: Name -> Q [Dec] mkRandom s = [d|- instance MonadRandom m => MonadRandom ($sx m) where+ instance ChRandom m => ChRandom ($sx m) where mrandom = lift mrandom mrandomR = lift . mrandomR |] where sx = strToType s --- | Automatically derives a MonadClock instance for you.+-- | Automatically derives a ChClock instance for you. mkClock :: Name -> Q [Dec] mkClock s = [d|- instance MonadClock m => MonadClock ($sx m) where+ instance ChClock m => ChClock ($sx m) where mutctime = lift mutctime mgetstamp = lift mgetstamp |]
− Text/Chatty/Parser.hs
@@ -1,92 +0,0 @@-{-- This module is part of Chatty.- Copyleft (c) 2014 Marvin Cohrs-- All wrongs reversed. Sharing is an act of love, not crime.- Please share Antisplice with everyone you like.-- Chatty is free software: you can redistribute it and/or modify- it under the terms of the GNU Affero General Public License as published by- the Free Software Foundation, either version 3 of the License, or- (at your option) any later version.-- Chatty 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 Affero General Public License for more details.-- You should have received a copy of the GNU Affero General Public License- along with Chatty. If not, see <http://www.gnu.org/licenses/>.--}--module Text.Chatty.Parser where--import Control.Monad-import Data.Char-import Text.Chatty.Scanner--class MonadScanner m => MonadParser m where- pabort :: m a- (??) :: Eq a => m a -> m a -> m a- (???) :: m a -> m a -> m a- ptry :: MonadPlus n => m a -> m (n a)--request :: MonadScanner m => m Char-request = mscan1--match :: MonadParser m => Char -> m Char-match c = do- k <- request- if k == c then return c else pabort--matchs :: MonadParser m => String -> m String-matchs [] = return []-matchs (c:cs) = do- match c- matchs cs- return (c:cs)--white :: MonadParser m => m Char-white = do- k <- request- if isSpace k then return k else pabort--digit :: MonadParser m => m Int-digit = do- k <- request- if isDigit k then return (read [k]) else pabort--alpha :: MonadParser m => m Char-alpha = do- k <- request- if isAlpha k then return k else pabort--anum :: MonadParser m => m Char-anum = do- k <- request- if isAlphaNum k then return k else pabort--possibly :: MonadParser m => m a -> m (Maybe a)-possibly f = liftM Just f ??? return Nothing--many :: MonadParser m => m a -> m [a]-many f = do- x <- possibly f- case x of- Nothing -> return []- Just x -> do- xs <- many f- return (x : xs)--some :: MonadParser m => m a -> m [a]-some f = do- x <- f- xs <- many f- return (x : xs)--number :: MonadParser m => m Int-number = do- many white- ds <- some digit- many white- return $ foldl (\k n -> k * 10 + n) 0 ds
− Text/Chatty/Parser/Nondeterministic.hs
@@ -1,81 +0,0 @@-{-- This module is part of Chatty.- Copyleft (c) 2014 Marvin Cohrs-- All wrongs reversed. Sharing is an act of love, not crime.- Please share Antisplice with everyone you like.-- Chatty is free software: you can redistribute it and/or modify- it under the terms of the GNU Affero General Public License as published by- the Free Software Foundation, either version 3 of the License, or- (at your option) any later version.-- Chatty 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 Affero General Public License for more details.-- You should have received a copy of the GNU Affero General Public License- along with Chatty. If not, see <http://www.gnu.org/licenses/>.--}--module Text.Chatty.Parser.Nondeterministic where--import Control.Monad-import Data.List-import qualified Data.Foldable as F-import Text.Chatty.Parser-import Text.Chatty.Scanner--data ForkerT m a = Result (m a) (Char -> ForkerT m a) | Failed--instance (MonadPlus m,F.Foldable m) => Monad (ForkerT m) where- return a = Result (return a) $ const Failed- (Result as f) >>= m = Result (results >>= rResult) (\k -> F.foldl (???) (f k >>= m) (liftM (flip rFunction k) results))- where isResult (Result _ _) = True- isResult _ = False- rResult (Result x _) = x- rFunction (Result _ f) = f- results = mfilter isResult $ liftM m as- Failed >>= m = Failed- fail _ = Failed--instance (MonadPlus m,F.Foldable m) => MonadParser (ForkerT m) where- pabort = Failed- Failed ?? b = b- a ?? Failed = a- (Result as f) ?? (Result bs g) = Result (msum $ liftM return $ nub $ F.foldr (:) [] $ mplus as bs) $ \k -> f k ?? g k- Failed ??? b = b- a ??? Failed = a- (Result as f) ??? (Result bs g) = Result (mplus as bs) $ \k -> f k ??? g k- ptry Failed = Failed- ptry (Result as f) = Result (msum $ liftM return [msum $ liftM return $ F.foldr (:) [] as]) $ \k -> ptry $ f k--instance (MonadPlus m,F.Foldable m) => MonadScanner (ForkerT m) where- mscan1 = Result mzero return- mscanL = do- c <- mscan1- cs <- mscanL- return (c:cs)- mscannable = return True- mready = return False--feedForkerT1 :: (MonadPlus m,F.Foldable m) => Char -> ForkerT m a -> ForkerT m a-feedForkerT1 _ Failed = Failed-feedForkerT1 c (Result _ f) = f c--feedForkerT :: (MonadPlus m,F.Foldable m) => String -> ForkerT m a -> ForkerT m a-feedForkerT [] = id-feedForkerT (c:cs) = feedForkerT cs . feedForkerT1 c--embedForkerT :: (MonadPlus n,F.Foldable n,MonadScanner m) => ForkerT n a -> m (n a)-embedForkerT f = do- b <- mscannable- if not b then- case f of- Failed -> return mzero- Result xs _ -> return xs- else do- k <- mscan1- embedForkerT $ feedForkerT1 k f-
Text/Chatty/Printer.hs view
@@ -31,7 +31,7 @@ import System.IO -- | A typeclass for all monads that may output strings.-class Monad m => MonadPrinter m where+class Monad m => ChPrinter m where -- | Just print it! mprint :: String -> m () -- | Print it, except you are IO.@@ -44,12 +44,12 @@ mnomask :: String -> m () mnomask = mprint -instance MonadPrinter IO where+instance ChPrinter IO where mprint = putStr mnoecho _ = return () mflush = hFlush stdout -instance Monad m => MonadPrinter (StateT String m) where+instance Monad m => ChPrinter (StateT String m) where mprint s = modify (++s) -- | DeafT discards all output (much like >\/dev\/null in the shell)@@ -68,7 +68,7 @@ instance MonadIO m => MonadIO (DeafT m) where liftIO = lift . liftIO -instance Monad m => MonadPrinter (DeafT m) where+instance Monad m => ChPrinter (DeafT m) where mprint _ = return () -- Definition of OutRedirT + instances@@ -87,7 +87,7 @@ instance MonadIO m => MonadIO (OutRedirT m) where liftIO = lift . liftIO -instance MonadIO m => MonadPrinter (OutRedirT m) where+instance MonadIO m => ChPrinter (OutRedirT m) where mprint s = OutRedir $ \h -> do liftIO $ hPutStr h s; return ((),h) mflush = OutRedir $ \h -> do liftIO $ hFlush h; return ((),h) @@ -129,7 +129,7 @@ instance MonadTrans RecorderT where lift m = Recorder $ \s -> do a <- m; return (a,s) -instance Monad m => MonadPrinter (RecorderT m) where+instance Monad m => ChPrinter (RecorderT m) where mprint s = Recorder $ \s' -> return ((),s:s') instance Monad m => Functor (RecorderT m) where@@ -164,11 +164,11 @@ runRecorderT = fmap (second Replayable) . flip runRecorderT' [] -- | Line-terminating alternative to 'mprint'-mprintLn :: MonadPrinter m => String -> m ()+mprintLn :: ChPrinter m => String -> m () mprintLn = mprint . (++"\n") -- | Line-terminating alternative to 'mnomask'-mnomaskLn :: MonadPrinter m => String -> m ()+mnomaskLn :: ChPrinter m => String -> m () mnomaskLn = mnomask . (++"\n") -- Shell-like syntax@@ -179,9 +179,9 @@ -- | Class for all redirection targets. class RedirectionTarget t mt a r | t -> mt, t a -> r where -- | Overwriting redirection.- (.>.) :: (Functor m,MonadIO m,MonadPrinter (mt m)) => mt m a -> t -> m r+ (.>.) :: (Functor m,MonadIO m,ChPrinter (mt m)) => mt m a -> t -> m r -- | Appending redirection.- (.>>.) :: (Functor m,MonadIO m,MonadPrinter (mt m)) => mt m a -> t -> m r+ (.>>.) :: (Functor m,MonadIO m,ChPrinter (mt m)) => mt m a -> t -> m r (.>>.) = (.>.) instance RedirectionTarget DiscardO DeafT a a where m .>. _ = runDeafT m@@ -190,3 +190,5 @@ instance RedirectionTarget FilePath OutRedirT a a where m .>. fp = runOutRedirFT m fp WriteMode m .>>. fp = runOutRedirFT m fp AppendMode+instance RedirectionTarget Handle OutRedirT a a where+ m .>. fp = runOutRedirT m fp
Text/Chatty/Scanner.hs view
@@ -32,7 +32,7 @@ import System.IO -- | A typeclass for all monads that may read input.-class Monad m => MonadScanner m where+class Monad m => ChScanner m where -- | Read one single character mscan1 :: m Char -- | Lazily read all the input.@@ -45,16 +45,16 @@ -- | Input available yet? mready :: m Bool --- MonadScanner instance for: IO-instance MonadScanner IO where+-- ChScanner instance for: IO+instance ChScanner IO where mscan1 = getChar mscanL = getContents mscannable = fmap not isEOF mscanh = return $ Just stdin mready = hReady stdin --- MonadScanner instance for: StateT String-instance Monad m => MonadScanner (StateT String m) where+-- ChScanner instance for: StateT String+instance Monad m => ChScanner (StateT String m) where mscan1 = do c <- gets head modify tail@@ -81,7 +81,7 @@ instance Monad m => Functor (HereStringT m) where fmap f a = HereString $ \s -> do (a',s') <- runHereStringT a s; return (f a',s') -instance Monad m => MonadScanner (HereStringT m) where+instance Monad m => ChScanner (HereStringT m) where mscan1 = HereString $ \(s:ss) -> return (s,ss) mscanL = HereString $ \s -> return (s,[]) mscannable = HereString $ \s -> return (not $ null s,s)@@ -90,7 +90,7 @@ instance MonadIO m => MonadIO (HereStringT m) where liftIO = lift . liftIO -instance MonadFinalizer m => MonadFinalizer (HereStringT m) where+instance ChFinalizer m => ChFinalizer (HereStringT m) where mqfh = lift . mqfh mfin = lift mfin @@ -105,7 +105,7 @@ instance MonadTrans QuietT where lift = Quiet -instance Monad m => MonadScanner (QuietT m) where+instance Monad m => ChScanner (QuietT m) where mscan1 = return undefined mscanL = return [] mscannable = return False@@ -130,7 +130,7 @@ instance MonadIO m => MonadIO (InRedirT m) where liftIO = lift . liftIO -instance MonadIO m => MonadScanner (InRedirT m) where+instance MonadIO m => ChScanner (InRedirT m) where mscan1 = InRedir $ \h -> do c <- liftIO $ hGetChar h; return (c,h) mscanL = InRedir $ \h -> do s <- liftIO $ hGetContents h; return (s,h) mscannable = InRedir $ \h -> do b <- liftIO $ hIsEOF h; return (b,h)@@ -140,7 +140,7 @@ instance Monad m => Functor (InRedirT m) where fmap f a = InRedir $ \h -> do (a',h') <- runInRedirT' a h; return (f a',h') -instance MonadFinalizer m => MonadFinalizer (InRedirT m) where+instance ChFinalizer m => ChFinalizer (InRedirT m) where mqfh = lift . mqfh mfin = lift mfin @@ -153,7 +153,7 @@ runInRedir m h = withLazyIO $ runInRedirT m h -- | Run InRedirT with a filename-runInRedirFT :: (Functor m,MonadIO m,MonadFinalizer m) => InRedirT m a -> FilePath -> m a+runInRedirFT :: (Functor m,MonadIO m,ChFinalizer m) => InRedirT m a -> FilePath -> m a runInRedirFT m fp = do h <- liftIO $ openFile fp ReadMode a <- runInRedirT m h@@ -166,7 +166,7 @@ runInRedirF m fp = withLazyIO $ runInRedirFT m fp -- | Line-scanning alternative to mscan1/L-mscanLn :: MonadScanner m => m String+mscanLn :: ChScanner m => m String mscanLn = do h <- mscan1 if h == '\n' then return ""@@ -175,7 +175,7 @@ return (h:hs) -- | Scan a fixed number of chars-mscanN :: MonadScanner m => Int -> m String+mscanN :: ChScanner m => Int -> m String mscanN n | n > 0 = do b <- mscannable@@ -192,14 +192,16 @@ -- | Class for all primitive redirection sources. class RedirectionSource t mt a r | t -> mt, t a -> r where -- | Redirection- (.<.) :: (MonadFinalizer m,Functor m,MonadIO m,MonadScanner (mt m)) => mt m a -> t -> m a+ (.<.) :: (ChFinalizer m,Functor m,MonadIO m,ChScanner (mt m)) => mt m a -> t -> m r instance RedirectionSource EmptyI QuietT a a where m .<. _ = runQuietT m instance RedirectionSource FilePath InRedirT a a where m .<. fp = runInRedirFT m fp+instance RedirectionSource Handle InRedirT a a where+ m .<. fp = runInRedirT m fp -- | Class for all Here-Documents class RedirectionHeredoc t mt a r | t -> mt, t a -> r where -- | Redirection- (.<<.) :: (Functor m,MonadScanner (mt m)) => mt m a -> t -> m a+ (.<<.) :: (Functor m,ChScanner (mt m)) => mt m a -> t -> m r instance RedirectionHeredoc String HereStringT a a where m .<<. str = fmap fst $ runHereStringT m str
Text/Chatty/Scanner/Buffered.hs view
@@ -21,6 +21,7 @@ along with Chatty. If not, see <http://www.gnu.org/licenses/>. -} +-- | Provides a typeclass for buffered scanners as well as a buffering monad transformer. module Text.Chatty.Scanner.Buffered where import Control.Monad@@ -29,19 +30,30 @@ import Control.Monad.Trans.Class import Text.Chatty.Scanner -class MonadScanner m => BufferedScanner m where+-- | Typeclass for all buffered 'ChScanner's.+class ChScanner m => ChBufferedScanner m where+ -- | Scan the next character without removing it. mpeek1 :: m Char+ -- | Prepend the given character to the scannable input. mprepend :: String -> m () -instance Monad m => BufferedScanner (StateT String m) where+-- | Typeclass for all 'BufferedScanner's with support for pushing and popping.+class ChBufferedScanner m => ChStackBufferedScanner m where+ -- | Push the current input state to the stack.+ mpush :: m ()+ -- | Pop the previous input state from the stack.+ mpop :: m ()++instance Monad m => ChBufferedScanner (StateT String m) where mpeek1 = gets head mprepend s = modify (s++) -instance Monad m => BufferedScanner (HereStringT m) where+instance Monad m => ChBufferedScanner (HereStringT m) where mpeek1 = HereString $ \ss -> return (head ss, ss) mprepend s = HereString $ \ss -> return ((), s++ss) -newtype ScannerBufferT m a = ScannerBuffer { runScannerBufferT :: String -> m (a,String) }+-- | A buffering 'MonadScanner' transformer that lets you use 'mpeek1' and 'mprepend' everywhere.+newtype ScannerBufferT m a = ScannerBuffer { runScannerBufferT :: [String] -> m (a,[String]) } instance Monad m => Monad (ScannerBufferT m) where return a = ScannerBuffer $ \s -> return (a,s)@@ -53,17 +65,20 @@ instance Monad m => Functor (ScannerBufferT m) where fmap = liftM -instance MonadScanner m => MonadScanner (ScannerBufferT m) where- mscan1 = ScannerBuffer $ \ss -> (if null ss then do s <- mscan1; return (s,[]) else return (head ss,tail ss))- mscanL = ScannerBuffer $ \ss -> do l <- mscanL; return (ss++l, [])- mscannable = ScannerBuffer $ \ss -> (if null ss then do b <- mscannable; return (b,[]) else return (True,ss))+instance ChScanner m => ChScanner (ScannerBufferT m) where+ mscan1 = ScannerBuffer $ \(ss:sx) -> (if null ss then do s <- mscan1; return (s,[]:map (s:) sx) else return (head ss,tail ss:map (head ss:) sx))+ mscanL = ScannerBuffer $ \(ss:sx) -> do l <- mscanL; return (ss++l, []:map (++l) sx)+ mscannable = ScannerBuffer $ \(ss:sx) -> (if null ss then do b <- mscannable; return (b,[]:sx) else return (True,ss:sx)) mscanh = return Nothing- mready = ScannerBuffer $ \ss -> (if null ss then do b <- mready; return (b,[]) else return (True,ss))+ mready = ScannerBuffer $ \(ss:sx) -> (if null ss then do b <- mready; return (b,[]:sx) else return (True,ss:sx)) instance MonadIO m => MonadIO (ScannerBufferT m) where liftIO = lift . liftIO -instance MonadScanner m => BufferedScanner (ScannerBufferT m) where- mpeek1 = ScannerBuffer $ \ss -> (if null ss then do s <- mscan1; return (s,[s]) else return (head ss,ss))- mprepend s = ScannerBuffer $ \ss -> return ((),s++ss)+instance ChScanner m => ChBufferedScanner (ScannerBufferT m) where+ mpeek1 = ScannerBuffer $ \(ss:sx) -> (if null ss then do s <- mscan1; return (s,[s]:sx) else return (head ss,ss:sx))+ mprepend s = ScannerBuffer $ \(ss:sx) -> return ((),(s++ss):sx) +instance ChScanner m => ChStackBufferedScanner (ScannerBufferT m) where+ mpush = ScannerBuffer $ \(ss:sx) -> return ((),ss:[]:sx)+ mpop = ScannerBuffer $ \(_:sx) -> return ((),sx)
− Text/Chatty/Typograph.hs
@@ -1,60 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}--{-- This module is part of Chatty.- Copyleft (c) 2014 Marvin Cohrs-- All wrongs reversed. Sharing is an act of love, not crime.- Please share Antisplice with everyone you like.-- Chatty is free software: you can redistribute it and/or modify- it under the terms of the GNU Affero General Public License as published by- the Free Software Foundation, either version 3 of the License, or- (at your option) any later version.-- Chatty 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 Affero General Public License for more details.-- You should have received a copy of the GNU Affero General Public License- along with Chatty. If not, see <http://www.gnu.org/licenses/>.--}--module Text.Chatty.Typograph where--import Control.Monad-import Control.Monad.Trans.Class-import Data.Char-import Text.Chatty.Interactor-import Text.Chatty.Printer-import Text.Chatty.Scanner-import Text.Chatty.Scanner.Buffered--simpleTypesetter :: (Functor m,MonadScanner m,MonadPrinter m) => Int -> m ()-simpleTypesetter width = void $ runScannerBufferT (typeset width) ""- where scanw = mscannable >>= \b -> if not b then return [] else do- k <- mpeek1- if isSpace k then return [] else do- mscan1- ks <- scanw- return (k:ks)- skipw :: BufferedScanner m => m Int- skipw = mscannable >>= \b -> if not b then return 0 else do- k <- mpeek1- if not (isSpace k) then return 0 else do- mscan1- w <- skipw- return (w + if k == '\n' then 1 else 0)- tsetw i w- | length w < i = mprint (w ++ " ") >> typeset (i - 1 - length w)- | length w == i = mprintLn w >> typeset width- | length w > width && i == width = mprintLn (take i w) >> tsetw width (drop i w)- | otherwise = mprintLn "" >> tsetw width w- typeset i = mscannable >>= \b -> when b $ do- ls <- skipw- if ls > 0- then forM_ [1..ls] (const $ mprintLn "") >> typeset width- else do- w <- scanw- tsetw i w
chatty.cabal view
@@ -10,13 +10,14 @@ -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change-version: 0.5.5.1+version: 0.6 -- A short (one-line) description of the package.-synopsis: Some monad transformers and typeclasses to simplify I/O on a transformer stack.+synopsis: Some monad transformers and typeclasses for abstraction of global dependencies. -- A longer description of the package.-description: Some monad transformers and typeclasses for text in- and output on a function scope, including features like here-strings, file redirection, pipes and string expansion. Works best on a transformer stack.+description: Some monad transformers and typeclasses abstracting global dependencies, like Text in- and output (incl. here-strings, pipes, recorders and file-redirections on a per-function scope),+ process spawning, time and random number retrieval. Later also: Filesystem access, database access, authentication and privilege escalation (passing-through IO actions). -- The license under which the package is released. license: AGPL-3@@ -48,7 +49,7 @@ library -- Modules exported by the library.- exposed-modules: Text.Chatty.Expansion, System.Chatty.Commands, System.Chatty.Spawn, Text.Chatty.Printer, Text.Chatty.Finalizer, Text.Chatty.Templates, Text.Chatty.Scanner, Text.Chatty.Interactor, System.Chatty.Spawn.Overlay, System.Chatty.Spawn.Builtins, Text.Chatty.Interactor.Templates, System.Chatty.Misc, Text.Chatty.Extended.Printer, Text.Chatty.Extended.HTML, Text.Chatty.Extended.ANSI, Text.Chatty.Expansion.Vars, Text.Chatty.Expansion.History, Text.Chatty.Channel.Printer, Text.Chatty.Channel.Broadcast, Text.Chatty.Scanner.Buffered, Text.Chatty.Typograph, Text.Chatty.Parser.Nondeterministic, Text.Chatty.Parser+ exposed-modules: Text.Chatty.Expansion, System.Chatty.Commands, System.Chatty.Spawn, Text.Chatty.Printer, Text.Chatty.Finalizer, Text.Chatty.Templates, Text.Chatty.Scanner, Text.Chatty.Interactor, System.Chatty.Spawn.Overlay, System.Chatty.Spawn.Builtins, Text.Chatty.Interactor.Templates, System.Chatty.Misc, Text.Chatty.Extended.Printer, Text.Chatty.Extended.HTML, Text.Chatty.Extended.ANSI, Text.Chatty.Expansion.Vars, Text.Chatty.Expansion.History, Text.Chatty.Channel.Printer, Text.Chatty.Channel.Broadcast, Text.Chatty.Scanner.Buffered -- Modules included in this library but not exported. -- other-modules: