Haskell (programming language)

HaskellHaskell programming languageHackageHaskell languageEager HaskellHaskelHaskell 98Haskell 98 specificationsHaskell-likehaskell.org
Haskell is a statically typed, purely functional programming language with type inference and lazy evaluation.wikipedia
622 Related Articles

Glasgow Haskell Compiler

GHCGhc compilerGlasgow Haskell
Its main implementation is the Glasgow Haskell Compiler.
Glasgow Haskell Compiler, less commonly known as The Glorious Glasgow Haskell Compilation System or simply GHC, is an open-source native code compiler for the functional programming language Haskell.

Philip Wadler

Phil Wadler
Type classes, which enable type-safe operator overloading, were first proposed by Philip Wadler and Stephen Blott for Standard ML and implemented later in Haskell.
In particular, he has contributed to the theory behind functional programming and the use of monads in functional programming, the design of the purely functional language Haskell, and the XQuery declarative query language.

Foreign function interface

FFIdirect callingfacilities for inter-operation with C
The term comes from the specification for Common Lisp, which explicitly refers to the language features for inter-language calls as such; the term is also used officially by the Haskell and Python programming languages.

Haskell Curry

CurryCurry, HaskellH. Curry
It is named after logician Haskell Curry.
There are three programming languages named after him, Haskell, Brook and Curry, as well as the concept of currying, a technique used for transforming functions in mathematics and computer science.

Type inference

inferredpartially inferredinfer
Haskell is a statically typed, purely functional programming language with type inference and lazy evaluation.
Some languages that include type inference include C++11, C# (starting with version 3.0), Chapel, Clean, Crystal, D, F#, FreeBASIC, Go, Haskell, Java (starting with version 10), Julia, Kotlin, ML, Nim, OCaml, Opa, RPython, Rust, Scala, Swift, Vala and Visual Basic (starting with version 9.0).

Miranda (programming language)

Miranda
Haskell is based on the semantics, but not the syntax, of the Miranda programming language, which served to focus the efforts of the initial Haskell working group.
Miranda had a strong influence on the later Haskell programming language.

Lazy evaluation

lazylazily evaluatedlazily
Haskell is a statically typed, purely functional programming language with type inference and lazy evaluation. Haskell features lazy evaluation, lambda expressions, pattern matching, list comprehension, type classes and type polymorphism.
For example, in the Haskell programming language, the list of all Fibonacci numbers can be written as:

Pattern matching

pattern-matchingpatternpatterns
Haskell features lazy evaluation, lambda expressions, pattern matching, list comprehension, type classes and type polymorphism.
Tree patterns are used in some programming languages as a general tool to process data based on its structure, e.g., C#, Rust, Swift, Haskell, ML, Scala and the symbolic mathematics language Mathematica have special syntax for expressing tree patterns and a language construct for conditional execution and value retrieval based on it.

Operator overloading

overloadedoverloaded operatorsoverloading
Type classes, which enable type-safe operator overloading, were first proposed by Philip Wadler and Stephen Blott for Standard ML and implemented later in Haskell.

Type class

classtype classesBounded type
Type classes, which enable type-safe operator overloading, were first proposed by Philip Wadler and Stephen Blott for Standard ML and implemented later in Haskell. Haskell features lazy evaluation, lambda expressions, pattern matching, list comprehension, type classes and type polymorphism.
Type classes were first implemented in the Haskell programming language after first being proposed by Philip Wadler and Stephen Blott as an extension to "eqtypes" in Standard ML, and were originally conceived as a way of implementing overloaded arithmetic and equality operators in a principled fashion.

Monad (functional programming)

monadsmonadmonadic
The construct that represents side effects is an example of a monad.
Some languages, such as Haskell, even offer pre-built definitions in their core libraries for the general monad structure and common instances.

Hindley–Milner type system

Hindley–Milner type inferenceHindley–Milner type inference algorithmHindley–Milner
Haskell has a strong, static type system based on Hindley–Milner type inference.
Since then, HM has been extended in various ways, most notably with type class constraints like those in Haskell.

Type safety

type-safetype safesafe
Type classes, which enable type-safe operator overloading, were first proposed by Philip Wadler and Stephen Blott for Standard ML and implemented later in Haskell.
Some other languages such as Haskell are believed to meet some definition of type safety, provided certain "escape" features are not used (for example Haskell's unsafePerformIO, used to "escape" from the usual restricted environment in which I/O is possible, circumvents the type system and so can be used to break type safety.

Generalized algebraic data type

GADTalgebraic data typesgeneralized
GHC is noted for its rich type system incorporating recent innovations such as generalized algebraic data types and type families.
In a GADT, the product constructors (called data constructors in Haskell) can provide an explicit instantiation of the ADT as the type instantiation of their return value.

List comprehension

list comprehensionsarray comprehensionsComprehension
Haskell features lazy evaluation, lambda expressions, pattern matching, list comprehension, type classes and type polymorphism.
In Haskell's list comprehension syntax, this set-builder construct would be written similarly, as:

Haskell Platform

HappyAlex (software)Happy (software)
The Haskell Platform is a collection of software packages, tools and libraries that create a common platform for using and developing applications in Haskell.

Type system

dynamicstatictype checking
Haskell is a statically typed, purely functional programming language with type inference and lazy evaluation. Haskell has a strong, static type system based on Hindley–Milner type inference.
Haskell is also strongly typed but its types are automatically inferred so that explicit conversions are often (but not always) unnecessary.

Programming language

programming languageslanguagedialect
Haskell is a statically typed, purely functional programming language with type inference and lazy evaluation.
Complete type inference has traditionally been associated with less mainstream languages, such as Haskell and ML.

Cabal (software)

Cabal
Haskell's build tool, Cabal, has historically been criticised for poorly handling multiple versions of the same library, a problem known as "Cabal hell".
The Haskell Cabal (common architecture for building applications and libraries) aids in the packaging and distribution of software packages.

LLVM

LLVM Intermediate RepresentationLLVM IRintermediate representation
Originally implemented for C and C++, the language-agnostic design of LLVM has since spawned a wide variety of front ends: languages with compilers that use LLVM include ActionScript, Ada, C#, Common Lisp, Crystal, CUDA, D, Delphi, Dylan, Fortran, Graphical G Programming Language, Halide, Haskell, Java bytecode, Julia, Kotlin, Lua, Objective-C, OpenGL Shading Language, Ruby, Rust, Scala, Swift, and Xojo.

Side effect (computer science)

side effectsside effectside-effects
It is a purely functional language, which means that functions generally have no side effects.
The functional language Haskell expresses side effects such as I/O and other stateful computations using monadic actions.

Git-annex

git-annex is a distributed file synchronization system written in Haskell.

Software transactional memory

Composable Memory Transactionstransactional memoryComposable operations
Monads are a general framework that can model different kinds of computation, including error handling, nondeterminism, parsing and software transactional memory.
In Haskell, this limitation is enforced at compile time by the type system.

Syntax (programming languages)

syntaxsyntacticallysyntactic
Parsers are often written in functional languages, such as Haskell, or in scripting languages, such as Python or Perl, or in C or C++.

Xmonad

xmonad is a dynamic window manager (tiling) for the X Window System, noted for being written in the functional programming language Haskell.