From Rosetta Code
Revision as of 16:41, 27 September 2023 by imported>Mathisto
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

A functional, flexible and concise Lisp inspired by Haskell and APL, among others.

KamilaLisp allows for actor programming, concurrent programming, imperative programming, [pure] functional programming, array programming, object-oriented programming, rudimentary logic programming, mathematical programming, backend development, numerical and scientific computation, scripting and system administration, symbolic computation (real and complex analysis), tacit (point-free) programming, and event-driven programming. In more detail:

  • Arbitrary precision complex, integer and decimal arithmetic.
  • A fully-featured, remote IDE capable of communicating with KamilaLisp instances over the network. Supports multiple workspaces, contains an implementation of a hybrid tiling/floating window manager and editors.
  • Many mathematical functions (bernoulli, gamma, trigonometry, arcus functions, hyperbolic functions, inverse hyperbolic functions, FFT, IFFT)
  • Bit operations
  • Number theoretic, combinatoric and linear algebraic functions (permutations, Levi-Civita, etc...)
  • Functional higher order functions (fold, scan, all, none, some, converge, takewhile, dropwhile)
  • Functional parallelism (parallel map and filter)
  • Mu-recursive functions (SML projections, mu-recursive substitution operator).
  • Prototype-based object orientation.
  • No memory side effects, all collections are persistent.
  • Possibilities of writing code in pure functional paradigm.
  • Suffix array and Burrows-Wheeler transform construction.
  • APL-style array processing (grade-up, grade-down, find, range, where, encode, decode, replicate, etc...).
  • APL-style symbols for common operations.
  • Set operations.
  • Read/write support for JSON, CSV, XML, Base64, XZ, gzip, lz4, bzip2, tar and zip.
  • Date and time manipulations.
  • Integrated development environment - supports remote IDE sessions, compressed KamilaLisp code format, project management, multi-workspace and multi-session workflows, broadcasting/synchronising project data among multiple remote sessions.
  • Persistent hashmaps, reactive hashmap literals.
  • PNG, BMP, JPG and JPEG image I/O.
  • File I/O (read, write, append).
  • Basic matrix operations (LU decomposition, transpose, trace, matrix multiplication easily implemented as $(foldl + 0)%[1] \outer-product * A \matrix:transpose A.
  • Performance benchmarks to measure GC time, average, median and standard deviation between runs of various expressions.
  • Module system.
  • Streams
  • Process management (using sh:process) - manipulating input/output streams, etc...
  • HTTP server - supports resource handlers, path handlers, complex routing, cookies, ...
  • SQL database connection, auxiliary database drivers, statements, queries, prepared statements.
  • Symbolic matrix LU decomposition, symbolic determinants.
  • Pattern matching.
  • Memoization.
  • Imperative programming support.
  • Networking (net:fetch, net:wget).
  • Sockets (net:client, net:server and their SSL counterparts).
  • Parallel processing using the actor model (daemon threads, task threads, message passing paradigm).
  • Regular expressions.
  • KamilaLisp as a shell (implementations of sh:ls, sh:glob, sh:mv, sh:basename, etc... - all usable from the REPL and from code, as they return plain data structures, launching and manipulating external processes).
  • String functions (Shannon entropy, unicode handling, byte buffers, levenshtein distance, string interpolation/formatting)
  • On-The-Fly Lexical scanner generation.
  • Function compositions, partial application, variadic functions, static scoping.
  • Tail call optimisation.
  • Limits, complex limits.
  • Indefinite integrals.
  • Differentiation
  • Polynomial factoring.
  • Laurent, Taylor, MacLaurin and Puiseux series expansion.
  • Functional de Bruijn indices.
  • Possibility to write standalone non-interactive scripts.
  • Symbolic matrix operations.
  • Machine word operations (flt64:..., cmplx64:...) - Bessel functions, Hurwitz Zeta, Riemann Zeta, Upper/Lower Incomplete Gamma, Gamma, LogGamma, Pochhammer symbol, erf, erfc, Inverse erf, Inverse erfc, Digamma, Trigamma, Polygamma, Airy Ai, Bessel I, J, K and Y functions, Lerch Phi, Spence's function, Lambert W and Polylogarithm.
  • Prompt styling.
  • Portable.
  • Graph data structure (e.g. directed, acyclic, weighted, etc...).
  • Graph colouring (Saturation degree, greedy, largest degree first, smallest degree last, chordal, refinement, Brown backtrack).
  • Graph clustering (Givman-Newman, k-Spanning tree, label propagation).

This category currently contains no pages or media.