Fuctional programming Languages

Functional programming has its roots in lambda calculus, a formal system developed in the 1930s to investigate computability, the Entscheidungs problem, function definition, function application and recursion. Many functional programming languages can be viewed as elaborations on the lambda calculus, where computation is treated as the evaluation of mathematical functions and avoids state and mutable data. In the other well known declarative programming paradigm, logic programming, relations are at the base of respective languages.

Functional design may seem like an odd constraint to work under. Why should you avoid objects and side effects? There are theoretical and practical advantages to the functional style:

  • Formal provability
    For a long time researchers have been interested in finding ways to mathematically prove programs correct.
  • Modularity
    A more practical benefit of functional programming is that it forces you to break apart your problem into small pieces. Programs are more modular as a result. It’s easier to specify and write a small function that does one thing than a large function that performs a complicated transformation. Small functions are also easier to read and to check for errors.
  • Ease of debugging and testing
    Debugging is simplified because functions are generally small and clearly specified. When a program doesn’t work, each function is an interface point where you can check that the data are correct. You can look at the intermediate inputs and outputs to quickly isolate the function that’s responsible for a bug.
  • Composability
    As you work on a functional-style program, you’ll write a number of functions with varying inputs and outputs. Some of these functions will be unavoidably specialized to a particular application, but others will be useful in a wide variety of programs.

List of Functional programming Languages

Functional programming Languages

One of the things that became clear in the responses was that many people who were debating whether a given language X was or was not a functional programming language didn’t have a good idea of what a functional programming language was. The situation was made worse, I think, by the fact that many of the key terms in the programming industry do not come with rigorous definitions and thus tend to shade into buzzwords at the edges. This is not the case with functional- there is a very rigorous definition of what is meant by "functional" and I’d like to introduce people to it.

  • Charity
  • Clean
  • Haskell
  • Curl
  • CAL

Charity is a categorical programming language currently being developed by The Charity Development Group in The Department of Computer Science at The University of Calgary, Canada. Charity is functional in style. That is, programmers familiar with declarative paradigms (functional and logic programmers) should find Charity easy to grasp.


Read more

Clean is a general purpose, state-of-the-art, pure and lazy functional programming language designed for making real-world applications. Clean is based on the concept of mathematical functions. Clean is a pure functional language, there is not such a thing as an assignment.


Read more

Curry is a functional logic programming language which is based on the Haskell Language.


Read more

Haskell is one of the leading languages for teaching functional programming, enabling students to write simpler and cleaner code, and to learn how to structure and reason about programs. Haskell is unique in two ways. First, it is a pure functional programming language.


Read more

CURL is a tool to transfer data from or to a server using one of the protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP). CURL command is designed to work without user interaction. curl offers a busload of useful tricks like proxy support, user authentication, FTP upload, HTTP post, SSL connections, cookies, file transfer resume, Metalink, and more.


Read more

CAL is an event processing language that is used for extend Pro Audio and Professional with custom editing commands. It was started as a Musical Instrument Digital Interface equencer made by Twelve Tone systems.


Read more