Popularity
7.7
Declining
Activity
0.0
Stable
29
7
3
Monthly Downloads: 37
Programming language: Haskell
License: BSD 3-clause "New" or "Revised" License
Latest version: v0.1.4
monad-skeleton alternatives and similar packages
Based on the "monad" category.
Alternatively, view monad-skeleton alternatives based on common mentions on social networks and blogs.
-
monad-validate
(NOTE: REPOSITORY MOVED TO NEW OWNER: https://github.com/lexi-lambda/monad-validate) A Haskell monad transformer library for data validation -
monad-control
Lift control operations, like exception catching, through monad transformers -
monad-time
Type class for monads which carry the notion of the current time. -
monad-unlift
Typeclasses for representing monad (transformer) morphisms -
monad-unlift-ref
Typeclasses for representing monad (transformer) morphisms -
monad-logger-prefix
Easily add a prefix to your MonadLogger output. -
monad-batcher
An applicative monad that batches commands for later more efficient execution -
monad-supply
Support for computations which consume values from a (possibly infinite) supply. -
monad-io-adapter
A Haskell package that adapts between MonadIO and MonadBase IO -
monad-task
Task monad transformer that turns event processing into co-routines programming. -
monad-levels
Level-based interpretation of monad transformers -
monad-resumption
Resumption and Reactive-Resumption Monads for the Haskell programming language. -
monad-loops-stm
STM-specific control operators (split out of monad-loops as of version 0.4) -
monad-introspect
A reader monad that gives the environment access to the entire transformer stack -
monad-interleave
Monads with an unsaveInterleaveIO-like operation -
monad-control-aligned
Lift control operations, like exception catching, through monad transformers -
monad-control-identity
Stronger classes than monad-control -
monad-open
Open-ended computation for when you need it (open recursion) -
monad-peel
Lift control operations like exception catching through monad transformers -
monad-finally
Guard monadic computations with cleanup actions
Access the most powerful time series database as a service
Ingest, store, & analyze all types of time series data in a fully-managed, purpose-built database. Keep data forever with low-cost storage and superior data compression.
Promo
www.influxdata.com
Do you think we are missing an alternative of monad-skeleton or a related project?
README
monad-skeleton
This package provides Skeleton
, an operational monad. The internal encoding
gives O(1) bind and monadic reflection.
Skeleton
promotes unit instructions to a monad. It is isomorphic to
MonadView (Skeleton t)
:
data MonadView t m x where
Return :: a -> MonadView t m a
(:>>=) :: !(t a) -> (a -> m b) -> MonadView t m b
boned :: MonadView t (Skeleton t) a -> Skeleton t a
debone :: Skeleton t a -> MonadView t (Skeleton t) a
GADTs are handy to define instructions:
data Interaction x where
Get :: Interaction String
Put :: String -> Interaction ()
echo :: Skeleton Interaction ()
echo = bone Get >>= bone . Put
Use debone
to interpret a computation.
interpret :: Skeleton Interaction a -> IO a
interpret m = case debone m of
Return a -> return a
Get :>>= k -> getLine >>= interpret . k
Put s :>>= k -> putStrLn s >>= interpret . k