Concepts inFeat: functional enumeration of algebraic types
Algebraic data type
In computer programming, particularly functional programming and type theory, an algebraic data type (sometimes also called a variant type) is a datatype each of whose values is data from other datatypes wrapped in one of the constructors of the datatype. Any wrapped datum is an argument to the constructor. In contrast to other datatypes, the constructor is not executed and the only way to operate on the data is to unwrap the constructor using pattern matching.
more from Wikipedia
Template Haskell
Template Haskell is an experimental language extension to the Haskell programming language implemented in the Glasgow Haskell Compiler (version 6 and later). In early incarnations it was also known as Template Meta-Haskell. It allows compile-time metaprogramming and generative programming by means of manipulating abstract syntax trees and 'splicing' results back into a program.
more from Wikipedia
QuickCheck
QuickCheckDeveloper(s) Koen Claessen, John HughesStable release 2.4.1.1 / Tue Apr 26 18:58:51 UTC 2011Operating system Unix-like, Microsoft WindowsType Software testingLicense BSD-styleWebsite http://www. cse. chalmers. se/~rjmh/QuickCheck/ QuickCheck is a combinator library written in Haskell, designed to assist in software testing by generating test cases for test suites. It is compatible with the GHC compiler and the Hugs interpreter.
more from Wikipedia
Mutual recursion
In mathematics and computer science, mutual recursion is a form of recursion where two mathematical or computational functions are defined in terms of each other. In mathematics, the Hofstadter Female and Male sequences are an example of a pair of integer sequences defined in a mutually recursive manner. Mutual recursion is very common in the functional programming style, and is often used for programs written in LISP, Scheme, ML, and similar languages.
more from Wikipedia
Bijection
A bijection (or bijective function or one-to-one correspondence) is a function giving an exact pairing of the elements of two sets. Every element of one set is paired with exactly one element of the other set, and every element of the other set is paired with exactly one element of the first set. (There are no unpaired elements. ) A bijection from the set X to the set Y has an inverse function from Y to X.
more from Wikipedia
Abstract syntax tree
while b ¿ 0 if a > b a := a ¿ b else b := b ¿ a return a ]] In computer science, an abstract syntax tree (AST), or just syntax tree, is a tree representation of the abstract syntactic structure of source code written in a programming language. Each node of the tree denotes a construct occurring in the source code.
more from Wikipedia
Prettyprint
Prettyprint (or pretty-print) is the application of any of various stylistic formatting conventions to text, source code, markup, and other similar kinds of content. These formatting conventions usually consist of changes in positioning, spacing, color, contrast, size and similar modifications intended to make the content easier for people to view, read, and understand. Prettyprinters for programming language source code are sometimes called code beautifiers or syntax highlighters.
more from Wikipedia