Functional languages as a major force in programming language design
A lot of concepts are being adopted from functional programming languages into the mainstream.
Here's some evidence.
Originally invented for Lisp. Adopted by mainstream languages recently.
Automatic type deducing from an expression. Has been adopted in C#, D, Go and C++11. Uses Hindley-Milner Algorithm, which has its roots in type theory and functional programming.
Algebraic data types
Creation of composite types from simpler ones, structs and enums on steroids. Originated in a functional language called Hope. Stock stuff in Haskell and ML family languages. Found recent adoption in Rust.
Nullification of null
null reference was termed a "billion dollar mistake" by its inventor. Haskell uses a Maybe instead. Scala uses the Option type. Rust also adopts this idea.
very common in Lisp. Sugary for loops. Caught on in python and ruby. In fact, introducing lists as a part of the language core is not something mainstream languages like C had. Every time the programmer had to maintain a list of sorts, they had to implement their own and manage the memory. This is the reason why all programming tests have some variation of a linked list implementation question!
Yup, you guessed it. Borrowed from Lisp.
Outline/structure of the Session
- Garbage collection
- Types and type inference
- Functions as first class objects, lambdas
- Generic programming(SYB)
- List comprehensions
History of each of the above concepts and how they made their way into the mainstream.
new programming language constructs
programming language design tradeoffs