apart alternatives and similar packages
Based on the "Control" category.
Alternatively, view apart alternatives based on common mentions on social networks and blogs.
-
transient
A full stack, reactive architecture for general purpose programming. Algebraic and monadically composable primitives for concurrency, parallelism, event handling, transactions, multithreading, Web, and distributed computing with complete de-inversion of control (No callbacks, no blocking, pure state) -
selective
Selective Applicative Functors: Declare Your Effects Statically, Select Which to Execute Dynamically -
ComonadSheet
A library for expressing "spreadsheet-like" computations with absolute and relative references, using fixed-points of n-dimensional comonads. -
auto
Haskell DSL and platform providing denotational, compositional api for discrete-step, locally stateful, interactive programs, games & automations. http://hackage.haskell.org/package/auto -
transient-universe
A Cloud monad based on transient for the creation of Web and reactive distributed applications that are fully composable, where Web browsers are first class nodes in the cloud -
monad-validate
DISCONTINUED. (NOTE: REPOSITORY MOVED TO NEW OWNER: https://github.com/lexi-lambda/monad-validate) A Haskell monad transformer library for data validation -
distributed-process-platform
DEPRECATED (Cloud Haskell Platform) in favor of distributed-process-extras, distributed-process-async, distributed-process-client-server, distributed-process-registry, distributed-process-supervisor, distributed-process-task and distributed-process-execution -
effect-monad
Provides 'graded monads' and 'parameterised monads' to Haskell, enabling fine-grained reasoning about effects. -
ixmonad
Provides 'graded monads' and 'parameterised monads' to Haskell, enabling fine-grained reasoning about effects.
CodeRabbit: AI Code Reviews for Developers

Do you think we are missing an alternative of apart or a related project?
README
Get all your structure and rip it apart 🔪
The main idea: if you can describe your data structure via Cofree, you got:
- Comonadic methods, you always can
extract
a focus value orextend
with some function - With
apart
you can serialize, persistent or hash a segment of your structure!
Example usage
Let's define a simple non-empty list type:
type Stack a = Cofree Maybe a
Then, build a value of this type, stack of integers, the whole structure in memory (ignore lazy evaluation aspects now):
inmemory :: Stack Int
inmemory = 1 :< Just (2 :< Just (3 :< Just (4 :< Just (5 :< Nothing))))
Set a limit for structure
Sometimes, we don’t need to hold a whole structure in memory, can it be good just cut a part of it and save to file?
save_to_file :: FilePath -> Segment Stack Int -> IO FilePath
save_to_file fp structure = writeFile fp (show structure) *> pure fp
scattered = IO (Scattered Stack Int FilePath)
scattered = limit 2 (save_to_file "part.txt") inmemory
And our structure transformed into:
scattered :: Scattered Stack Int FilePath
scattered = Apart $ 1 :< Ready (Just $ 2 :< Ready (Just $ 3 :< Converted "part.txt"))
Traverse over scattered structure
We also can fluently traverse over scattered structure with action and function for recover a segment:
fluently :: IO (Stack ())
fluently = fluent print read_from_file scattered
Recover scattered structure
Return back to memory our stack of integers:
read_from_file :: FilePath -> IO (Segment Stack Int)
read_from_file fp = read @(Segment Stack Int) <$> readFile fp
inmemory :: IO (Stack Int)
inmemory = recover read_from_file scattered