Skip to content

Latest commit

 

History

History
104 lines (94 loc) · 3.13 KB

TODO.md

File metadata and controls

104 lines (94 loc) · 3.13 KB

TODO

Features & bugs

  • Add compose or extend functionality to effects and runners
  • Cant handle end state with _
  • Make operation handlers get resume, end, throwError as object (destructure)
  • Allow calling generators from within effects
  • Add ability to cancel a runner
  • Add type signature checks
  • Custom global operations
  • Add name to runner to identify which Effects were composed
  • Map/Over method for State effect
  • Change package name to @algebraic-effects scope
  • Migrate to yarn workspaces
  • Move static functions of Tasks out to a another entry point
  • Use something lazy instead of promises (Like Async) or something custom to allow chaing programs and pure operations with an api similar to Async.
  • Prevent operation name collisions with effect namespace
  • Clone/Extend effect interface with new name.
  • "global" handlers to generic effects
  • Support try-catch inside program
  • Typescript types
  • Stateful/parameterized states (to avoid the second parameter to .of method of State)
  • ?Redux middleware

Multiple continuations

  • Implement
  • Handle cancellation
  • Async multiple continuations (with custom value handler)

Task

  • Fix resolveWith, rejectWith to reolve/reject after the previous operations
  • Cancellation handler
  • Allow cancellation from within

Observable

  • Implement observable monad to be used instead of Task monad
  • Static methods
    • of
    • range
    • from
  • Implement Observable methods
    • Mapping - map, chain, catch
    • Filter
      • filter
      • replace
      • ifElse bi chain
    • Utils
      • Delay
      • Take
      • Interval
      • Tap
      • Repeat
    • Combine
      • merge
      • zip
      • concat
      • race

Add more effects ...

  • Exception
  • State
  • Random Number
  • Logger
  • Scheduler
    • requestAnimationFrame
    • requestIdleCallback
    • setTimeout
    • setInterval (multi)
    • Debounce
    • Throttling

Generic effects

  • Synchronously call program
  • Race between programs
  • Parallel execution of programs
  • Run program in background
  • callMulti

Documentation

  • Call, Race, etc global operations
  • Task monad
  • Migrate all doc to use Task
  • State effect update operation
  • Random effect
  • All flow operators
  • Cancellation
  • FAQ
  • Clone/Extend
  • "global" handlers to generic effects
  • Multiple continuations
  • Explain motivation and inspiration
  • Testing
  • Parameterized custom effects (like State)
  • Usage with redux
  • Custom global operations
  • All links to next document below for readers to continue reading

Scripts and doc builder

  • Version upgrade in publish script should upgrade matching dependencies as well
  • Build and publish ae-docs as html github pages. (Maybe mdx?)
  • ?Mobile issues (not confirmed yet)
  • Docs issue with scrolling to link hook. (Should attempt scrolling after page load)