-
Notifications
You must be signed in to change notification settings - Fork 65
Things To Do
Harendra Kumar edited this page Oct 11, 2017
·
22 revisions
- Update documentation
- Add a tutorial/user guide with detailed use cases, examples
- Update existing examples
- Cover all main use cases and organize them systematically
- Add some FRP/SDL examples/games
- Test exception handling
- 100% coverage
- Add missing APIs
- foldr or Foldable instance
- left fold function for use with the foldl library
- zip API?
- Cross thread recursion
- Parallel applicative?
- Write a parallel mergesort example, merging two infinite but sorted streams.
- Other use cases of parallel stream merging, sampling, buffering
- Free applicative and Free Alternative, batched Alternative (push scheduling instead of pull scheduling)
- N-ary operations e.g. real balanced interleave
- Cancel dropped tasks (e.g.
take 1
) - Do we need a Alternative that is dual to the current default i.e. race or just use
take 1
? - Pause and resume using monad-recorder
- Save internal buffered state during a pause?
- An option to dequeue and run in batches instead of one at a time to reduce lock contention?
- Scheduling: Coalescing of tasks based on programmer defined criteria
- Batching based on the target host
- Batching/chunking for parallel/distributed execution
- Batching iterations
- Controlled parallelism:
- Buffering: Bounded push queue size and API for that
- Control based on the level in the tree
- Control based on the CPU/IO utilization based pacing
- Utilize non-blocking IO
- Explore
Kleisli Profunctor
andKleisli Arrow
instances -
Automaton
instance for machines - Interfacing with other streaming libraries
- Resource cleanup at exception
- Use a foldr library (https://hackage.haskell.org/package/folds?) like the foldl library to facilitate the upstream state passing across folded items. This should generalise the upstream context sharing as implemented in asyncly.