Concepts inDependent types in practical programming
Dependent type
In computer science and logic, a dependent type is a type that depends on a value. Dependent types play a central role in intuitionistic type theory and in the design of functional programming languages like ATS, Agda and Epigram. An example is the type of n-tuples of real numbers. This is a dependent type because the type depends on the value n. Deciding equality of dependent types in a program may require computations.
more from Wikipedia
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely. The earliest programming languages predate the invention of the computer, and were used to direct the behavior of machines such as Jacquard looms and player pianos.
more from Wikipedia
Higher-order function
In mathematics and computer science, a higher-order function (also functional form, functional or functor) is a function that does at least one of the following: take one or more functions as an input output a function All other functions are first order functions. In mathematics higher-order functions are also known as operators or functionals. The derivative in calculus is a common example, since it maps a function to another function.
more from Wikipedia
ML (programming language)
ML is a general-purpose functional programming language developed by Robin Milner and others in the early 1970s at the University of Edinburgh, whose syntax is inspired by ISWIM. Historically, ML stands for metalanguage: it was conceived to develop proof tactics in the LCF theorem prover (whose language, pplambda, a combination of the first-order predicate calculus and the simply typed polymorphic lambda calculus, had ML as its metalanguage).
more from Wikipedia
General-purpose programming language
In computer software a general-purpose programming language (GPL) is a programming language designed to be used for writing software in a wide variety of application domains. In many ways a general-purpose language only has this status because it does not include language constructs designed to be used within a specific application domain (e.g. , a page description language contains constructs intended to make it easier to write programs that control the layout of text and graphics on a page).
more from Wikipedia
Type system
A type system associates a type with each computed value. By examining the flow of these values, a type system attempts to ensure or prove that no type errors can occur. The particular type system in question determines exactly what constitutes a type error, but in general the aim is to prevent operations expecting a certain kind of value being used with values for which that operation does not make sense; memory errors will also be prevented.
more from Wikipedia
Recursion (computer science)
Recursion in computer science is a method where the solution to a problem depends on solutions to smaller instances of the same problem. The approach can be applied to many types of problems, and is one of the central ideas of computer science. "The power of recursion evidently lies in the possibility of defining an infinite set of objects by a finite statement.
more from Wikipedia
Compiler optimization
Compiler optimization is the process of tuning the output of a compiler to minimize or maximize some attributes of an executable computer program. The most common requirement is to minimize the time taken to execute a program; a less common one is to minimize the amount of memory occupied. The growth of portable computers has created a market for minimizing the power consumed by a program.
more from Wikipedia