Terms
From HaskellWiki
(Difference between revisions)
(Pretty sure these are called "unlifted") |
(Added some links) |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 3: | Line 3: | ||
== An overview of Haskell related terms == |
== An overview of Haskell related terms == |
||
− | See also [[Abbreviations]] |
+ | See also [[:Category:Glossary]], [[:Category:Language]] and [[Abbreviations]] |
{| |
{| |
||
− | | Anamorphism |
+ | | [http://en.wikipedia.org/wiki/Abstract_algebra Abstract algebra] |
− | | An unfold |
+ | | Abstract algebra is the subject area of mathematics that studies algebraic structures, such as groups, rings, fields, modules, vector spaces, and algebras. |
+ | |- |
||
+ | | Adjoint functors |
||
+ | | See [http://en.wikipedia.org/wiki/Adjoint_functors the Wikipedia article] |
||
+ | |- |
||
+ | | [http://en.wikipedia.org/wiki/Anamorphism Anamorphism] |
||
+ | | An [http://hackage.haskell.org/packages/archive/base/latest/doc/html/Data-List.html#v:unfoldr unfold] |
||
+ | |- |
||
+ | | [http://en.wikipedia.org/wiki/Bijection Bijection] |
||
+ | | In mathematics, a bijection is a function that is both one-to-one (injective) and onto (surjective). |
||
+ | |- |
||
+ | | [[Bottom]] |
||
+ | | Undefined value |
||
|- |
|- |
||
| Catamorphism |
| Catamorphism |
||
| Fold; any for-each loop can be represented as a catamorphism |
| Fold; any for-each loop can be represented as a catamorphism |
||
+ | |- |
||
+ | | [http://en.wikipedia.org/wiki/Category_theory Category theory] |
||
+ | | Category theory is an area of study in mathematics that examines in an abstract way the properties of particular mathematical concepts, by formalising them as collections of objects and arrows (also called morphisms, although this term also has a specific, non category-theoretical sense), where these collections satisfy certain basic conditions. |
||
|- |
|- |
||
| Finally tagless |
| Finally tagless |
||
Line 17: | Line 20: | ||
| [http://en.wikipedia.org/wiki/Forgetful_functor Forgetful functor] |
| [http://en.wikipedia.org/wiki/Forgetful_functor Forgetful functor] |
||
| Given some object with structure as input, some or all of the object's structure or properties is 'forgotten' in the output |
| Given some object with structure as input, some or all of the object's structure or properties is 'forgotten' in the output |
||
+ | |- |
||
+ | | Functional reference |
||
+ | | A reference into a data structure. See [http://twanvl.nl/blog/haskell/overloading-functional-references Overloading functional references] |
||
+ | |- |
||
+ | | [http://en.wikipedia.org/wiki/Homomorphism Homomorphism] |
||
+ | | In abstract algebra, a homomorphism is a structure-preserving map between two algebraic structures (such as groups, rings, or vector spaces). |
||
|- |
|- |
||
| Hylomorphism |
| Hylomorphism |
||
| Combination of fold and unfold; every for-loop (without early exits) can be represented as a hylomorphism |
| Combination of fold and unfold; every for-loop (without early exits) can be represented as a hylomorphism |
||
+ | |- |
||
+ | | [http://en.wikipedia.org/wiki/Isomorphism Isomorphism] |
||
+ | | In abstract algebra, an isomorphism is a [http://en.wikipedia.org/wiki/Bijective_map bijective map] f such that both f and its inverse f<sup>−1</sup> are homomorphisms |
||
+ | |- |
||
+ | | Left adjoint |
||
+ | | See [http://en.wikipedia.org/wiki/Adjoint_functors the Wikipedia article on adjoint functors] |
||
|- |
|- |
||
| Oleg rating |
| Oleg rating |
||
− | | A measure of ability to do type system trickery :) |
+ | | A measure of ability to do type system trickery, named after Oleg Kiselyov :) |
+ | |- |
||
+ | | [[Partial application]] |
||
+ | | Partial application in Haskell involves passing less than the full number of arguments to a function that takes multiple arguments. |
||
+ | |- |
||
+ | | Right adjoint |
||
+ | | See [http://en.wikipedia.org/wiki/Adjoint_functors the Wikipedia article on adjoint functors] |
||
|- |
|- |
||
| [[Tail recursion]] |
| [[Tail recursion]] |
||
Line 29: | Line 44: | ||
| [[Tying the knot]] |
| [[Tying the knot]] |
||
| Building a cyclic data structure |
| Building a cyclic data structure |
||
+ | |- |
||
+ | | [http://www.haskell.org/ghc/docs/latest/html/users_guide/primitives.html#unboxed-tuples Unboxed tuple] |
||
+ | | Unboxed tuples are used for functions that need to return multiple values, but they avoid the heap allocation normally associated with using fully-fledged tuples. |
||
|- |
|- |
||
| Unlifted types |
| Unlifted types |
||
− | | Types that do not have bottom as an inhabitant |
+ | | [[Type]]s that do not have [[bottom]] as an inhabitant |
+ | |- |
||
+ | | [http://www.soi.city.ac.uk/~ross/papers/pointed.html Unpointed types] |
||
+ | | [[Type]]s that do not have [[bottom]] as an inhabitant |
||
|- |
|- |
||
|} |
|} |
Latest revision as of 21:57, 25 May 2011
This article is a stub. You can help by expanding it.
[edit]
See also Category:Glossary, Category:Language and Abbreviations
Abstract algebra | Abstract algebra is the subject area of mathematics that studies algebraic structures, such as groups, rings, fields, modules, vector spaces, and algebras. |
Adjoint functors | See the Wikipedia article |
Anamorphism | An unfold |
Bijection | In mathematics, a bijection is a function that is both one-to-one (injective) and onto (surjective). |
Bottom | Undefined value |
Catamorphism | Fold; any for-each loop can be represented as a catamorphism |
Category theory | Category theory is an area of study in mathematics that examines in an abstract way the properties of particular mathematical concepts, by formalising them as collections of objects and arrows (also called morphisms, although this term also has a specific, non category-theoretical sense), where these collections satisfy certain basic conditions. |
Finally tagless | ??? |
Forgetful functor | Given some object with structure as input, some or all of the object's structure or properties is 'forgotten' in the output |
Functional reference | A reference into a data structure. See Overloading functional references |
Homomorphism | In abstract algebra, a homomorphism is a structure-preserving map between two algebraic structures (such as groups, rings, or vector spaces). |
Hylomorphism | Combination of fold and unfold; every for-loop (without early exits) can be represented as a hylomorphism |
Isomorphism | In abstract algebra, an isomorphism is a bijective map f such that both f and its inverse f^{−1} are homomorphisms |
Left adjoint | See the Wikipedia article on adjoint functors |
Oleg rating | A measure of ability to do type system trickery, named after Oleg Kiselyov :) |
Partial application | Partial application in Haskell involves passing less than the full number of arguments to a function that takes multiple arguments. |
Right adjoint | See the Wikipedia article on adjoint functors |
Tail recursion | A recursive function is tail recursive if the final result of the recursive call is the final result of the function itself. |
Tying the knot | Building a cyclic data structure |
Unboxed tuple | Unboxed tuples are used for functions that need to return multiple values, but they avoid the heap allocation normally associated with using fully-fledged tuples. |
Unlifted types | Types that do not have bottom as an inhabitant |
Unpointed types | Types that do not have bottom as an inhabitant |