pianola-0.1.0: Remotely controlling Java Swing applications

Safe HaskellNone




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.


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


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.


(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


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.


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.