Hets - the Heterogeneous Tool Set

Copyright(c) 2005 Amr Sabry Chung-chieh Shan Oleg Kiselyov
and Daniel P. Friedman
LicenseGPLv2 or higher, see LICENSE.txt
MaintainerChristian.Maeder@dfki.de
Stabilityexperimental
Portabilitynon-portable (RankNTypes)
Safe HaskellSafe

Common.SFKT

Description

Implementation of LogicT based on the two-continuation model of streams

Documentation

data SFKT m a Source #

Instances

MonadTrans SFKT Source # 

Methods

lift :: Monad m => m a -> SFKT m a

LogicT SFKT Source # 

Methods

msplit :: (Monad m, MonadPlus (SFKT m)) => SFKT m a -> SFKT m (Maybe (a, SFKT m a)) Source #

interleave :: (Monad m, MonadPlus (SFKT m)) => SFKT m a -> SFKT m a -> SFKT m a Source #

gsuccess :: (Monad m, MonadPlus (SFKT m)) => a -> SFKT m a Source #

gfail :: (Monad m, MonadPlus (SFKT m)) => SFKT m a Source #

bindi :: (Monad m, MonadPlus (SFKT m)) => SFKT m a -> (a -> SFKT m b) -> SFKT m b Source #

ifte :: (Monad m, MonadPlus (SFKT m)) => SFKT m a -> (a -> SFKT m b) -> SFKT m b -> SFKT m b Source #

once :: (Monad m, MonadPlus (SFKT m)) => SFKT m a -> SFKT m a Source #

Monad m => Monad (SFKT m) Source # 

Methods

(>>=) :: SFKT m a -> (a -> SFKT m b) -> SFKT m b

(>>) :: SFKT m a -> SFKT m b -> SFKT m b

return :: a -> SFKT m a

fail :: String -> SFKT m a

Monad m => Functor (SFKT m) Source # 

Methods

fmap :: (a -> b) -> SFKT m a -> SFKT m b

(<$) :: a -> SFKT m b -> SFKT m a

Monad m => Applicative (SFKT m) Source # 

Methods

pure :: a -> SFKT m a

(<*>) :: SFKT m (a -> b) -> SFKT m a -> SFKT m b

(*>) :: SFKT m a -> SFKT m b -> SFKT m b

(<*) :: SFKT m a -> SFKT m b -> SFKT m a

Monad m => MonadPlus (SFKT m) Source # 

Methods

mzero :: SFKT m a

mplus :: SFKT m a -> SFKT m a -> SFKT m a

Monad m => Alternative (SFKT m) Source # 

Methods

empty :: SFKT m a

(<|>) :: SFKT m a -> SFKT m a -> SFKT m a

some :: SFKT m a -> SFKT m [a]

many :: SFKT m a -> SFKT m [a]

MonadIO m => MonadIO (SFKT m) Source # 

Methods

liftIO :: IO a -> SFKT m a

runM :: Monad m => Maybe Int -> SFKT m a -> m [a] Source #

observe :: Monad m => SFKT m a -> m a Source #