Skip to content
forked from kongware/scriptum

scriptum - a no-frills functional programming library and a learning course based on it.

License

Notifications You must be signed in to change notification settings

sdghbtn/scriptum

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

      ___           ___           ___                        ___          ___           ___           ___     
     /\  \         /\  \         /\  \          ___         /\  \        /\  \         /\__\         /\__\    
    /::\  \       /::\  \       /::\  \        /\  \       /::\  \       \:\  \       /:/  /        /::|  |   
   /:/\ \  \     /:/\:\  \     /:/\:\  \       \:\  \     /:/\:\  \       \:\  \     /:/  /        /:|:|  |   
  _\:\~\ \  \   /:/  \:\  \   /::\~\:\  \      /::\__\   /::\~\:\  \      /::\  \   /:/  /  ___   /:/|:|__|__ 
 /\ \:\ \ \__\ /:/__/ \:\__\ /:/\:\ \:\__\  __/:/\/__/  /:/\:\ \:\__\    /:/\:\__\ /:/__/  /\__\ /:/ |::::\__\
 \:\ \:\ \/__/ \:\  \  \/__/ \/_|::\/:/  / /\/:/  /    /:/  \:\/:/  /   /:/  \/__/ \:\  \ /:/  / \/__/~~/:/  /
  \:\ \:\__\    \:\  \          |:|::/  /  \::/__/    /:/  / \::/  /   /:/  /       \:\  /:/  /        /:/  / 
   \:\/:/  /     \:\  \         |:|\/__/    \:\__\   /:/  /   \/__/   /:/  /         \:\/:/  /        /:/  /  
    \::/  /       \:\__\        |:|  |       \/__/   \/__/            \/__/           \::/  /        /:/  /   
     \/__/         \/__/         \|__|                                                 \/__/         \/__/    

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

About

scriptum - a no-frills functional programming library and a learning course based on it.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%