Skip to content

kongware/scriptum

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
      ___           ___           ___                       ___           ___           ___           ___     
     /\  \         /\  \         /\  \          ___        /\  \         /\  \         /\__\         /\__\    
    /::\  \       /::\  \       /::\  \        /\  \      /::\  \        \:\  \       /:/  /        /::|  |   
   /:/\ \  \     /:/\:\  \     /:/\:\  \       \:\  \    /:/\:\  \        \:\  \     /:/  /        /:|:|  |   
  _\:\~\ \  \   /:/  \:\  \   /::\~\:\  \      /::\__\  /::\~\:\  \       /::\  \   /:/  /  ___   /:/|:|__|__ 
 /\ \:\ \ \__\ /:/__/ \:\__\ /:/\:\ \:\__\  __/:/\/__/ /:/\:\ \:\__\     /:/\:\__\ /:/__/  /\__\ /:/ |::::\__\
 \:\ \:\ \/__/ \:\  \  \/__/ \/_|::\/:/  / /\/:/  /    \/__\:\/:/  /    /:/  \/__/ \:\  \ /:/  / \/__/~~/:/  /
  \:\ \:\__\    \:\  \          |:|::/  /  \::/__/          \::/  /    /:/  /       \:\  /:/  /        /:/  / 
   \:\/:/  /     \:\  \         |:|\/__/    \:\__\           \/__/     \/__/         \:\/:/  /        /:/  /  
    \::/  /       \:\__\        |:|  |       \/__/                                    \::/  /        /:/  /   
     \/__/         \/__/         \|__|                                                 \/__/         \/__/    

Haskell-style Functional Programming Adapted to Client-/Server-side Javascript

Previous projects:

Current Project:

scriptum is a functional programming lib featuring

  • ad-hoc lazy evaluation with implicit thunks
  • principled deferred/lazy evaluation
  • stack-safe tail recursion, tail recursion modulo cons, monad recursion
  • persistent data structures based on R/B tree implementation
  • immutable un-/ordered map + un-/ordered set + vector
  • flat, comrpehensible composition syntax through infix operators
  • simple function-encoded sum types
  • principled, pure asynchronous computations in serial/parallel
  • functional I/O handling (pure core/impure shell)
  • lots of type class definitions
  • lots of pre-implemented monad transformers
  • lots of predefined polymorphic functions
  • lots of monad machinery
  • static loop fusion with transducers
  • dynamic functorial fusion using yoneda
  • let expressions
  • linked lists, non-empty list, difference list, list zipper
  • catamorpisms and other recursion schemes for many data types
  • data streams, event streams, behaviors
  • functional optics
  • parser combinators
  • functor composition
  • delimited continuations
  • functional exception handling
  • 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.

Future Studies

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