• Stars
    star
    382
  • Rank 112,241 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 7 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Functional Programming Unorthodoxly Adjusted to Client-/Server-side Javascript
      ___           ___           ___                        ___          ___           ___           ___     
     /\  \         /\  \         /\  \          ___         /\  \        /\  \         /\__\         /\__\    
    /::\  \       /::\  \       /::\  \        /\  \       /::\  \       \:\  \       /:/  /        /::|  |   
   /:/\ \  \     /:/\:\  \     /:/\:\  \       \:\  \     /:/\:\  \       \:\  \     /:/  /        /:|:|  |   
  _\:\~\ \  \   /:/  \:\  \   /::\~\:\  \      /::\__\   /::\~\:\  \      /::\  \   /:/  /  ___   /:/|:|__|__ 
 /\ \:\ \ \__\ /:/__/ \:\__\ /:/\:\ \:\__\  __/:/\/__/  /:/\:\ \:\__\    /:/\:\__\ /:/__/  /\__\ /:/ |::::\__\
 \:\ \:\ \/__/ \:\  \  \/__/ \/_|::\/:/  / /\/:/  /    /:/  \:\/:/  /   /:/  \/__/ \:\  \ /:/  / \/__/~~/:/  /
  \:\ \:\__\    \:\  \          |:|::/  /  \::/__/    /:/  / \::/  /   /:/  /       \:\  /:/  /        /:/  / 
   \:\/:/  /     \:\  \         |:|\/__/    \:\__\   /:/  /   \/__/   /:/  /         \:\/:/  /        /:/  /  
    \::/  /       \:\__\        |:|  |       \/__/   \/__/            \/__/           \::/  /        /:/  /   
     \/__/         \/__/         \|__|                                                 \/__/         \/__/    

Functional Programming Unorthodoxly Adjusted to Client-/Server-side Javascript

scriptum, a functional standard library featuring

  • stack-safe tail recursion, tail recursion modulo cons, monad recursion, mutual recursion
  • persistent data structures Iarray/Iobject/Imap/Iset based on nested object types
  • ad-hoc lazy evaluation with implicit thunks (() => expr that behave like expr)
  • purely functional asynchronous computations in serial/parallel
  • extensive monad and monad transformer machinery
  • native Iterator as Functor/Applicative/Monad
  • purely functional data streams as iterator alternative
  • reactive programming with event streams and behaviors
  • linked lists, non-empty list, difference list
  • function-encoded sum and product types
  • lots of predefined type class definitions
  • lots of predefined polymorphic functions
  • dynamic functorial fusion using yoneda
  • static loop fusion using transducers
  • flat composition syntax using infix
  • simple pattern matching
  • functional optics
  • parser combinators
  • functor composition
  • let expressions
  • delimited continuations
  • r/b-tree implementation
  • n-ary tree handling

Status

unstable

While concepts and functional idioms are mature most function implementations are not tested yet and implementation details might be affected by future code revisions.

Previous projects:

Future Studies

  • probabilistic data structures
  • separation of command and query model + event sourcing (CQRS/ES)
  • software transaction memory (STM)
  • strong eventual consistency (CRDTs)
  • distributed applications