Unlambda
Unlambda is a programming language. Nothing remarkable there. The originality of Unlambda is that it stands as the unexpected intersection of two marginal families of languages. Functional programming languages, of which the canonical representative is Scheme (a Lisp dialect). This means that the basic object manipulated by the language (and indeed the only one as far as Unlambda is concerned) is the function. Rather, Unlambda uses a functional approach to programming: the only form of objects it manipulates are functions. Each function takes a function as an argument and returns a function. Apart from a binary “apply” operation, Unlambda provides several built-in functions (the most important ones being the K and S combinators). User-defined functions can be created, but not saved or named, because Unlambda does not have any variables.
Learn more
Racket
Racket is a general-purpose, multi-paradigm programming language that serves as a modern dialect of Lisp and a descendant of Scheme. It is designed as a platform for programming language design and implementation, enabling developers to create new domain-specific and general-purpose languages. Racket's core language includes features such as macros, modules, lexical closures, tail calls, delimited continuations, parameters (fluid variables), software contracts, green threads, and OS threads. The language also comes with primitives, such as event spaces and custodians, which control resource management and enable the language to act like an operating system for loading and managing other programs. Further extensions to the language are created with the powerful macro system, which, together with the module system and custom parsers, can control all aspects of a language. Most language constructs in Racket are implemented as macros in the base language.
Learn more
CVXOPT
CVXOPT is a free software package for convex optimization based on the Python programming language. It can be used with the interactive Python interpreter, on the command line by executing Python scripts, or integrated in other software via Python extension modules. Its main purpose is to make the development of software for convex optimization applications straightforward by building on Python’s extensive standard library and on the strengths of Python as a high-level programming language. Efficient Python classes for dense and sparse matrices (real and complex), with Python indexing and slicing and overloaded operations for matrix arithmetic. Interfaces to the linear programming solver in GLPK, the semidefinite programming solver in DSDP5, and the linear, quadratic and second-order cone programming solvers in MOSEK.
Learn more
Clojure
Clojure is a robust, practical, and fast programming language with a set of useful features that together form a simple, coherent, and powerful tool. Clojure is a dynamic, general-purpose programming language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure is a compiled language, yet remains completely dynamic, every feature supported by Clojure is supported at runtime. Clojure provides easy access to the Java frameworks, with optional type hints and type inference, to ensure that calls to Java can avoid reflection. Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system. Clojure is predominantly a functional programming language and features a rich set of immutable, persistent data structures. When a mutable state is needed, Clojure offers a software transactional memory system and reactive Agent system.
Learn more