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.

Garbage collection
Originally invented for Lisp. Adopted by mainstream languages recently.

Type inference
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.

List comprehensions
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.

1 favorite thumb_down thumb_up 2 comments visibility_off  Remove from Watchlist visibility  Add to Watchlist

Outline/structure of the Session

  • Garbage collection
  • Types and type inference
  • Functions as first class objects, lambdas
  • Generic programming(SYB)
  • Purity
  • Currying
  • Laziness
  • List comprehensions

History of each of the above concepts and how they made their way into the mainstream.

Learning Outcome

new programming language constructs

programming language design tradeoffs

Target Audience

developers, beginners

schedule Submitted 4 years ago

Comments Subscribe to Comments

comment Comment on this Submission
  • Naresh Jain
    By Naresh Jain  ~  4 years ago
    reply Reply

    Hi Lakshmi Narasimhan,

    Thanks for the proposal.

    The learning outcome states: 1. new programming language constructs & 2. programming language design tradeoffs

    Based on the abstract and outline, I fail to see how you would be able to achieve this. Can you please explain?

    • Lakshmi Narasimhan
      By Lakshmi Narasimhan  ~  4 years ago
      reply Reply

      After attending the session, the attendees will be able to understand and apply concepts like monads, list comprehensions, pattern matching, GADTs, optional type etc.