sdghbtn / scriptum

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

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.

License:MIT License


Languages

Language:JavaScript 100.0%