- Conditionals not limited to goto
- First-class functions
- Recursion
- Treating variables as pointers, leaving types to values
- Garbage collection
- Programs made entirely expressions with no statements
- The symbol data type, distinct from the string data type
- Notation for code made of trees of symbols, Гомоиконичность
- Full language available at load-, compile-, and run-time


----
#### Scheme
- Minimalism
- Lambda calculus yields an extremely small core
- Конструктор "собери сам"
#### Common Lisp
- Очень большой язык программирования
- Common Lisp Object System, много больше чем ООП
- Conditional System
- The hard way: [Лисп — философия разработки](https://fprog.ru/2010/issue5/vsevolod-dyomkin-lisp-philosophy/)
----
#### Clojure
- Modern language
- Symbiotic with an established Platform (JVM)
- Polymorphism without OOP, multimethods
- Defaults to immutability
- Designed for Concurrency (atom, STM, actors)
- Clojure Script
- [2010, Clojure, или «Вы все еще используете Java? Тогда мы идем к вам!»](https://fprog.ru/2010/issue4/alex-ott-clojure/)
*Offtopic:* И это далеко не всё. Откуда этот зоопарк?
*Offtopic:* На самом деле это очень разные языки попавшие в одну группу в основном из-за скобочек/программирования в AST.
----
### Erlang/OTP
- Язык старой школы с нотками Пролога. Разработан для телекома (Open Telecom Platform).
- Динамический функциональный язык.
- Concurrency and distribution orientation. Actor model (самый объектно-ориентированный ЯП).
- Soft real-time
- "Let it crash" coding style. Supervisor trees
- Hot code loading and modules.

### Elixir
- Совместимый reboot Erlang
- Испытал влияние Ruby
- Metaprogramming
- Polymorphism via protocols
----
### OCaml
- Compiled. High-efficient.
- Static type systems and type-inferring
- Object-oriented programming
- Algebraic data types and pattern matching
- Parametric modules
- [8 months of OCaml after 8 years of Haskell in production](https://dev.to/chshersh/8-months-of-ocaml-after-8-years-of-haskell-in-production-h96)
### F-sharp
*Disclaimer:* (не работал, могу наговорить глупостей)
- Static type systems and type-inferring. Strict.
- .net integration
- Object-oriented programming
- Asynchronous programming
- Parallel programming
- Agent programming
----
### Haskell
- Statically typed
- Purely functional
- Type inference
- Concurrent
- Lazy
- Квадратно-гнездовое программирование
- Богатая библиотека
- Язык активно развивается


----
*Disclaimer:* (не работал, могу наговорить глупостей)
### Coq/Gallina
- Not a programming language, but a formal proof management system.
- Allows:
- to define functions or predicates, that can be evaluated efficiently;
- to state mathematical theorems and software specifications;
- to interactively develop formal proofs of these theorems;
- to machine-check these proofs by a relatively small certification "kernel";
- to extract certified programs to languages like OCaml, Haskell or Scheme.
- Tactic based interactive theorem prover
----
*Disclaimer:* (не работал, могу наговорить глупостей)
### Agda
- Dependently typed functional programming language
- Proof assistant
- Total language (all expressions are finite).
- mixfix for operators