background preloader

Functional programming

Functional programming

Lambda calculus The lowercase lambda, the 11th letter of the Greek alphabet, is used to symbolize the lambda calculus. Because of the importance of the notion of variable binding and substitution, there is not just one system of lambda calculus, and in particular there are typed and untyped variants. Historically, the most important system was the untyped lambda calculus, in which function application has no restrictions (so the notion of the domain of a function is not built into the system). In the Church–Turing Thesis, the untyped lambda calculus is claimed to be capable of computing all effectively calculable functions. The typed lambda calculus is a variety that restricts function application, so that functions can only be applied if they are capable of accepting the given input's "type" of data. Lambda calculus in history of mathematics[edit] Informal description[edit] Motivation[edit] Computable functions are a fundamental concept within computer science and mathematics. (read as "the pair of and ").

Haskell (programming language) Functional programming language Haskell is used in academia and industry.[29][30][31] As of May 2021[update], Haskell was the 28th most popular programming language by Google searches for tutorials,[32] and made up less than 1% of active users on the GitHub source code repository.[33] Haskell was developed by a committee, attempting to bring together off the shelf solutions where possible. Type classes, which enable type-safe operator overloading, were first proposed by Philip Wadler and Stephen Blott to address the ad-hoc handling of equality types and arithmetic overloading in languages at the time.[35] Other notable changes in early versions were the approach to the 'seq' function, which creates a data dependency between values, and is used in lazy languages to avoid excessive memory consumption; with it moving from a type class to a standard function to make refactoring more practical. The first version of Haskell ("Haskell 1.0") was defined in 1990. A "Hello, World!" [edit] Reports

Social - Home | Lift Space You can contribute to this wiki after creating a free account with assembla, and becoming a “Watcher” by clicking the “Watch” link (top-right), . Note: Please use the LiftWeb Google Group to ask questions, report issues and bugs, or suggest improvements. Please read the sticky discussions there before posting. Lift is an expressive and elegant framework for writing web applications. Lift borrows from the best of existing frameworks, providing: Seaside’s highly granular sessions and securityRails’s fast flash-to-bangDjango’s “more than just CRUD is included”Wicket’s designer-friendly templating style (see View First) And because Lift applications are written in Scala, an elegant functional JVM language, you can still use your favorite Java libraries and deploy to your favorite servlet container. First steps in Lift framework Useful Resources: Talks, Articles, Blogs

Programmation fonctionnelle Un article de Wikipédia, l'encyclopédie libre. Machine à états et effets secondaires[modifier | modifier le code] Programmation impérative et effets de bord[modifier | modifier le code] La programmation impérative s'appuie sur le modèle des machines à états (cf. aussi machine de Turing et Architecture de von Neumann), avec une mémoire centrale et des instructions qui modifient son état grâce à des affectations successives. On peut représenter un tel programme par une machine à états qui représente les états successifs de la mémoire. Cela nécessite pour le programmeur de connaître à tout instant un modèle exact de l'état de la mémoire que le programme modifie. Programmation fonctionnelle[modifier | modifier le code] La programmation fonctionnelle s'affranchit de façon radicale des effets secondaires (ou effets de bord) en interdisant toute opération d'affectation. Transparence référentielle[modifier | modifier le code] Des fonctions passées en paramètre[modifier | modifier le code]

Deterministic finite-state machine An example of a deterministic finite automaton that accepts only binary numbers that are multiples of 3. The state S0 is both the start state and an accept state. In automata theory, a branch of theoretical computer science, a deterministic finite automaton (DFA)—also known as deterministic finite state machine—is a finite state machine that accepts/rejects finite strings of symbols and only produces a unique computation (or run) of the automaton for each input string.[1] 'Deterministic' refers to the uniqueness of the computation. In search of simplest models to capture the finite state machines, McCulloch and Pitts were among the first researchers to introduce a concept similar to finite automaton in 1943.[2][3] A DFA is defined as an abstract mathematical concept, but due to the deterministic nature of a DFA, it is implementable in hardware and software for solving various specific problems. Formal definition[edit] Let w = a1a2 ... an be a string over the alphabet Σ. Example[edit] . .

Monad (functional programming) Formally, a monad consists of a type constructor M and two operations, bind and return (where return is often also called unit). The operations must fulfill several properties to allow the correct composition of monadic functions (i.e. functions that use values from the monad as their arguments or return value). The return operation takes a value from a plain type and puts it into a monadic container using the constructor, creating a monadic value. The concept of monad programming appeared in the 1980s in the programming language Opal even though it was called "commands" and never formally specified. We demonstrate two common examples given when introducing monads: the Maybe monad and the I/O monad. Now consider the option type Maybe a, representing a value that is either a single value of type a, or no value at all. data Maybe t = Just t | Nothing In the following example, add is a function that takes two arguments of type Maybe Int, and returns a result of the same type.

Social - Lift :: Home The Scala Programming Language Extended Backus–Naur Form In computer science, Extended Backus–Naur Form (EBNF) is a family of metasyntax notations, any of which can be used to express a context-free grammar. EBNF is used to make a formal description of a formal language which can be a computer programming language. They are extensions of the basic Backus–Naur Form (BNF) metasyntax notation. Basics[edit] EBNF is a code that expresses the grammar of a formal language. digit excluding zero = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; digit = "0" | digit excluding zero ; This production rule defines the nonterminal digit which is on the left side of the assignment. A production rule can also include a sequence of terminals or nonterminals, each separated by a comma: twelve = "1", "2" ; two hundred one = "2", "0", "1" ; three hundred twelve = "3", twelve ; twelve thousand two hundred one = twelve, two hundred one ; Expressions that may be omitted or repeated can be represented through curly braces { ... }: Table of symbols[edit] 1. 2. 3.

Related: