pianola-0.1.1: Remotely controlling Java Swing applications

Safe HaskellNone

Pianola.Util

Synopsis

Documentation

replusify :: MonadPlus m => [a] -> m aSource

Convenience function to transform a list into any MonadPlus.

tomaybet :: Monad m => LogicT m a -> MaybeT m aSource

Transforms a zero-or-many result into a zero-or-one result.

class Treeish l whereSource

Class of types whose values have children of the same type as themselves.

Methods

children :: MonadPlus m => l -> m lSource

Direct descendants.

descendants :: MonadPlus m => l -> m lSource

All direct or indirect descendants, plus the original value.

class Functor l => Loggy l whereSource

Methods

logentry :: LogEntry -> l ()Source

logmsg :: Text -> l ()Source

logimg :: Image -> l ()Source

logmsgK :: Text -> a -> l aSource

Logs a message and returns the second argument unchanged.

Instances

(Monad l, Loggy l) => Loggy (MaybeT l) 
(Monad l, Loggy l) => Loggy (LogicT l) 
Monad m => Loggy (Produ LogEntry m) 
Monad m => Loggy (Pianola m LogEntry o) 

data LogEntry Source

Instances

data Nullipotent m a Source

Wraps a monad in order to tag those operations which don't actually change the state of the remote system. For example: taking a screenshot doesn't change the state of a GUI, as opposed to clicking a button.

Instances

Monad m => Monad (Nullipotent m) 
Functor m => Functor (Nullipotent m) 
Foldable m => Foldable (Nullipotent m) 
Traversable m => Traversable (Nullipotent m) 
Eq (m a) => Eq (Nullipotent m a) 
Ord (m a) => Ord (Nullipotent m a) 
Read (m a) => Read (Nullipotent m a) 
Show (m a) => Show (Nullipotent m a) 

data Sealed m Source

Encapsulates a monadic action so that clients can't manipulate it in any way, only dispatch it to some function.

There may be tags attached that describe the action. Clients should be able to inspect the tags.