Programming with sets. The most well known candidate is SetlLanguage.
This style of programming follows scientific (especially mathematical) reasoning and exposition most closely.
Problems are declaratively described as propositions about sets (SetTheory). The constraint-solver then infers all solutions fulfilling a given set of goals.
For a specific language (log) see http://citeseer.ist.psu.edu/dovier93embedding.html.
Related to (or a special case of) ConstraintLogicProgramming or LogicProgramming.
See http://www.cs.nmsu.edu/~complog/sets/index.html
The basic operations of a SetBasedLanguage? are:
- SetComposition? e.g. with "{ ELEM | SET }"
- SetDecomposition? e.g. by pattern matching on "{ ELEM | SET }"
- EqualityTest? "A = B" usually implemented with an UnificationAlgorithm?
- MemberTest? a primitive predicate "member(A, B)."
- SetUnion? a primitive predicate "union(A, B, C) for improved analysis (union can be composed from ExistentialQuantification? and MemberTest?)
- SetDisjunction? a primitive predicate "disjuct(A, B, C) for improved analysis (disjunction can be composed from ExistentialQuantification? and MemberTest?)
- Negation or negated versions of the above primitives.
- Implicit or explicit ExistentialQuantification? or UniversalQuantification?.
Related to
TableOrientedProgramming.
The difference to TableOrientedProgramming is one of focus:
- SetOrientedProgramming lies the focus on expressivity (in a mathematical sense), whereas
- TableOrientedProgramming strives for high performance with limited expressivity (or at least optimization of special cases), but with sets with high numbers of regular elements (tuples).
- Of course, skeptical table fans are going to ask for an actual example of "limited expressivity". Because representional equivalency can probably be established for the items being compared (ignoring vendor/hardware-imposed limits), it may come down to a debate on style. It could perhaps be argued that tables offer a compact visual representation that raw sets don't.
AnswerMe: does PrologLanguage fit this paradigm?
No, but some extensions do (see link above). You could relax the condition somewhat and say lists are really ordered sets only (in which case LispLanguage jumps into the boat too), but then you lose too much semantic precision, I guess.
See also: ProgrammingParadigm, SetsVersusTypes, SetsAndPolymorphism, SetlLanguage, SetTheory, RelationalAlgebra