Knowledge (XXG)

Generic programming

Source 📝

2250:
pointers to the objects, sort those pointers, and then build the final sorted sequence. If the values are quite small however it is usually fastest to just swap the values in-place as needed. Furthermore, if the parameterized type is already of some pointer-type, then there is no need to build a separate pointer array. Template specialization allows the template creator to write different implementations and to specify the characteristics that the parameterized type(s) must have for each implementation to be used.
897: 2261:) that assumes that copying a parameterizing type is expensive and then create partial specializations for types that are cheap to copy, thus increasing overall efficiency. Clients of such a class template just use specializations of it without needing to know whether the compiler used the primary specialization or some partial specialization in each case. Class templates can also be 5586:
generic in a qualitatively different way from parametrically polymorphic functions: these "functions" (more accurately, type-indexed families of functions) can be applied to values of various types, and although they behave differently for every argument type, little work is needed to add support for
4590:
As with C#, methods and whole types can have one or more type parameters. In the example, TArray is a generic type (defined by the language) and MakeAtLeast a generic method. The available constraints are very similar to the available constraints in C#: any value type, any class, a specific class or
2382:
Also, the implementation source code for the template must be completely available (e.g. included in a header) to the translation unit (source file) using it. Templates, including much of the Standard Library, if not included in header files, cannot be compiled. (This is in contrast to non-templated
291:
combinations to implement. However, in the generic programming approach, each data structure returns a model of an iterator concept (a simple value type that can be dereferenced to retrieve the current value, or changed to point to another value in the sequence) and each algorithm is instead written
860:
construct used above is widely cited as the genericity construct that popularized the notion among programmers and language designers and supports many generic programming idioms. The D programming language also offers fully generic-capable templates based on the C++ precedent but with a simplified
512:
can be viewed as predefined generic types. Every usage of an array or struct type instantiates a new concrete type, or reuses a previous instantiated type. Array element types and struct element types are parameterized types, which are used to instantiate the corresponding generic type. All this is
5462:
This means that a programmer defining a new type can state that this type is to be an instance of one of these special type classes, without providing implementations of the class methods as is usually necessary when declaring class instances. All the necessary methods will be "derived" – that is,
2727:
Combining the above allows generating code based on existing declarations. For example, D serialization frameworks can enumerate a type's members and generate specialized functions for each serialized type to perform serialization and deserialization. User-defined attributes could further indicate
2309:
However, templates are generally considered an improvement over macros for these purposes. Templates are type-safe. Templates avoid some of the common errors found in code that makes heavy use of function-like macros, such as evaluating parameters with side effects twice. Perhaps most importantly,
311:
requirements are explicitly part of the concept definition. This limits the data structures a given algorithm can be applied to and such complexity requirements are a major determinant of data structure choice. Generic programming similarly has been applied in other domains, e.g. graph algorithms.
2355:
So, can derivation be used to reduce the problem of code replicated because templates are used? This would involve deriving a template from an ordinary class. This technique proved successful in curbing code bloat in real use. People who do not use a technique like this have found that replicated
3880:
dialect acquired generics in the Delphi 2007 release, initially only with the (now discontinued) .NET compiler before being added to the native code in the Delphi 2009 release. The semantics and capabilities of Delphi generics are largely modelled on those had by generics in .NET 2.0, though the
2378:
The extra instantiations generated by templates can also cause some debuggers to have difficulty working gracefully with templates. For example, setting a debug breakpoint within a template from a source file may either miss setting the breakpoint in the actual instantiation desired or may set a
532:
When creating container classes in statically typed languages, it is inconvenient to write specific implementations for each datatype contained, especially if the code for each datatype is virtually identical. For example, in C++, this duplication of code can be circumvented by defining a class
306:
data structure-algorithm combinations need be implemented. Several iterator concepts are specified in the STL, each a refinement of more restrictive concepts e.g. forward iterators only provide movement to the next value in a sequence (e.g. suitable for a singly linked list or a stream of input
5587:
a new type. Ralf Hinze (2004) has shown that a similar effect can be achieved for user-defined type classes by certain programming techniques. Other researchers have proposed approaches to this and other kinds of genericity in the context of Haskell and extensions to Haskell (discussed below).
2249:
template function. One of the primary activities that such a function does is to swap or exchange the values in two of the container's positions. If the values are large (in terms of the number of bytes it takes to store each of them), then it is often quicker to first build a separate list of
2325:
Templates in C++ lack many features, which makes implementing them and using them in a straightforward way often impossible. Instead programmers have to rely on complicated tricks which leads to bloated, hard to understand and hard to maintain code. Current developments in the C++ standards
1027:
is a value, a variable, a constant, a type, a subprogram, or even an instance of another, designated, generic unit. For generic formal types, the syntax distinguishes between discrete, floating-point, fixed-point, access (pointer) types, etc. Some formal parameters can have default values.
5603:. The language introduces a special construct in which such polytypic functions can be defined via structural induction over the structure of the pattern functor of a regular datatype. Regular datatypes in PolyP are a subset of Haskell datatypes. A regular datatype t must be of 2399:
Template parameters in D are not restricted to just types and primitive values (as it was in C++ before C++20), but also allow arbitrary compile-time values (such as strings and struct literals), and aliases to arbitrary identifiers, including other templates or template
307:
data), whereas a random-access iterator also provides direct constant-time access to any element of the sequence (e.g. suitable for a vector). An important point is that a data structure will return a model of the most general concept that can be implemented efficiently—
2110:
function template. While this may seem a minor benefit in this isolated example, in the context of a comprehensive library like the STL it allows the programmer to get extensive functionality for a new data type, just by defining a few operators for it. Merely defining
2347:
of the templated class or function for every type parameters used with it. (This is necessary because types in C++ are not all the same size, and the sizes of data fields are important to how classes work.) So the indiscriminate use of templates can lead to
5935:
are defined as a value indexed over the various Haskell type constructors (unit, primitive types, sums, products, and user-defined type constructors). In addition, we can also specify the behaviour of a type-indexed values for a specific constructor using
4602:
implemented generics before Delphi, and with different syntax and semantics. However, since FPC version 2.6.0, the Delphi-style syntax is available when using the {$ mode Delphi} language mode. Thus, Free Pascal code supports generics in either style.
2242:. This allows alternative implementations to be provided based on certain characteristics of the parameterized type that is being instantiated. Template specialization has two purposes: to allow certain forms of optimization, and to reduce code bloat. 2383:
code, which may be compiled to binary, providing only a declarations header file for code using it.) This may be a disadvantage by exposing the implementing code, which removes some abstractions, and could restrict its use in closed-source projects.
2257:. That means that an alternate version of the class template code can be provided when some of the template parameters are known, while leaving other template parameters generic. This can be used, for example, to create a default implementation (the 1688:
The language syntax allows precise specification of constraints on generic formal parameters. For example, it is possible to specify that a generic formal type will only accept a modular type as the actual. It is also possible to express constraints
1004:
has had generics since it was first designed in 1977–1980. The standard library uses generics to provide many services. Ada 2005 adds a comprehensive generic container library to the standard library, which was inspired by C++'s
234:
Generic programming centers around the idea of abstracting from concrete, efficient algorithms to obtain generic algorithms that can be combined with different data representations to produce a wide variety of useful
6557:
array where the array width is given via a parameter. Such an array, combined with a generic wire vector, can make a generic buffer or memory module with an arbitrary bit width out of a single module implementation.
245:
The "generic programming" paradigm is an approach to software decomposition whereby fundamental requirements on types are abstracted from across concrete examples of algorithms and data structures and formalized as
7925: 3110:
and methods. As in C++ and Java, nested generic types such as Dictionary<string, List<int>> are valid types, however are advised against for member signatures in code analysis design rules.
2190:
unless a comparison is provided. Unfortunately, compilers historically generate somewhat esoteric, long, and unhelpful error messages for this sort of error. Ensuring that a certain object adheres to a
2329:
Many compilers historically had poor support for templates, thus the use of templates could have made code somewhat less portable. Support may also be poor when a C++ compiler is being used with a
486:
by default as both passing values to functions and value assignment are type-indifferent and such behavior is often used for abstraction or code terseness, however this is not typically labeled
3098:
with preservation of generic types, and alleviating some of the limits of erasure (such as being unable to create generic arrays). This also means that there is no performance hit from runtime
327:
and not from type theory. Its goal is the incremental construction of systematic catalogs of useful, efficient and abstract algorithms and data structures. Such an undertaking is still a dream.
363:
Following Stepanov, we can define generic programming without mentioning language features: Lift algorithms and data structures from concrete examples to their most general and abstract form.
5622:. These restrictions rule out higher-kinded datatypes and nested datatypes, where the recursive calls are of a different form. The flatten function in PolyP is here provided as an example: 1769:
In this example, Array_Type is constrained by both Index_Type and Element_Type. When instantiating the unit, the programmer must pass an actual array type that satisfies these constraints.
3488:, and the compiler would be unable to find certain possible errors that would otherwise be caught when using generic types. In addition, the method would need to access the array items as 1854:
is a pattern for creating ordinary functions based upon the parameterizing types supplied when instantiated. For example, the C++ Standard Template Library contains the function template
206:
in a more specific sense than the above, to describe a programming paradigm in which fundamental requirements on data types are abstracted from across concrete examples of algorithms and
462:
Genericity is implemented and supported differently in various programming languages; the term "generic" has also been used differently in various programming contexts. For example, in
5982:
are types that are indexed over the type constructors. These can be used to give types to more involved generic values. The resulting type-indexed types can be specialized to any type.
7831: 3118:
keyword including restricting generic types to be value types, to be classes, to have constructors, and to implement interfaces. Below is an example with an interface constraint:
2340:
Compilers can produce confusing, long, and sometimes unhelpful error messages when errors are detected in code that uses SFINAE. This can make templates difficult to develop with.
7895: 6820:
Matthew H. Austern: Generic programming and the STL: using and extending the C++ Standard Template Library. Addison-Wesley Longman Publishing Co., Inc. Boston, MA, USA 1998
7844: 7680: 3039:
in 2004 as part of J2SE 5.0. In Java, generics are only checked at compile time for type correctness. The generic type information is then removed via a process called
3481: 2214:
extends the same concept to classes. A class template specialization is a class. Class templates are often used to make generic containers. For example, the STL has a
1805:
all instances of a generic being exactly the same, it is easier to review and understand programs written by others; there are no "special cases" to take into account.
1787:: the object code for a generic unit can be shared between all instances (unless the programmer requests inlining of subprograms, of course). As further consequences: 502:
where types are always parametric and the actual code on those types is generic. These uses still serve a similar purpose of code-saving and rendering an abstraction.
2739:. For example, given a function that takes a string containing an HTML template and returns equivalent D source code, it is possible to use it in the following way: 2352:, resulting in excessively large executables. However, judicious use of template specialization and derivation can dramatically reduce such code bloat in some cases: 2908:
The formal generic parameters are placeholders for arbitrary class names that will be supplied when a declaration of the generic class is made, as shown in the two
1772:
The disadvantage of this fine-grained control is a complicated syntax, but, because all generic formal parameters are completely defined in the specification, the
7994: 524:
A broad survey of genericity mechanisms in programming languages follows. For a specific survey comparing suitability of mechanisms for generic programming, see.
7929: 1779:
Unlike C++, Ada does not allow specialised generic instances, and requires that all generics be instantiated explicitly. These rules have several consequences:
482:
capacities that, however, are not referred to as such in most Forth texts. Similarly, dynamically typed languages, especially interpreted ones, usually offer
6992:
R. Garcia; J. Ja ̈rvi; A. Lumsdaine; J. Siek; J. Willcock (2005). "An extended comparative study of language support for generic programming (preprint)".
3086:
in November 2005, based on a research prototype from Microsoft Research started in 1999. Although similar to generics in Java, .NET generics do not apply
7824: 8793: 8058: 9164: 8798: 8408: 8270: 6553:
module may take one or more parameters, to which their actual values are assigned upon the instantiation of the module. One example is a generic
8788: 8783: 8414: 7436:. Spring School on Datatype-Generic Programming 2006. Lecture Notes in Computer Science. Vol. 4719. Heidelberg: Springer. pp. 1–71. 7817: 7627: 7343: 7286: 7237: 7069: 6745: 6644: 2313:
There are four primary drawbacks to the use of templates: supported features, compiler support, poor error messages (usually with pre C++20
319:
genericity and templates, it is independent of particular language-technical details. Generic programming pioneer Alexander Stepanov wrote,
8771: 8672: 8599: 8347: 918: 2395:
language supports templates based in design on C++. Most C++ template idioms work in D without alteration, but D adds some functionality:
2326:
exacerbate this problem by making heavy use of these tricks and building a lot of new features for templates on them or with them in mind.
7711: 7674: 7150: 1797: 1039:
parameters for each formal. The generic instance then behaves just like any other unit. It is possible to instantiate generic units at
8067: 7305: 1835: 1040: 3106:. When primitive and value types are used as generic arguments, they get specialized implementations, allowing for efficient generic 7792: 7778: 7742: 7536: 7391: 6688: 2439:
for variable declarations and function return values, which in turn allows "Voldemort types" (types that do not have a global name).
988: 7596: 3511:
A notable behavior of static members in a generic .NET class is static member instantiation per run-time type (see example below).
6968: 969: 8439: 8119: 8063: 1793:
it is possible to instantiate generics at run-time, and at compile time, since no new object code is required for a new instance.
49: 941: 861:
syntax. The Java programming language has provided genericity facilities syntactically based on C++'s since the introduction of
8922: 8299: 8172: 8103: 8038: 7961: 2717: 2254: 1830:
or STL that provides a framework of templates for common data structures and algorithms. Templates in C++ may also be used for
862: 624: 509: 292:
generically with arguments of such iterators, e.g. a pair of iterators pointing to the beginning and end of the subsequence or
3881:
implementation is by necessity quite different. Here's a more or less direct translation of the first C# example shown above:
2991:
can be any other available class. To constrain the set of classes from which valid actual generic parameters can be chosen, a
9039: 8844: 8776: 8738: 8477: 8240: 7870: 7471: 6829:
Jeremy G. Siek, Lie-Quan Lee, Andrew Lumsdaine: The Boost Graph Library: User Guide and Reference Manual. Addison-Wesley 2001
6811:
Alexander Stepanov and Meng Lee: The Standard Template Library. HP Laboratories Technical Report 95-11(R.1), 14 November 1995
6788: 3091: 1808:
all instantiations being explicit, there are no hidden instantiations that might make it difficult to understand the program.
922: 872: 868: 134: 122: 83:, generic programming became part of the repertoire of professional library design. The techniques were further improved and 2723:
String mixins allow evaluating and compiling the contents of a string expression as D code that becomes part of the program.
1811:
Ada does not permit arbitrary computation at compile time, because operations on generic arguments are performed at runtime.
7662: 7217: 948: 8255: 8245: 8023: 7728: 6598: 6543: 3063:
type when they are retrieved from the list, reducing performance compared to other implementations such as C++ templates.
2815: 452: 444: 247: 211: 146: 130: 2302:, before compiling proper; templates are actual real functions. Macros are always expanded inline; templates can also be 254:. Early examples of this programming approach were implemented in Scheme and Ada, although the best known example is the 9215: 8939: 8869: 8717: 8639: 8619: 8549: 8492: 8454: 8444: 8404: 8329: 8265: 8235: 8162: 8151: 8048: 8028: 8003: 7966: 7173: 6499: 2999:
below, the generic constraint dictates that any valid actual generic parameter will be a class that inherits from class
2714:
allow users to attach arbitrary identifiers to declarations, which can then be enumerated using compile-time reflection.
2463: 610:
is a placeholder for whatever type is specified when the list is created. These "containers-of-type-T", commonly called
463: 184: 180: 158: 2443:
Templates in D use a different syntax than in C++: whereas in C++ template parameters are wrapped in angular brackets (
1796:
actual objects corresponding to a generic formal object are always considered to be non-static inside the generic; see
9194: 8594: 8357: 8324: 8219: 8195: 8157: 8137: 8033: 7942: 7920: 7905: 2192: 448: 432: 323:
Generic programming is about abstracting and classifying algorithms and data structures. It gets its inspiration from
154: 138: 57: 2374:
of the template class which would require rewriting of an entire class for a specific template parameters used by it.
955: 907: 5463:
constructed automatically – based on the structure of the type. For example, the following declaration of a type of
8949: 8817: 8541: 8527: 8434: 8394: 8319: 8225: 8205: 8072: 7951: 7885: 6660:
Milner, R.; Morris, L.; Newey, M. (1975). "A Logic for Computable Functions with Reflexive and Polymorphic Types".
2334: 1001: 420: 416: 142: 118: 72: 3469:
error, if the method is called if the type does not support comparison. The interface provides the generic method
2696:
In addition to template metaprogramming, D also provides several features to enable compile-time code generation:
1790:
there is no possibility of code bloat (code bloat is common in C++ and requires special care, as explained below).
926: 911: 9127: 9079: 8991: 8969: 8964: 8892: 8758: 8634: 8399: 8309: 8289: 8275: 7505: 6519: 3501: 3103: 3036: 2459: 2094:
is defined. Common inheritance is not needed for the set of types that can be used, and so it is very similar to
1827: 1006: 412: 255: 176: 150: 53: 7797: 937: 9001: 8665: 8614: 8574: 8517: 8449: 8187: 8018: 7720: 6942: 6608: 6567: 2736: 2392: 2285: 2281: 1831: 440: 107: 7761: 490:
as it's a direct consequence of the dynamic typing system employed by the language. The term has been used in
7013: 6546:
syntactic abstractions also have a connection to genericity – these are in fact a superset of C++ templates.
2265:
which means that an alternate implementation can be provided when all of the parameterizing types are known.
1955:
of this function template, instantiations with specific types, can be called just like an ordinary function:
9154: 9069: 8624: 8604: 8545: 8532: 8512: 8339: 8076: 7980: 7938: 6523: 2455:
due to ambiguity with comparison operators. If there is only one parameter, the parentheses can be omitted.
171: 61: 218:
implemented in terms of these concepts, typically using language genericity mechanisms as described above.
8897: 8753: 8712: 8707: 8584: 8559: 8553: 8497: 8459: 8147: 8142: 8094: 7989: 7890: 7862: 7853: 7437: 6993: 6766: 3095: 2707:
Compile-time reflection allows enumerating and inspecting declarations and their members during compiling.
611: 518: 499: 491: 308: 7640: 7418: 7410: 411:
Genericity facilities have existed in high-level languages since at least the 1970s in languages such as
8887: 8862: 8486: 8482: 8424: 8376: 7946: 4591:
interface, and a class with a parameterless constructor. Multiple constraints act as an additive union.
2711: 2230:
has a set of standard functions associated with it, that work for any compatible parameterizing types.
7456:
Conference proceedings on Object-oriented programming systems, languages and applications - OOPSLA '86
8689: 8629: 8609: 8569: 8371: 8230: 8099: 8086: 7840: 7379: 7057: 2099: 388: 30: 7442: 6771: 2633:
A function that accepts only input ranges can then use the above template in a template constraint:
281:
etc., a direct approach would implement each algorithm specifically for each data structure, giving
102: 9159: 9064: 8917: 8909: 8829: 8658: 8564: 8314: 8294: 8280: 8012: 7880: 7875: 6998: 6918: 6527: 2818:
since the original method and language design. The foundation publications of Eiffel, use the term
1850:
There are many kinds of templates, the most common being function templates and class templates. A
1826:
C++ uses templates to enable generic programming techniques. The C++ Standard Library includes the
191:. (Haskell terminology also uses the term "generic" for a related but somewhat different concept.) 97: 20: 7804: 9142: 9122: 9074: 9049: 8834: 8803: 8381: 8334: 8304: 8250: 8109: 8008: 7900: 7809: 7734: 7705: 7701: 7688: 7477: 7319: 6938: 6880: 6794: 6603: 5921: 5604: 2330: 2132: 962: 339: 203: 2720:(CTFE) allows a subset of D (restricted to safe operations) to be interpreted during compiling. 9029: 8959: 8934: 8748: 8743: 8537: 8429: 8284: 8260: 8200: 8167: 8129: 8114: 8053: 7788: 7774: 7738: 7571: 7532: 7467: 7387: 7353: 7339: 7301: 7282: 7233: 7065: 7049: 6784: 6741: 6684: 6640: 6613: 6554: 3874: 2361: 2136: 876: 356: 166: 126: 7668: 7260: 7086: 5458:, the types whose values can be rendered as strings) have the special property of supporting 2452: 1821: 76: 9174: 9059: 8857: 8419: 8351: 8215: 7956: 7459: 7331: 6914: 6872: 6776: 6634: 3107: 3026: 380: 251: 215: 6761:
Musser, David R.; Stepanov, Alexander A. (1987). "A library of generic algorithms in Ada".
3476:
The above method could also be written without generic types, simply using the non-generic
614:, allow a class to be reused with different datatypes as long as certain contracts such as 9179: 9044: 8996: 8929: 8469: 8343: 8209: 7910: 7422: 7323: 7248: 7206: 5970:. The result is a type or value, depending on which sort of generic definition is applied. 3493: 3099: 3056: 2303: 1839: 505: 428: 89: 7653: 7520: 7357: 7195: 5976:
enables generic definitions be defined by abstracting a type parameter (of a given kind).
2704:
expression allows reading a file from disk and using its contents as a string expression.
2422:
expression allows speculative instantiation to verify an object's traits at compile time.
7620: 7383: 7061: 7037: 6510:
as supported by the GHC ≥ 6.0. It parametrizes by kind as those but offers overloading.
2408: 262:
that is used to decouple sequence data structures and the algorithms operating on them.
9132: 8954: 8944: 8852: 8521: 8177: 8043: 7613: 7560: 7549: 7451: 7429: 6975: 5450:
supports generic programming. Six of the predefined type classes in Haskell (including
3083: 2436: 2155: 880: 619: 207: 65: 6763:
Proceedings of the 1987 annual ACM SIGAda international conference on Ada - SIGAda '87
6542:
provide functors, which are similar to class templates and to Ada's generic packages.
9209: 9054: 8507: 7372: 7038:
Stroustrup, Dos Reis (2003): Concepts - Design choices for template argument checking
6899: 6677: 3877: 2971:
is considered a class, it is not considered a type. However, a generic derivation of
2182:
data unless a comparison (in the form of a functor or function) is provided. E.g.: A
6840: 373:
Other programming paradigms that have been described as generic programming include
64:
that differ only in the set of types on which they operate when used, thus reducing
9011: 8986: 7708:, "Scrap Your Boilerplate: A Practical Design Pattern for Generic Programming," In 7315: 6884: 6863: 5966:
Generic definitions can be used by applying them to a type or kind. This is called
3466: 3457:. The method's type constraint indicates that the method is applicable to any type 3087: 3040: 2735:
expression and compile-time function execution also allow efficiently implementing
2299: 2278: 424: 343: 338:
I believe that iterator theories are as central to Computer Science as theories of
324: 316: 199: 7652:
Johan Jeuring, Sean Leather, José Pedro Magalhães, and Alexey Rodriguez Yakushev.
7481: 6798: 9189: 9184: 9034: 8981: 8808: 8389: 7717:
International Workshop on Types in Language Design and Implementation (TLDI'03),
7609: 7603: 6535: 5925: 5464: 4599: 2215: 2095: 1834:, which is a way of pre-evaluating some of the code at compile-time rather than 896: 879:
2005 have constructs that exploit the support for generics present in Microsoft
456: 403:). For further discussion and comparison of generic programming paradigms, see. 2003:. It then instantiates a version of the function where the parameterizing type 368:
Bjarne Stroustrup, Evolving a language in and for the real world: C++ 1991-2006
9094: 9089: 9006: 8974: 8879: 8822: 7693: 5443: 2349: 2318: 2310:
templates were designed to be applicable to much larger problems than macros.
162: 7184: 2987:
For the list class shown above, an actual generic parameter substituting for
2830:
Generic classes are declared with their class name and a list of one or more
9169: 9147: 9104: 9099: 8766: 8722: 8681: 7585: 7335: 6943:"Scrap Your Boilerplate: A Practical Design Pattern for Generic Programming" 6876: 3485: 2143: 629: 615: 38: 34: 5614:
is the formal type argument in the definition, then all recursive calls to
2343:
Finally, the use of templates requires the compiler to generate a separate
632:
usage of exchangeable sub-classes: for instance, a list of objects of type
6780: 9084: 6717: 3094:. This design choice provides additional functionality, such as allowing 3090:, but implement generics as a first class mechanism in the runtime using 2288:
language). For example, here is a possible implementation of such macro:
1773: 514: 467: 259: 7463: 7714: 7677: 6550: 5917: 5596: 5447: 495: 188: 7495: 7328:
Symbolic and Algebraic Computation: International symposium ISSAC 1988
7174:
C#: Yesterday, Today, and Tomorrow: An Interview with Anders Hejlsberg
644:. Templates can also be used for type-independent functions as in the 7370:
Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1994).
6675:
Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1994).
5963:. Instances are obtained by applying the kind-indexed type to a kind. 2431: 2356:
code can cost megabytes of code space even in moderate size programs.
2314: 1776:
can instantiate generics without looking at the body of the generic.
7330:. Lecture Notes in Computer Science. Vol. 358. pp. 13–25. 7196:
Code Analysis CA1006: Do not nest generic types in member signatures
2744:// Import the contents of example.htt as a string manifest constant. 384:
approach is a lightweight generic programming approach for Haskell.
269:
sequence data structures, e.g. singly linked list, vector etc., and
7747: 7432:(2007). Backhouse, R.; Gibbons, J.; Hinze, R.; Jeuring, J. (eds.). 1506:-- Allows the user to jump between recorded locations in a document 436: 80: 7501: 6539: 3540:// A static variable - will be created for each type on reflection 3047:
implementations, making it unavailable at runtime. For example, a
2333:
that is not C++-aware, or when attempting to use templates across
2086:
are integers, strings, or any other type for which the expression
478:
that expose the compiler behaviour and therefore naturally offers
103:
Modern C++ Design: Generic Programming and Design Patterns Applied
5948:
The resulting type-indexed value can be specialized to any type.
3453:
method allows operation on arrays, with elements of generic type
8702: 6561: 5955:
are types indexed over kinds, defined by giving a case for both
3114:.NET allows six varieties of generic type constraints using the 622:
are kept. This genericity mechanism should not be confused with
400: 8654: 7813: 6662:
Proceedings of the Conference on Proving and Improving Programs
474:
and new implementations for those words on the fly. It has few
8697: 7374:
Design Patterns: Elements of Reusable Object-Oriented Software
5595:
PolyP was the first generic programming language extension to
3636://Static variable - this will be incremented once per instance 3044: 2466:
is defined as any type that satisfies the checks performed by
890: 377:
as described in "Generic Programming – an Introduction". The
8650: 7415: 3496:
to compare two elements. (For value types like types such as
2462:
using trait-based generic programming. For example, an input
240:
Musser, David R.; Stepanov, Alexander A., Generic Programming
7359:
Evolving a language in and for the real world: C++ 1991-2006
7056:. Reading, Massachusetts: Addison-Wesley. pp. 346–348. 6865:
Evolving a language in and for the real world: C++ 1991-2006
710:// is defined in the standard library header <utility> 517:
and the syntax differs from other generic constructs. Some
2090:
is sensible, or more specifically, for any type for which
250:, analogously to the abstraction of algebraic theories in 71:
Generic programming was introduced to the mainstream with
5986:
As an example, the equality function in Generic Haskell:
3504:
conversion, although this can be worked around using the
2458:
Conventionally, D combines the above features to provide
2218:
container. To make a linked list of integers, one writes
1468:-- records a location in the text document we are editing 6639:. Springer Science & Business Media. pp. 9–10. 3696:// at the end of execution, CountedInstances.Counter = 2 2379:
breakpoint in every place the template is instantiated.
707:// A similar, but safer and potentially faster function 470:
can execute code while compiling and one can create new
7249:
https://www.ics.uci.edu/~jmoorkan/vhdlref/generics.html
5559:) being automatically defined for any type of the form 3508:
class, as is done in the standard collection classes.)
2407:
statement provide an alternative to respectively C++'s
2146:
at compile time. As a demonstration, the standard type
2127:
algorithms or to be put inside data structures such as
315:
Although this approach often uses language features of
222:
Stepanov–Musser and other generic programming paradigms
7115:
Object-Oriented Software Construction, second edition,
6564:, being derived from Ada, also has generic abilities. 521:
try to unify built-in and user defined generic types.
7207:
Constraints on Type Parameters (C# Programming Guide)
3669://increase counter by one during object instantiation 2293:#define max(a,b) ((a) < (b) ? (b) : (a)) 1669:-- Now, open the file Document_Name and read it in... 1089:-- a generic formal type; accepts any nonlimited type 56:
programming language in 1973, permits writing common
6913:
Backhouse, Roland; Jansson, Patrik; Jeuring, Johan;
5940:, and reuse one generic definition in another using 3003:. The generic constraint ensures that elements of a 1016:
is a package or a subprogram that takes one or more
9113: 9022: 8908: 8878: 8843: 8731: 8688: 8583: 8468: 8370: 8186: 8128: 8085: 7988: 7979: 7919: 7861: 7852: 7748:
Generic Haskell: a language for generic programming
7151:.NET/C# Generics History: Some Photos From Feb 1999 6581:#define cbrt(x) _Generic((x), long double: cbrtl, \ 6571: 5467:states that it is to be an instance of the classes 5454:, the types that can be compared for equality, and 2932:as they provide real class names to substitute for 2011:, making the equivalent of the following function: 1838:. Using template specialization, C++ Templates are 395:, above, from the lower-level programming language 7681:International Conference on Functional Programming 7371: 6676: 6636:Programming Languages: An Active Learning Approach 2277:function, were previously filled by function-like 2253:Unlike function templates, class templates can be 6969:"What is Generic Programming? (preprint LCSD'05)" 6857: 6855: 6736:Alexander Stepanov; Paul McJones (19 June 2009). 1995:The compiler examines the arguments used to call 351:Alexander Stepanov, An Interview with A. Stepanov 7141:, p. 126, §Item 28: Prefer lists to arrays. 2822:to describe creating and using generic classes. 2098:. A program defining a custom data type can use 7614:Free Pascal Reference guide Chapter 8: Generics 2447:), D uses an exclamation sign and parentheses: 2353: 2174:values. Likewise, other templates that rely on 361: 336: 321: 232: 6703: 6570:supports "type-generic expressions" using the 2995:can be specified. In the declaration of class 2967:Within the Eiffel type system, although class 2370:Templated classes or functions may require an 2195:can alleviate this issue. Languages which use 2154:operator, because there is no strict order on 2106:for that type, thus allowing its use with the 387:In this article we distinguish the high-level 227: 8666: 7825: 3035:, or "containers-of-type-T" was added to the 2792:// Paste the contents of htmlDCode as D code. 1800:in the Wikibook for details and consequences. 87:were introduced in the influential 1994 book 8: 7655:Libraries for Generic Programming in Haskell 7298:"Effective Java: Programming Language Guide" 7261:WG14 N1516 Committee Draft — October 4, 2010 2900:-- Add `new_item' at the end of the list 7232:. Blaine C. Readler, Full Arc Press, 2011. 6967:Dos Reis, Gabriel; Ja ̈rvi, Jaakko (2005). 6522:family support generic programming through 2115:allows a type to be used with the standard 925:. Unsourced material may be challenged and 407:Programming language support for genericity 401:Programming language support for genericity 48:when needed for specific types provided as 8673: 8659: 8651: 7985: 7858: 7832: 7818: 7810: 7661:Dæv Clarke, Johan Jeuring and Andres Löh, 7052:(1994). "15.5 Avoiding Code Replication". 2870:-- The item currently pointed to by cursor 1858:that creates functions that return either 7896:Programming in the large and in the small 7762:Generics in the Java Programming Language 7597:Delphi 2009 Generics and Type Constraints 7574:. An open source generics library for C#. 7550:Introducing Generics in the Microsoft CLR 7502:Collected Papers of Alexander A. Stepanov 7454:(1986). "Genericity versus inheritance". 7441: 6997: 6770: 6716:Musser, David R.; Stepanov, Alexander A. 5599:. In PolyP, generic functions are called 2768:// Transpile the HTML template to D code. 2298:Macros are expanded (copy pasted) by the 2238:A powerful feature of C++'s templates is 989:Learn how and when to remove this message 7161: 5916:Generic Haskell is another extension to 5555:) and a string representation function ( 2306:when the compiler deems it appropriate. 1693:generic formal parameters; for example: 1511:Using an instance of a generic package: 1051:The specification of a generic package: 653:// "&" denotes a reference 423:, and were subsequently adopted by many 332:Alexander Stepanov, Short History of STL 7527:David Vandevoorde, Nicolai M Josuttis, 6625: 2364:, The Design and Evolution of C++, 1994 851:// Output is "Hello, World!". 7641:Eiffel ISO/ECMA specification document 7111:Object-Oriented Software Construction, 5551:This results in an equality function ( 1999:and determines that this is a call to 1035:a generic unit, the programmer passes 7561:More on Generics in the Microsoft CLR 7138: 6920:Generic Programming – an Introduction 5570:The support for derived instances of 3043:, to maintain compatibility with old 1624:-- Initialise the stack of bookmarks: 7: 7769:Maurice Naftalin and Philip Wadler, 6507: 2814:Generic classes have been a part of 2273:Some uses of templates, such as the 923:adding citations to reliable sources 273:algorithms to operate on them, e.g. 113:Such software entities are known as 7408:Gabriel Dos Reis and Jaakko Järvi, 2162:will fail with a compile error, if 1445:Instantiating the generic package: 258:(STL), which developed a theory of 7322:(1989). "Generic programming". In 7300:(third ed.). Addison-Wesley. 5928:. The extensions it provides are: 5567:itself supports those operations. 226:Generic programming is defined in 96:New techniques were introduced by 52:. This approach, pioneered by the 14: 7529:C++ Templates: The Complete Guide 6633:Lee, Kent D. (15 December 2008). 6502:offers generic programming based 4776:// Free Pascal's ObjFPC style 3219:// Change array to { 2, 2, 2, 3 } 2838:has one formal generic parameter 2622:// can get the front of the range 2078:This works whether the arguments 8440:Partitioned global address space 7663:The Generic Haskell user's guide 7218:The Generic Haskell User's Guide 4606:Delphi and Free Pascal example: 3480:type. However, since arrays are 895: 519:extensible programming languages 7785:Java Precisely, Second Edition, 7621:Generics with Delphi 2009 Win32 7054:The Design and Evolution of C++ 6900:"An Interview with A. Stepanov" 6740:. Addison-Wesley Professional. 3082:Generics were added as part of 3059:to convert the elements to the 2834:. In the following code, class 2826:Basic, unconstrained genericity 2718:Compile-time function execution 2470:, which is defined as follows: 2222:. A list of strings is denoted 863:Java Platform, Standard Edition 7771:Java Generics and Collections, 7694:The Haskell 98 Language Report 5178:// example usage, ObjFPC style 4938:// example usage, Delphi style 2445:Template<param1, param2> 1: 8739:Arbitrary-precision or bignum 7800:, 2004 Sun Microsystems, Inc. 7590:Embarcadero Developer Network 7185:Generics in C#, Java, and C++ 6599:Concept (generic programming) 3492:s instead, and would require 3051:is converted to the raw type 3004: 3000: 2996: 2988: 2976: 2972: 2968: 2933: 2925: 2921: 2917: 2913: 2839: 2835: 2403:Template constraints and the 2142:C++ templates are completely 1731:-- can be any nonlimited type 1043:, for example inside a loop. 498:-like languages, which use a 16:Style of computer programming 7967:Uniform Function Call Syntax 7719:2003. (Also see the website 7434:Datatype-generic programming 7411:What is Generic Programming? 7281:(First ed.). O'Reilly. 7228:Verilog by Example, Section 3461:that implements the generic 2559:// can define a range object 2269:Advantages and disadvantages 2210:Another kind of template, a 2186:cannot be used as key for a 1870:could be defined like this: 528:In object-oriented languages 399:used to implement them (see 375:Datatype generic programming 228:Musser & Stepanov (1989) 110:implemented the same ideas. 8435:Parallel programming models 8409:Concurrent constraint logic 7798:Generic Programming in Java 7773:2006, O'Reilly Media, Inc. 7616:, Michaël Van Canneyt, 2007 7586:Delphi 2009 Reviewers Guide 3484:, the casting would not be 1783:the compiler can implement 636:containing objects of type 346:are central to Mathematics. 9234: 8528:Metalinguistic abstraction 8395:Automatic mutual exclusion 7623:, Sébastien DOERAENE, 2008 6704:Musser & Stepanov 1989 6503: 3465:interface. This ensures a 3024: 1819: 1713:-- must be a discrete type 18: 9080:Strongly typed identifier 8400:Choreographic programming 7729:Exploring Generic Haskell 7277:Albahari, Joseph (2022). 7113:Prentice Hall, 1988, and 4595:Genericity in Free Pascal 3037:Java programming language 2930:actual generic parameters 2832:formal generic parameters 2737:domain-specific languages 2460:compile-time polymorphism 2449:Template!(param1, param2) 2102:to define the meaning of 1828:Standard Template Library 1071:-- a generic formal value 1018:generic formal parameters 1007:standard template library 256:Standard Template Library 198:was originally coined by 8450:Relativistic programming 7721:devoted to this research 6609:Template metaprogramming 6578: 5988: 5624: 5477: 4608: 3883: 3693:// main code entry point 3513: 3120: 3009: 2938: 2843: 2741: 2635: 2598:// can invoke popFront() 2472: 2453:C++ parsing difficulties 2290: 2245:For example, consider a 2013: 1957: 1872: 1832:template metaprogramming 1695: 1513: 1447: 1053: 1025:generic formal parameter 650: 535: 513:usually built-in in the 309:computational complexity 37:are written in terms of 19:Not to be confused with 9155:Parametric polymorphism 7669:Generics for the Masses 7531:, 2003 Addison-Wesley. 7500:Alexander A. Stepanov, 7496:generic-programming.org 7336:10.1007/3-540-51084-2_2 6877:10.1145/1238844.1238848 6738:Elements of Programming 6524:parametric polymorphism 3913://for IComparer<> 3102:and normally expensive 3055:. The compiler inserts 3007:can in fact be sorted. 2920:are other class names. 2762:"example.htt" 2372:explicit specialization 2240:template specialization 2234:Template specialization 296:to process. Thus, only 172:parametric polymorphism 8460:Structured concurrency 7845:Comparison by language 7421:28 August 2019 at the 7296:Bloch, Joshua (2018). 7230:The Rest for Reference 7087:"Voldemort Types in D" 2983:Constrained genericity 2979:is considered a type. 2367: 2259:primary specialization 1866:whichever is larger. 1798:Generic formal objects 875:(formerly Chrome) and 625:inclusion polymorphism 500:structural type system 492:functional programming 371: 354: 335: 243: 8425:Multitier programming 8241:Interface description 7841:Programming paradigms 7658:. Utrecht University. 7630:, Felix COLIBRI, 2008 7579:Delphi, Object Pascal 7127:Eiffel: The Language, 6839:Stepanov, Alexander. 6781:10.1145/317500.317529 5438:Genericity in Haskell 5214:// required in ObjFPC 3579:// simple constructor 2728:serialization rules. 2583:// can test for empty 2255:partially specialized 2178:cannot be applied to 1684:Advantages and limits 938:"Generic programming" 431:languages, including 397:genericity mechanisms 389:programming paradigms 42:to-be-specified-later 7604:Delphi 2009 Generics 7458:. pp. 391–405. 7129:Prentice Hall, 1991. 7117:Prentice Hall, 1997. 6981:on 25 December 2005. 6898:Lo Russo, Graziano. 6862:Stroustrup, Bjarne. 6842:Short History of STL 6765:. pp. 216–225. 5578:makes their methods 5433:Functional languages 5328:TBGenericClassString 5295:TBGenericClassString 5247:TBGenericClassString 3870:Genericity in Delphi 3654://simple constructor 3463:IComparable<T> 2810:Genericity in Eiffel 2150:does not define the 2100:operator overloading 919:improve this section 169:. They are known as 31:computer programming 9216:Generic programming 9160:Primitive data type 9065:Recursive data type 8918:Algebraic data type 8794:Quadruple precision 8565:Self-modifying code 8173:Probabilistic logic 8104:Functional reactive 8059:Expression-oriented 8013:Partial application 7710:Proceedings of the 7673:Proceedings of the 7552:," September 2003, 7521:Templates Revisited 7464:10.1145/28697.28738 7384:1995dper.book.....G 7279:C# 10 in a Nutshell 7062:1994dec..book.....S 6939:Peyton Jones, Simon 6719:Generic Programming 5974:Generic abstraction 5968:generic application 5933:Type-indexed values 5618:must have the form 3895:{$ APPTYPE CONSOLE} 3067:Genericity in .NET 2910:generic derivations 883:since version 2.0. 791:"Hello, " 393:generic programming 265:For example, given 196:generic programming 98:Andrei Alexandrescu 85:parameterized types 27:Generic programming 21:Genetic programming 9123:Abstract data type 8804:Extended precision 8763:Reduced precision 8478:Attribute-oriented 8251:List comprehension 8196:Algebraic modeling 8009:Anonymous function 7901:Design by contract 7871:Jackson structures 7805:Java Generics FAQs 7735:Utrecht University 7706:Simon Peyton Jones 7689:Simon Peyton Jones 7619:Delphi for Win32: 7378:. Addison-Wesley. 7354:Stroustrup, Bjarne 7050:Stroustrup, Bjarne 6683:. Addison-Wesley. 6604:Partial evaluation 5980:Type-indexed types 5953:Kind-indexed types 5922:Utrecht University 5460:derived instances. 3516:// A generic class 3104:boxing conversions 3084:.NET Framework 2.0 3049:List<String> 2993:generic constraint 2451:. This avoids the 2263:fully specialized, 2224:list<string> 2137:associative arrays 1846:Technical overview 770:"World!" 562:// Class contents. 494:, specifically in 210:and formalized as 204:Alexander Stepanov 9203: 9202: 8935:Associative array 8799:Octuple precision 8648: 8647: 8538:Program synthesis 8430:Organic computing 8366: 8365: 8271:Non-English-based 8246:Language-oriented 8024:Purely functional 7975: 7974: 7803:Angelika Langer, 7733:PhD thesis, 2004 7626:Delphi for .NET: 7588:," October 2008, 7570:M. Aamir Maniar, 7563:," October 2003, 7345:978-3-540-51084-0 7288:978-1-098-12195-2 7238:978-0-9834973-0-1 7071:978-81-317-1608-3 6915:Meertens, Lambert 6747:978-0-321-63537-2 6646:978-0-387-79422-8 6614:Type polymorphism 6518:Languages in the 5938:constructor cases 5310:TAGenericClassInt 5283:TAGenericClassInt 5220:TAGenericClassInt 3506:Comparer<T> 3261:// Print results. 2879:-- Element change 2435:expression allow 2362:Bjarne Stroustrup 2284:(a legacy of the 1852:function template 999: 998: 991: 973: 877:Visual Basic .NET 472:compiler keywords 357:Bjarne Stroustrup 216:generic functions 167:Visual Basic .NET 100:in his 2001 book 9223: 9175:Type constructor 9060:Opaque data type 8992:Record or Struct 8789:Double precision 8784:Single precision 8675: 8668: 8661: 8652: 8550:by demonstration 8455:Service-oriented 8445:Process-oriented 8420:Macroprogramming 8405:Concurrent logic 8276:Page description 8266:Natural language 8236:Grammar-oriented 8163:Nondeterministic 8152:Constraint logic 8054:Point-free style 8049:Functional logic 7986: 7957:Immutable object 7876:Block-structured 7859: 7834: 7827: 7820: 7811: 7787:2005 MIT Press. 7504:(creator of the 7485: 7447: 7445: 7397: 7377: 7366: 7365:. ACM HOPL 2007. 7364: 7349: 7311: 7292: 7263: 7258: 7252: 7246: 7240: 7226: 7220: 7215: 7209: 7204: 7198: 7193: 7187: 7182: 7176: 7171: 7165: 7159: 7153: 7148: 7142: 7136: 7130: 7124: 7118: 7108: 7102: 7101: 7099: 7097: 7085:Bright, Walter. 7082: 7076: 7075: 7046: 7040: 7035: 7029: 7028: 7026: 7024: 7010: 7004: 7003: 7001: 6989: 6983: 6982: 6980: 6974:. Archived from 6973: 6964: 6958: 6957: 6955: 6953: 6947: 6941:(January 2003). 6934: 6928: 6927: 6925: 6910: 6904: 6903: 6895: 6889: 6888: 6870: 6859: 6850: 6849: 6847: 6836: 6830: 6827: 6821: 6818: 6812: 6809: 6803: 6802: 6774: 6758: 6752: 6751: 6733: 6727: 6726: 6724: 6713: 6707: 6701: 6695: 6694: 6682: 6672: 6666: 6665: 6657: 6651: 6650: 6630: 6588: 6587:float: cbrtf)(x) 6585: 6584:default: cbrt, \ 6582: 6575: 6574: 6490: 6487: 6484: 6481: 6478: 6475: 6472: 6469: 6466: 6463: 6460: 6457: 6454: 6451: 6448: 6445: 6442: 6439: 6436: 6433: 6430: 6427: 6424: 6421: 6418: 6415: 6412: 6409: 6406: 6403: 6400: 6397: 6394: 6391: 6388: 6385: 6382: 6379: 6376: 6373: 6370: 6367: 6364: 6361: 6358: 6355: 6352: 6349: 6346: 6343: 6340: 6337: 6334: 6331: 6328: 6325: 6322: 6319: 6316: 6313: 6310: 6307: 6304: 6301: 6298: 6295: 6292: 6289: 6286: 6283: 6280: 6277: 6274: 6271: 6268: 6265: 6262: 6259: 6256: 6253: 6250: 6247: 6244: 6241: 6238: 6235: 6232: 6229: 6226: 6223: 6220: 6217: 6214: 6211: 6208: 6205: 6202: 6199: 6196: 6193: 6190: 6187: 6184: 6181: 6178: 6175: 6172: 6169: 6166: 6163: 6160: 6157: 6154: 6151: 6148: 6145: 6142: 6139: 6136: 6133: 6130: 6127: 6124: 6121: 6118: 6115: 6112: 6109: 6106: 6103: 6100: 6097: 6094: 6091: 6088: 6085: 6082: 6079: 6076: 6073: 6070: 6067: 6064: 6061: 6058: 6055: 6052: 6049: 6046: 6043: 6040: 6037: 6034: 6031: 6028: 6025: 6022: 6019: 6016: 6013: 6010: 6007: 6004: 6001: 5998: 5995: 5992: 5907: 5904: 5901: 5898: 5895: 5892: 5889: 5886: 5883: 5880: 5877: 5874: 5871: 5868: 5865: 5862: 5859: 5856: 5853: 5850: 5847: 5844: 5841: 5838: 5835: 5832: 5829: 5826: 5823: 5820: 5817: 5814: 5811: 5808: 5805: 5802: 5799: 5796: 5793: 5790: 5787: 5784: 5781: 5778: 5775: 5772: 5769: 5766: 5763: 5760: 5757: 5754: 5751: 5748: 5745: 5742: 5739: 5736: 5733: 5730: 5727: 5724: 5721: 5718: 5715: 5712: 5709: 5706: 5703: 5700: 5697: 5694: 5691: 5688: 5685: 5682: 5679: 5676: 5673: 5670: 5667: 5664: 5661: 5658: 5655: 5652: 5649: 5646: 5643: 5640: 5637: 5634: 5631: 5628: 5585: 5581: 5577: 5573: 5566: 5562: 5558: 5554: 5547: 5544: 5541: 5538: 5535: 5532: 5529: 5526: 5523: 5520: 5517: 5514: 5511: 5508: 5505: 5502: 5499: 5496: 5493: 5490: 5487: 5484: 5481: 5474: 5470: 5457: 5453: 5428: 5425: 5422: 5419: 5416: 5413: 5410: 5407: 5404: 5401: 5398: 5395: 5392: 5389: 5386: 5383: 5380: 5377: 5374: 5371: 5368: 5365: 5362: 5359: 5356: 5353: 5350: 5347: 5344: 5341: 5338: 5335: 5332: 5329: 5326: 5323: 5320: 5317: 5314: 5311: 5308: 5305: 5302: 5299: 5296: 5293: 5290: 5287: 5284: 5281: 5278: 5275: 5272: 5269: 5266: 5263: 5260: 5257: 5254: 5251: 5248: 5245: 5242: 5239: 5236: 5233: 5230: 5227: 5224: 5221: 5218: 5215: 5212: 5209: 5206: 5203: 5200: 5197: 5194: 5191: 5188: 5185: 5182: 5179: 5176: 5173: 5170: 5167: 5164: 5161: 5158: 5155: 5152: 5149: 5146: 5143: 5140: 5137: 5134: 5131: 5128: 5125: 5122: 5119: 5116: 5113: 5110: 5107: 5104: 5101: 5098: 5095: 5092: 5089: 5086: 5083: 5080: 5077: 5074: 5071: 5068: 5065: 5062: 5059: 5056: 5053: 5050: 5047: 5044: 5041: 5038: 5035: 5032: 5029: 5026: 5023: 5020: 5017: 5014: 5011: 5008: 5005: 5002: 4999: 4996: 4993: 4990: 4987: 4984: 4981: 4978: 4975: 4972: 4969: 4966: 4963: 4960: 4957: 4954: 4951: 4948: 4945: 4942: 4939: 4936: 4933: 4930: 4927: 4924: 4921: 4918: 4915: 4912: 4909: 4906: 4903: 4900: 4897: 4894: 4891: 4888: 4885: 4882: 4879: 4876: 4873: 4870: 4867: 4864: 4861: 4858: 4855: 4852: 4849: 4846: 4843: 4840: 4837: 4834: 4831: 4828: 4825: 4822: 4819: 4816: 4813: 4810: 4807: 4804: 4801: 4798: 4795: 4792: 4789: 4786: 4783: 4780: 4777: 4774: 4771: 4768: 4765: 4762: 4759: 4756: 4753: 4750: 4747: 4744: 4741: 4738: 4735: 4732: 4729: 4726: 4723: 4720: 4717: 4714: 4711: 4708: 4705: 4702: 4699: 4696: 4693: 4690: 4687: 4684: 4681: 4678: 4675: 4672: 4669: 4666: 4663: 4660: 4657: 4654: 4651: 4648: 4645: 4642: 4639: 4636: 4633: 4630: 4627: 4624: 4621: 4618: 4615: 4612: 4586: 4583: 4580: 4577: 4574: 4571: 4568: 4565: 4562: 4559: 4556: 4553: 4550: 4547: 4544: 4541: 4538: 4535: 4532: 4529: 4526: 4523: 4520: 4517: 4514: 4511: 4508: 4505: 4502: 4499: 4496: 4493: 4490: 4487: 4484: 4481: 4478: 4475: 4472: 4469: 4466: 4463: 4460: 4457: 4454: 4451: 4448: 4445: 4442: 4439: 4436: 4433: 4430: 4427: 4424: 4421: 4418: 4415: 4412: 4409: 4406: 4403: 4400: 4397: 4394: 4391: 4388: 4385: 4382: 4379: 4376: 4373: 4370: 4367: 4364: 4361: 4358: 4355: 4352: 4349: 4346: 4343: 4340: 4337: 4334: 4331: 4328: 4325: 4322: 4319: 4316: 4313: 4310: 4307: 4304: 4301: 4298: 4295: 4292: 4289: 4286: 4283: 4280: 4277: 4274: 4271: 4268: 4265: 4262: 4259: 4256: 4253: 4250: 4247: 4244: 4241: 4238: 4235: 4232: 4229: 4226: 4223: 4220: 4217: 4214: 4211: 4208: 4205: 4202: 4199: 4196: 4193: 4190: 4187: 4184: 4181: 4178: 4175: 4172: 4169: 4166: 4163: 4160: 4157: 4154: 4151: 4148: 4145: 4142: 4139: 4136: 4133: 4130: 4127: 4124: 4121: 4118: 4115: 4112: 4109: 4106: 4103: 4100: 4097: 4094: 4091: 4088: 4085: 4082: 4079: 4076: 4073: 4070: 4067: 4064: 4061: 4058: 4055: 4052: 4049: 4046: 4043: 4040: 4037: 4034: 4031: 4028: 4025: 4022: 4019: 4016: 4013: 4010: 4007: 4004: 4001: 3998: 3995: 3992: 3989: 3986: 3983: 3980: 3977: 3974: 3971: 3968: 3965: 3962: 3959: 3956: 3953: 3950: 3947: 3944: 3941: 3938: 3935: 3932: 3929: 3926: 3923: 3920: 3917: 3914: 3911: 3908: 3905: 3902: 3899: 3896: 3893: 3890: 3887: 3865: 3862: 3859: 3856: 3853: 3850: 3847: 3844: 3841: 3838: 3835: 3832: 3829: 3826: 3823: 3820: 3817: 3814: 3811: 3808: 3805: 3802: 3799: 3796: 3793: 3790: 3787: 3784: 3781: 3778: 3775: 3772: 3769: 3766: 3763: 3760: 3757: 3754: 3751: 3748: 3745: 3742: 3739: 3736: 3733: 3730: 3727: 3724: 3721: 3718: 3715: 3712: 3709: 3706: 3703: 3700: 3697: 3694: 3691: 3688: 3685: 3682: 3679: 3676: 3673: 3672:CountedInstances 3670: 3667: 3664: 3661: 3660:CountedInstances 3658: 3655: 3652: 3649: 3646: 3643: 3640: 3637: 3634: 3631: 3630:CountedInstances 3628: 3625: 3622: 3619: 3616: 3613: 3610: 3607: 3604: 3601: 3598: 3595: 3592: 3589: 3586: 3583: 3580: 3577: 3574: 3571: 3568: 3565: 3564:// a data member 3562: 3559: 3558:CountedInstances 3556: 3553: 3550: 3547: 3546:CountedInstances 3544: 3541: 3538: 3535: 3532: 3529: 3526: 3523: 3520: 3517: 3507: 3500:this requires a 3499: 3491: 3479: 3472: 3464: 3460: 3456: 3452: 3445: 3442: 3439: 3436: 3433: 3430: 3427: 3424: 3421: 3418: 3415: 3412: 3409: 3406: 3403: 3400: 3397: 3394: 3391: 3388: 3385: 3382: 3379: 3376: 3373: 3370: 3367: 3364: 3361: 3358: 3355: 3352: 3349: 3346: 3343: 3340: 3337: 3334: 3331: 3328: 3325: 3322: 3319: 3316: 3313: 3310: 3307: 3304: 3301: 3298: 3295: 3292: 3289: 3286: 3283: 3280: 3277: 3274: 3271: 3268: 3265: 3262: 3259: 3256: 3253: 3250: 3247: 3244: 3241: 3238: 3235: 3232: 3229: 3226: 3223: 3220: 3217: 3214: 3211: 3208: 3205: 3202: 3199: 3196: 3193: 3190: 3187: 3184: 3181: 3178: 3175: 3172: 3169: 3166: 3163: 3160: 3157: 3154: 3151: 3148: 3145: 3142: 3139: 3136: 3133: 3130: 3127: 3124: 3117: 3079: 3078: 3074: 3062: 3054: 3050: 3031:Support for the 3027:Generics in Java 3021:Generics in Java 3016: 3013: 3006: 3002: 2998: 2990: 2978: 2974: 2970: 2963: 2960: 2957: 2954: 2953:list_of_deposits 2951: 2948: 2945: 2942: 2941:list_of_accounts 2935: 2927: 2923: 2919: 2915: 2904: 2901: 2898: 2895: 2892: 2889: 2886: 2883: 2880: 2877: 2874: 2871: 2868: 2865: 2862: 2859: 2856: 2853: 2850: 2847: 2841: 2837: 2805: 2802: 2799: 2796: 2793: 2790: 2787: 2784: 2781: 2778: 2775: 2772: 2769: 2766: 2763: 2760: 2757: 2754: 2751: 2748: 2745: 2734: 2703: 2687: 2684: 2681: 2678: 2675: 2672: 2669: 2666: 2663: 2660: 2657: 2654: 2651: 2648: 2645: 2642: 2639: 2629: 2626: 2623: 2620: 2617: 2614: 2611: 2608: 2605: 2602: 2599: 2596: 2593: 2590: 2587: 2584: 2581: 2578: 2575: 2572: 2569: 2566: 2563: 2560: 2557: 2554: 2551: 2548: 2545: 2542: 2539: 2536: 2533: 2530: 2527: 2524: 2521: 2518: 2515: 2512: 2509: 2506: 2503: 2500: 2497: 2494: 2491: 2488: 2485: 2482: 2479: 2476: 2469: 2450: 2446: 2434: 2429:keyword and the 2428: 2421: 2414: 2406: 2365: 2304:inline functions 2294: 2276: 2248: 2229: 2225: 2221: 2207:values as keys. 2206: 2202: 2198: 2189: 2185: 2181: 2177: 2173: 2161: 2153: 2149: 2130: 2126: 2122: 2118: 2114: 2109: 2105: 2093: 2089: 2085: 2081: 2074: 2071: 2068: 2065: 2062: 2059: 2056: 2053: 2050: 2047: 2044: 2041: 2038: 2035: 2032: 2029: 2026: 2023: 2020: 2017: 2010: 2006: 2002: 1998: 1991: 1988: 1985: 1982: 1979: 1976: 1973: 1970: 1967: 1964: 1961: 1948: 1945: 1942: 1939: 1936: 1933: 1930: 1927: 1924: 1921: 1918: 1915: 1912: 1909: 1906: 1903: 1900: 1897: 1894: 1891: 1888: 1885: 1882: 1879: 1876: 1869: 1857: 1816:Templates in C++ 1765: 1762: 1759: 1756: 1753: 1750: 1747: 1744: 1741: 1738: 1735: 1732: 1729: 1726: 1723: 1720: 1717: 1714: 1711: 1708: 1705: 1702: 1699: 1679: 1676: 1673: 1670: 1667: 1664: 1661: 1658: 1655: 1652: 1649: 1646: 1643: 1640: 1637: 1634: 1631: 1628: 1625: 1622: 1619: 1616: 1613: 1610: 1607: 1604: 1601: 1598: 1595: 1592: 1589: 1586: 1583: 1580: 1577: 1574: 1571: 1568: 1565: 1562: 1559: 1556: 1553: 1552:Unbounded_String 1550: 1547: 1544: 1541: 1538: 1535: 1532: 1529: 1526: 1523: 1520: 1517: 1507: 1504: 1500: 1497: 1494: 1490: 1487: 1484: 1481: 1478: 1475: 1472: 1469: 1466: 1463: 1460: 1457: 1454: 1451: 1441: 1438: 1435: 1432: 1429: 1426: 1423: 1420: 1417: 1414: 1411: 1408: 1405: 1402: 1399: 1396: 1393: 1390: 1387: 1384: 1381: 1378: 1375: 1372: 1369: 1366: 1363: 1360: 1357: 1354: 1351: 1348: 1345: 1342: 1339: 1336: 1333: 1330: 1327: 1324: 1321: 1318: 1315: 1312: 1309: 1306: 1303: 1300: 1297: 1294: 1291: 1288: 1285: 1282: 1279: 1276: 1273: 1270: 1267: 1264: 1261: 1258: 1255: 1252: 1249: 1246: 1243: 1240: 1237: 1234: 1231: 1228: 1225: 1222: 1219: 1216: 1213: 1210: 1207: 1204: 1201: 1198: 1195: 1192: 1189: 1186: 1183: 1180: 1177: 1174: 1171: 1168: 1165: 1162: 1159: 1156: 1153: 1150: 1147: 1144: 1141: 1138: 1135: 1132: 1129: 1126: 1123: 1120: 1117: 1114: 1111: 1108: 1105: 1102: 1099: 1096: 1093: 1090: 1087: 1084: 1081: 1078: 1075: 1072: 1069: 1066: 1063: 1060: 1057: 994: 987: 983: 980: 974: 972: 931: 899: 891: 859: 852: 849: 846: 843: 840: 837: 834: 831: 828: 825: 822: 819: 816: 813: 810: 807: 804: 801: 798: 795: 792: 789: 786: 783: 780: 777: 774: 771: 768: 765: 762: 759: 756: 753: 750: 747: 744: 741: 738: 735: 732: 729: 726: 723: 720: 717: 714: 711: 708: 705: 702: 699: 696: 693: 690: 687: 684: 681: 678: 675: 672: 669: 666: 663: 660: 657: 654: 647: 643: 639: 635: 609: 602: 599: 596: 593: 590: 587: 584: 581: 578: 575: 572: 569: 566: 563: 560: 557: 554: 551: 548: 545: 542: 539: 369: 352: 333: 305: 290: 280: 276: 252:abstract algebra 241: 106:. Subsequently, 9233: 9232: 9226: 9225: 9224: 9222: 9221: 9220: 9206: 9205: 9204: 9199: 9180:Type conversion 9115: 9109: 9045:Enumerated type 9018: 8904: 8898:null-terminated 8874: 8839: 8727: 8684: 8679: 8649: 8644: 8586: 8579: 8470:Metaprogramming 8464: 8380: 8375: 8362: 8344:Graph rewriting 8182: 8158:Inductive logic 8138:Abductive logic 8124: 8081: 8044:Dependent types 7992: 7971: 7943:Prototype-based 7923: 7921:Object-oriented 7915: 7911:Nested function 7906:Invariant-based 7848: 7838: 7783:Peter Sestoft, 7628:Delphi Generics 7599:," October 2008 7595:Craig Stuntz, " 7518:Walter Bright, 7492: 7474: 7452:Meyer, Bertrand 7450: 7443:10.1.1.159.1228 7430:Gibbons, Jeremy 7428: 7423:Wayback Machine 7405: 7403:Further reading 7400: 7394: 7369: 7362: 7352: 7346: 7320:Stepanov, A. A. 7314: 7308: 7295: 7289: 7276: 7272: 7267: 7266: 7259: 7255: 7247: 7243: 7227: 7223: 7216: 7212: 7205: 7201: 7194: 7190: 7183: 7179: 7172: 7168: 7160: 7156: 7149: 7145: 7137: 7133: 7125: 7121: 7109: 7105: 7095: 7093: 7084: 7083: 7079: 7072: 7048: 7047: 7043: 7036: 7032: 7022: 7020: 7014:"Generic Units" 7012: 7011: 7007: 6991: 6990: 6986: 6978: 6971: 6966: 6965: 6961: 6951: 6949: 6945: 6936: 6935: 6931: 6923: 6912: 6911: 6907: 6897: 6896: 6892: 6868: 6861: 6860: 6853: 6845: 6838: 6837: 6833: 6828: 6824: 6819: 6815: 6810: 6806: 6791: 6772:10.1.1.588.7431 6760: 6759: 6755: 6748: 6735: 6734: 6730: 6722: 6715: 6714: 6710: 6702: 6698: 6691: 6679:Design Patterns 6674: 6673: 6669: 6659: 6658: 6654: 6647: 6632: 6631: 6627: 6622: 6595: 6590: 6589: 6586: 6583: 6580: 6572: 6516: 6514:Other languages 6508:Generic Haskell 6497: 6492: 6491: 6488: 6485: 6482: 6479: 6476: 6473: 6470: 6467: 6464: 6461: 6458: 6455: 6452: 6449: 6446: 6443: 6440: 6437: 6434: 6431: 6428: 6425: 6422: 6419: 6416: 6413: 6410: 6407: 6404: 6401: 6398: 6395: 6392: 6389: 6386: 6383: 6380: 6377: 6374: 6371: 6368: 6365: 6362: 6359: 6356: 6353: 6350: 6347: 6344: 6341: 6338: 6335: 6332: 6329: 6326: 6323: 6320: 6317: 6314: 6311: 6308: 6305: 6302: 6299: 6296: 6293: 6290: 6287: 6284: 6281: 6278: 6275: 6272: 6269: 6266: 6263: 6260: 6257: 6254: 6251: 6248: 6245: 6242: 6239: 6236: 6233: 6230: 6227: 6224: 6221: 6218: 6215: 6212: 6209: 6206: 6203: 6200: 6197: 6194: 6191: 6188: 6185: 6182: 6179: 6176: 6173: 6170: 6167: 6164: 6161: 6158: 6155: 6152: 6149: 6146: 6143: 6140: 6137: 6134: 6131: 6128: 6125: 6122: 6119: 6116: 6113: 6110: 6107: 6104: 6101: 6098: 6095: 6092: 6089: 6086: 6083: 6080: 6077: 6074: 6071: 6068: 6065: 6062: 6059: 6056: 6053: 6050: 6047: 6044: 6041: 6038: 6035: 6032: 6029: 6026: 6023: 6020: 6017: 6014: 6011: 6008: 6005: 6002: 5999: 5996: 5993: 5990: 5920:, developed at 5914: 5912:Generic Haskell 5909: 5908: 5905: 5902: 5899: 5896: 5893: 5890: 5887: 5884: 5881: 5878: 5875: 5872: 5869: 5866: 5863: 5860: 5857: 5854: 5851: 5848: 5845: 5842: 5839: 5836: 5833: 5830: 5827: 5824: 5821: 5818: 5815: 5812: 5809: 5806: 5803: 5800: 5797: 5794: 5791: 5788: 5785: 5782: 5779: 5776: 5773: 5770: 5767: 5764: 5761: 5758: 5755: 5752: 5749: 5746: 5743: 5740: 5737: 5734: 5731: 5728: 5725: 5722: 5719: 5716: 5713: 5710: 5707: 5704: 5701: 5698: 5695: 5692: 5689: 5686: 5683: 5680: 5677: 5674: 5671: 5668: 5665: 5662: 5659: 5656: 5653: 5650: 5647: 5644: 5641: 5638: 5635: 5632: 5629: 5626: 5593: 5583: 5579: 5575: 5571: 5564: 5560: 5556: 5552: 5549: 5548: 5545: 5542: 5539: 5536: 5533: 5530: 5527: 5524: 5521: 5518: 5515: 5512: 5509: 5506: 5503: 5500: 5497: 5494: 5491: 5488: 5485: 5482: 5479: 5472: 5468: 5455: 5451: 5440: 5435: 5430: 5429: 5426: 5423: 5420: 5417: 5414: 5411: 5408: 5405: 5402: 5399: 5396: 5393: 5390: 5388:'hello' 5387: 5384: 5381: 5378: 5375: 5372: 5369: 5366: 5363: 5360: 5357: 5354: 5351: 5348: 5345: 5342: 5339: 5336: 5333: 5330: 5327: 5324: 5321: 5318: 5315: 5312: 5309: 5306: 5303: 5300: 5297: 5294: 5291: 5288: 5285: 5282: 5279: 5276: 5273: 5270: 5267: 5264: 5261: 5258: 5255: 5252: 5249: 5246: 5243: 5240: 5237: 5234: 5231: 5228: 5225: 5222: 5219: 5216: 5213: 5210: 5207: 5204: 5201: 5198: 5195: 5193:{$ mode objfpc} 5192: 5189: 5186: 5183: 5180: 5177: 5174: 5171: 5168: 5165: 5162: 5159: 5156: 5153: 5150: 5147: 5144: 5141: 5138: 5136:'hello' 5135: 5132: 5129: 5126: 5123: 5120: 5117: 5114: 5111: 5108: 5105: 5102: 5099: 5096: 5093: 5090: 5087: 5084: 5081: 5078: 5075: 5072: 5069: 5066: 5063: 5060: 5057: 5054: 5051: 5048: 5045: 5042: 5039: 5036: 5033: 5030: 5027: 5024: 5021: 5018: 5015: 5012: 5009: 5006: 5003: 5000: 4997: 4994: 4991: 4988: 4985: 4982: 4979: 4976: 4973: 4970: 4967: 4964: 4961: 4958: 4955: 4953:{$ mode delphi} 4952: 4949: 4946: 4943: 4940: 4937: 4934: 4931: 4928: 4925: 4922: 4919: 4916: 4913: 4910: 4907: 4904: 4901: 4898: 4895: 4892: 4889: 4886: 4883: 4880: 4877: 4874: 4871: 4868: 4865: 4862: 4859: 4856: 4853: 4850: 4847: 4844: 4841: 4838: 4835: 4832: 4829: 4826: 4823: 4820: 4817: 4814: 4811: 4808: 4805: 4802: 4799: 4796: 4793: 4791:{$ mode objfpc} 4790: 4787: 4784: 4781: 4778: 4775: 4772: 4769: 4766: 4763: 4760: 4757: 4754: 4751: 4748: 4745: 4742: 4739: 4736: 4733: 4730: 4727: 4724: 4721: 4718: 4715: 4712: 4709: 4706: 4703: 4700: 4697: 4694: 4691: 4688: 4685: 4682: 4679: 4676: 4673: 4670: 4667: 4664: 4661: 4658: 4655: 4652: 4649: 4646: 4643: 4640: 4637: 4634: 4631: 4628: 4626:{$ mode delphi} 4625: 4622: 4619: 4616: 4613: 4611:// Delphi style 4610: 4597: 4588: 4587: 4584: 4581: 4578: 4575: 4572: 4569: 4566: 4563: 4560: 4557: 4554: 4551: 4548: 4545: 4542: 4539: 4536: 4533: 4530: 4527: 4524: 4521: 4518: 4515: 4512: 4509: 4506: 4503: 4500: 4497: 4494: 4491: 4488: 4485: 4482: 4479: 4476: 4473: 4470: 4467: 4464: 4461: 4458: 4455: 4452: 4449: 4446: 4443: 4440: 4437: 4434: 4431: 4428: 4425: 4422: 4419: 4416: 4413: 4410: 4407: 4404: 4401: 4398: 4395: 4392: 4389: 4386: 4383: 4380: 4377: 4374: 4371: 4368: 4365: 4362: 4359: 4356: 4353: 4350: 4347: 4344: 4341: 4338: 4335: 4332: 4329: 4326: 4323: 4320: 4317: 4314: 4311: 4308: 4305: 4302: 4299: 4296: 4293: 4290: 4287: 4284: 4281: 4278: 4275: 4272: 4269: 4266: 4263: 4260: 4257: 4254: 4251: 4248: 4245: 4242: 4239: 4236: 4233: 4230: 4227: 4224: 4221: 4218: 4215: 4212: 4209: 4206: 4203: 4200: 4197: 4194: 4191: 4188: 4185: 4182: 4179: 4176: 4173: 4170: 4167: 4164: 4161: 4158: 4155: 4152: 4149: 4146: 4143: 4140: 4137: 4134: 4131: 4128: 4125: 4122: 4119: 4116: 4113: 4110: 4107: 4104: 4101: 4098: 4095: 4092: 4089: 4086: 4083: 4080: 4077: 4074: 4071: 4068: 4065: 4062: 4059: 4056: 4053: 4050: 4047: 4044: 4041: 4038: 4035: 4032: 4029: 4026: 4023: 4020: 4017: 4014: 4011: 4008: 4005: 4002: 3999: 3996: 3993: 3990: 3987: 3984: 3981: 3978: 3975: 3972: 3969: 3966: 3963: 3960: 3957: 3954: 3951: 3948: 3945: 3942: 3939: 3936: 3933: 3930: 3927: 3924: 3921: 3918: 3915: 3912: 3909: 3906: 3903: 3900: 3897: 3894: 3891: 3888: 3885: 3872: 3867: 3866: 3863: 3860: 3857: 3854: 3851: 3848: 3845: 3842: 3839: 3836: 3833: 3830: 3827: 3824: 3821: 3818: 3815: 3812: 3809: 3806: 3803: 3800: 3797: 3794: 3791: 3788: 3785: 3782: 3779: 3776: 3773: 3770: 3767: 3764: 3761: 3758: 3755: 3752: 3749: 3746: 3743: 3740: 3737: 3734: 3731: 3728: 3725: 3722: 3719: 3716: 3713: 3710: 3707: 3704: 3701: 3698: 3695: 3692: 3689: 3686: 3683: 3680: 3677: 3674: 3671: 3668: 3665: 3662: 3659: 3656: 3653: 3650: 3647: 3644: 3641: 3638: 3635: 3632: 3629: 3626: 3623: 3620: 3617: 3614: 3611: 3608: 3605: 3602: 3599: 3596: 3593: 3590: 3587: 3584: 3581: 3578: 3575: 3572: 3569: 3566: 3563: 3560: 3557: 3554: 3551: 3548: 3545: 3542: 3539: 3536: 3533: 3530: 3527: 3524: 3521: 3518: 3515: 3505: 3497: 3489: 3477: 3470: 3462: 3458: 3454: 3450: 3447: 3446: 3443: 3440: 3437: 3434: 3431: 3428: 3425: 3422: 3419: 3416: 3413: 3410: 3407: 3404: 3401: 3398: 3395: 3392: 3389: 3386: 3383: 3380: 3377: 3374: 3371: 3368: 3365: 3362: 3359: 3356: 3353: 3350: 3347: 3344: 3341: 3338: 3335: 3332: 3329: 3326: 3323: 3320: 3317: 3314: 3311: 3308: 3305: 3302: 3299: 3296: 3293: 3290: 3287: 3284: 3281: 3278: 3275: 3272: 3269: 3266: 3263: 3260: 3257: 3254: 3251: 3248: 3245: 3242: 3239: 3236: 3233: 3230: 3227: 3224: 3221: 3218: 3215: 3212: 3209: 3206: 3203: 3200: 3197: 3194: 3191: 3188: 3185: 3182: 3179: 3176: 3173: 3170: 3167: 3164: 3161: 3158: 3155: 3152: 3149: 3146: 3143: 3140: 3137: 3134: 3131: 3128: 3125: 3122: 3115: 3080: 3076: 3072: 3070: 3069: 3060: 3052: 3048: 3029: 3023: 3018: 3017: 3014: 3011: 2985: 2965: 2964: 2962:-- Deposit list 2961: 2958: 2955: 2952: 2950:-- Account list 2949: 2946: 2943: 2940: 2936:in actual use. 2928:are considered 2906: 2905: 2902: 2899: 2896: 2893: 2890: 2887: 2884: 2881: 2878: 2875: 2872: 2869: 2866: 2863: 2860: 2857: 2854: 2851: 2848: 2845: 2828: 2812: 2807: 2806: 2803: 2800: 2797: 2794: 2791: 2788: 2785: 2782: 2780:htmlTemplateToD 2779: 2776: 2773: 2770: 2767: 2764: 2761: 2758: 2755: 2752: 2749: 2746: 2743: 2732: 2701: 2694: 2692:Code generation 2689: 2688: 2685: 2682: 2679: 2676: 2673: 2670: 2667: 2664: 2661: 2658: 2655: 2652: 2649: 2646: 2643: 2640: 2637: 2631: 2630: 2627: 2624: 2621: 2618: 2615: 2612: 2609: 2606: 2603: 2600: 2597: 2594: 2591: 2588: 2585: 2582: 2579: 2576: 2573: 2570: 2567: 2564: 2561: 2558: 2555: 2552: 2549: 2546: 2543: 2540: 2537: 2534: 2531: 2528: 2525: 2522: 2519: 2516: 2513: 2510: 2507: 2504: 2501: 2498: 2495: 2492: 2489: 2486: 2483: 2480: 2477: 2474: 2467: 2448: 2444: 2430: 2426: 2419: 2412: 2404: 2400:instantiations. 2389: 2366: 2360: 2296: 2295: 2292: 2274: 2271: 2246: 2236: 2227: 2223: 2220:list<int> 2219: 2212:class template, 2204: 2200: 2196: 2193:method protocol 2187: 2183: 2179: 2175: 2171: 2159: 2156:complex numbers 2151: 2147: 2128: 2125:binary_search() 2124: 2120: 2116: 2112: 2107: 2103: 2091: 2087: 2083: 2079: 2076: 2075: 2072: 2069: 2066: 2063: 2060: 2057: 2054: 2051: 2048: 2045: 2042: 2039: 2036: 2033: 2030: 2027: 2024: 2021: 2018: 2015: 2008: 2004: 2000: 1996: 1993: 1992: 1989: 1986: 1983: 1980: 1977: 1974: 1971: 1968: 1965: 1962: 1959: 1953:Specializations 1950: 1949: 1946: 1943: 1940: 1937: 1934: 1931: 1928: 1925: 1922: 1919: 1916: 1913: 1910: 1907: 1904: 1901: 1898: 1895: 1892: 1889: 1886: 1883: 1880: 1877: 1874: 1867: 1855: 1848: 1840:Turing complete 1824: 1818: 1785:shared generics 1767: 1766: 1763: 1760: 1757: 1754: 1751: 1748: 1745: 1742: 1739: 1736: 1733: 1730: 1727: 1724: 1721: 1718: 1715: 1712: 1709: 1706: 1703: 1700: 1697: 1686: 1681: 1680: 1677: 1674: 1671: 1668: 1665: 1662: 1659: 1656: 1653: 1650: 1647: 1644: 1641: 1638: 1635: 1632: 1629: 1627:Bookmark_Stacks 1626: 1623: 1620: 1617: 1614: 1611: 1608: 1605: 1602: 1599: 1596: 1593: 1590: 1587: 1584: 1581: 1578: 1575: 1572: 1569: 1566: 1564:Bookmark_Stacks 1563: 1560: 1557: 1554: 1551: 1548: 1545: 1542: 1539: 1536: 1533: 1530: 1527: 1524: 1521: 1518: 1515: 1509: 1508: 1505: 1502: 1498: 1495: 1492: 1488: 1485: 1482: 1479: 1476: 1474:Bookmark_Stacks 1473: 1470: 1467: 1464: 1461: 1458: 1455: 1452: 1449: 1443: 1442: 1439: 1436: 1433: 1430: 1427: 1424: 1421: 1418: 1415: 1412: 1409: 1406: 1403: 1400: 1397: 1394: 1391: 1388: 1385: 1382: 1379: 1376: 1373: 1370: 1367: 1364: 1361: 1358: 1355: 1352: 1349: 1346: 1343: 1340: 1337: 1334: 1331: 1328: 1325: 1322: 1319: 1316: 1313: 1310: 1307: 1304: 1301: 1298: 1295: 1292: 1289: 1286: 1283: 1280: 1277: 1274: 1271: 1268: 1265: 1262: 1259: 1256: 1253: 1250: 1247: 1244: 1241: 1238: 1235: 1232: 1229: 1226: 1223: 1220: 1217: 1214: 1211: 1208: 1205: 1202: 1199: 1196: 1193: 1190: 1187: 1184: 1181: 1178: 1175: 1172: 1169: 1166: 1163: 1160: 1157: 1154: 1151: 1148: 1145: 1142: 1139: 1136: 1133: 1130: 1127: 1124: 1121: 1118: 1115: 1112: 1109: 1106: 1103: 1100: 1097: 1094: 1091: 1088: 1085: 1082: 1079: 1076: 1073: 1070: 1067: 1064: 1061: 1058: 1055: 1049: 995: 984: 978: 975: 932: 930: 916: 900: 889: 887:Generics in Ada 857: 854: 853: 850: 847: 844: 841: 838: 835: 832: 829: 826: 823: 820: 817: 814: 811: 808: 805: 802: 799: 796: 793: 790: 787: 784: 781: 778: 775: 772: 769: 766: 763: 760: 757: 754: 751: 748: 745: 742: 739: 736: 733: 730: 727: 724: 721: 718: 715: 712: 709: 706: 703: 700: 697: 694: 691: 688: 685: 682: 679: 676: 673: 670: 667: 664: 661: 658: 655: 652: 648:example below: 645: 641: 637: 633: 628:, which is the 607: 604: 603: 600: 597: 594: 591: 588: 585: 582: 580:list_of_animals 579: 576: 573: 570: 567: 564: 561: 558: 555: 552: 549: 546: 543: 540: 537: 530: 455:'s now defunct 429:object-oriented 409: 370: 367: 353: 350: 334: 331: 297: 282: 278: 274: 242: 239: 224: 208:data structures 90:Design Patterns 24: 17: 12: 11: 5: 9231: 9230: 9227: 9219: 9218: 9208: 9207: 9201: 9200: 9198: 9197: 9192: 9187: 9182: 9177: 9172: 9167: 9162: 9157: 9152: 9151: 9150: 9140: 9135: 9133:Data structure 9130: 9125: 9119: 9117: 9111: 9110: 9108: 9107: 9102: 9097: 9092: 9087: 9082: 9077: 9072: 9067: 9062: 9057: 9052: 9047: 9042: 9037: 9032: 9026: 9024: 9020: 9019: 9017: 9016: 9015: 9014: 9004: 8999: 8994: 8989: 8984: 8979: 8978: 8977: 8967: 8962: 8957: 8952: 8947: 8942: 8937: 8932: 8927: 8926: 8925: 8914: 8912: 8906: 8905: 8903: 8902: 8901: 8900: 8890: 8884: 8882: 8876: 8875: 8873: 8872: 8867: 8866: 8865: 8860: 8849: 8847: 8841: 8840: 8838: 8837: 8832: 8827: 8826: 8825: 8815: 8814: 8813: 8812: 8811: 8801: 8796: 8791: 8786: 8781: 8780: 8779: 8774: 8772:Half precision 8769: 8759:Floating point 8756: 8751: 8746: 8741: 8735: 8733: 8729: 8728: 8726: 8725: 8720: 8715: 8710: 8705: 8700: 8694: 8692: 8686: 8685: 8680: 8678: 8677: 8670: 8663: 8655: 8646: 8645: 8643: 8642: 8637: 8632: 8627: 8622: 8617: 8612: 8607: 8602: 8597: 8591: 8589: 8581: 8580: 8578: 8577: 8572: 8567: 8562: 8557: 8535: 8530: 8525: 8515: 8510: 8505: 8500: 8495: 8490: 8480: 8474: 8472: 8466: 8465: 8463: 8462: 8457: 8452: 8447: 8442: 8437: 8432: 8427: 8422: 8417: 8412: 8402: 8397: 8392: 8386: 8384: 8368: 8367: 8364: 8363: 8361: 8360: 8355: 8340:Transformation 8337: 8332: 8327: 8322: 8317: 8312: 8307: 8302: 8297: 8292: 8287: 8278: 8273: 8268: 8263: 8258: 8253: 8248: 8243: 8238: 8233: 8228: 8226:Differentiable 8223: 8213: 8206:Automata-based 8203: 8198: 8192: 8190: 8184: 8183: 8181: 8180: 8175: 8170: 8165: 8160: 8155: 8145: 8140: 8134: 8132: 8126: 8125: 8123: 8122: 8117: 8112: 8107: 8097: 8091: 8089: 8083: 8082: 8080: 8079: 8073:Function-level 8070: 8061: 8056: 8051: 8046: 8041: 8036: 8031: 8026: 8021: 8016: 8006: 8000: 7998: 7983: 7977: 7976: 7973: 7972: 7970: 7969: 7964: 7959: 7954: 7949: 7935: 7933: 7917: 7916: 7914: 7913: 7908: 7903: 7898: 7893: 7888: 7886:Non-structured 7883: 7878: 7873: 7867: 7865: 7856: 7850: 7849: 7839: 7837: 7836: 7829: 7822: 7814: 7808: 7807: 7801: 7795: 7781: 7767: 7759:Gilad Bracha, 7756: 7755: 7751: 7750: 7745: 7724: 7699: 7686: 7665: 7659: 7649: 7648: 7644: 7643: 7637: 7636: 7632: 7631: 7624: 7617: 7607: 7600: 7593: 7592:, Embarcadero. 7584:Nick Hodges, " 7581: 7580: 7576: 7575: 7568: 7559:Jason Clark, " 7557: 7548:Jason Clark, " 7545: 7544: 7540: 7539: 7525: 7515: 7514: 7510: 7509: 7498: 7491: 7490:External links 7488: 7487: 7486: 7472: 7448: 7426: 7404: 7401: 7399: 7398: 7392: 7367: 7350: 7344: 7312: 7307:978-0134685991 7306: 7293: 7287: 7273: 7271: 7268: 7265: 7264: 7253: 7251:VHDL Reference 7241: 7221: 7210: 7199: 7188: 7177: 7166: 7154: 7143: 7131: 7119: 7103: 7077: 7070: 7041: 7030: 7005: 6999:10.1.1.110.122 6984: 6959: 6937:Lämmel, Ralf; 6929: 6905: 6890: 6851: 6831: 6822: 6813: 6804: 6789: 6753: 6746: 6728: 6708: 6696: 6689: 6667: 6652: 6645: 6624: 6623: 6621: 6618: 6617: 6616: 6611: 6606: 6601: 6594: 6591: 6579: 6515: 6512: 6496: 6493: 5989: 5984: 5983: 5977: 5971: 5964: 5946: 5945: 5913: 5910: 5625: 5592: 5589: 5563:provided that 5478: 5439: 5436: 5434: 5431: 4863:implementation 4695:implementation 4609: 4596: 4593: 3884: 3871: 3868: 3514: 3121: 3068: 3065: 3025:Main article: 3022: 3019: 3010: 2984: 2981: 2939: 2844: 2827: 2824: 2811: 2808: 2742: 2725: 2724: 2721: 2715: 2708: 2705: 2693: 2690: 2636: 2473: 2441: 2440: 2437:type inference 2423: 2416: 2401: 2388: 2387:Templates in D 2385: 2376: 2375: 2368: 2358: 2341: 2338: 2335:shared library 2327: 2291: 2270: 2267: 2235: 2232: 2014: 1958: 1873: 1847: 1844: 1822:Template (C++) 1820:Main article: 1817: 1814: 1813: 1812: 1809: 1806: 1803: 1802: 1801: 1794: 1791: 1696: 1685: 1682: 1514: 1448: 1422:Allocated_Size 1368:Allocated_Size 1054: 1048: 1045: 997: 996: 903: 901: 894: 888: 885: 881:.NET Framework 651: 536: 529: 526: 408: 405: 383: 365: 348: 329: 237: 223: 220: 75:in 1977. With 66:duplicate code 44:that are then 29:is a style of 15: 13: 10: 9: 6: 4: 3: 2: 9229: 9228: 9217: 9214: 9213: 9211: 9196: 9193: 9191: 9188: 9186: 9183: 9181: 9178: 9176: 9173: 9171: 9168: 9166: 9163: 9161: 9158: 9156: 9153: 9149: 9146: 9145: 9144: 9141: 9139: 9136: 9134: 9131: 9129: 9126: 9124: 9121: 9120: 9118: 9112: 9106: 9103: 9101: 9098: 9096: 9093: 9091: 9088: 9086: 9083: 9081: 9078: 9076: 9073: 9071: 9068: 9066: 9063: 9061: 9058: 9056: 9055:Function type 9053: 9051: 9048: 9046: 9043: 9041: 9038: 9036: 9033: 9031: 9028: 9027: 9025: 9021: 9013: 9010: 9009: 9008: 9005: 9003: 9000: 8998: 8995: 8993: 8990: 8988: 8985: 8983: 8980: 8976: 8973: 8972: 8971: 8968: 8966: 8963: 8961: 8958: 8956: 8953: 8951: 8948: 8946: 8943: 8941: 8938: 8936: 8933: 8931: 8928: 8924: 8921: 8920: 8919: 8916: 8915: 8913: 8911: 8907: 8899: 8896: 8895: 8894: 8891: 8889: 8886: 8885: 8883: 8881: 8877: 8871: 8868: 8864: 8861: 8859: 8856: 8855: 8854: 8851: 8850: 8848: 8846: 8842: 8836: 8833: 8831: 8828: 8824: 8821: 8820: 8819: 8816: 8810: 8807: 8806: 8805: 8802: 8800: 8797: 8795: 8792: 8790: 8787: 8785: 8782: 8778: 8775: 8773: 8770: 8768: 8765: 8764: 8762: 8761: 8760: 8757: 8755: 8752: 8750: 8747: 8745: 8742: 8740: 8737: 8736: 8734: 8730: 8724: 8721: 8719: 8716: 8714: 8711: 8709: 8706: 8704: 8701: 8699: 8696: 8695: 8693: 8691: 8690:Uninterpreted 8687: 8683: 8676: 8671: 8669: 8664: 8662: 8657: 8656: 8653: 8641: 8638: 8636: 8633: 8631: 8628: 8626: 8623: 8621: 8618: 8616: 8613: 8611: 8610:Data-oriented 8608: 8606: 8603: 8601: 8598: 8596: 8593: 8592: 8590: 8588: 8582: 8576: 8573: 8571: 8568: 8566: 8563: 8561: 8558: 8555: 8551: 8547: 8543: 8539: 8536: 8534: 8531: 8529: 8526: 8523: 8519: 8516: 8514: 8511: 8509: 8508:Homoiconicity 8506: 8504: 8501: 8499: 8496: 8494: 8491: 8488: 8484: 8481: 8479: 8476: 8475: 8473: 8471: 8467: 8461: 8458: 8456: 8453: 8451: 8448: 8446: 8443: 8441: 8438: 8436: 8433: 8431: 8428: 8426: 8423: 8421: 8418: 8416: 8415:Concurrent OO 8413: 8410: 8406: 8403: 8401: 8398: 8396: 8393: 8391: 8388: 8387: 8385: 8383: 8378: 8373: 8369: 8359: 8356: 8353: 8349: 8345: 8341: 8338: 8336: 8333: 8331: 8328: 8326: 8323: 8321: 8318: 8316: 8313: 8311: 8310:Set-theoretic 8308: 8306: 8303: 8301: 8298: 8296: 8293: 8291: 8290:Probabilistic 8288: 8286: 8282: 8279: 8277: 8274: 8272: 8269: 8267: 8264: 8262: 8259: 8257: 8254: 8252: 8249: 8247: 8244: 8242: 8239: 8237: 8234: 8232: 8229: 8227: 8224: 8221: 8217: 8214: 8211: 8207: 8204: 8202: 8199: 8197: 8194: 8193: 8191: 8189: 8185: 8179: 8176: 8174: 8171: 8169: 8166: 8164: 8161: 8159: 8156: 8153: 8149: 8146: 8144: 8141: 8139: 8136: 8135: 8133: 8131: 8127: 8121: 8118: 8116: 8113: 8111: 8108: 8105: 8101: 8098: 8096: 8093: 8092: 8090: 8088: 8084: 8078: 8074: 8071: 8069: 8068:Concatenative 8065: 8062: 8060: 8057: 8055: 8052: 8050: 8047: 8045: 8042: 8040: 8037: 8035: 8032: 8030: 8027: 8025: 8022: 8020: 8017: 8014: 8010: 8007: 8005: 8002: 8001: 7999: 7996: 7991: 7987: 7984: 7982: 7978: 7968: 7965: 7963: 7960: 7958: 7955: 7953: 7950: 7948: 7944: 7940: 7937: 7936: 7934: 7931: 7927: 7922: 7918: 7912: 7909: 7907: 7904: 7902: 7899: 7897: 7894: 7892: 7889: 7887: 7884: 7882: 7879: 7877: 7874: 7872: 7869: 7868: 7866: 7864: 7860: 7857: 7855: 7851: 7846: 7842: 7835: 7830: 7828: 7823: 7821: 7816: 7815: 7812: 7806: 7802: 7799: 7796: 7794: 7793:0-262-69325-9 7790: 7786: 7782: 7780: 7779:0-596-52775-6 7776: 7772: 7768: 7765: 7763: 7758: 7757: 7753: 7752: 7749: 7746: 7744: 7743:90-393-3765-9 7740: 7736: 7732: 7730: 7725: 7722: 7718: 7716: 7713: 7707: 7703: 7700: 7698:Revised 2002. 7697: 7695: 7690: 7687: 7684: 7682: 7679: 7676: 7670: 7667:Ralf Hinze, " 7666: 7664: 7660: 7657: 7656: 7651: 7650: 7646: 7645: 7642: 7639: 7638: 7634: 7633: 7629: 7625: 7622: 7618: 7615: 7611: 7608: 7605: 7601: 7598: 7594: 7591: 7587: 7583: 7582: 7578: 7577: 7573: 7569: 7566: 7565:MSDN Magazine 7562: 7558: 7555: 7554:MSDN Magazine 7551: 7547: 7546: 7542: 7541: 7538: 7537:0-201-73484-2 7534: 7530: 7526: 7524: 7522: 7517: 7516: 7512: 7511: 7507: 7503: 7499: 7497: 7494: 7493: 7489: 7483: 7479: 7475: 7469: 7465: 7461: 7457: 7453: 7449: 7444: 7439: 7435: 7431: 7427: 7424: 7420: 7417: 7414: 7412: 7407: 7406: 7402: 7395: 7393:0-201-63361-2 7389: 7385: 7381: 7376: 7375: 7368: 7361: 7360: 7355: 7351: 7347: 7341: 7337: 7333: 7329: 7325: 7321: 7317: 7316:Musser, D. R. 7313: 7309: 7303: 7299: 7294: 7290: 7284: 7280: 7275: 7274: 7269: 7262: 7257: 7254: 7250: 7245: 7242: 7239: 7235: 7231: 7225: 7222: 7219: 7214: 7211: 7208: 7203: 7200: 7197: 7192: 7189: 7186: 7181: 7178: 7175: 7170: 7167: 7163: 7162:Albahari 2022 7158: 7155: 7152: 7147: 7144: 7140: 7135: 7132: 7128: 7123: 7120: 7116: 7112: 7107: 7104: 7092: 7088: 7081: 7078: 7073: 7067: 7063: 7059: 7055: 7051: 7045: 7042: 7039: 7034: 7031: 7019: 7018:www.adaic.org 7015: 7009: 7006: 7000: 6995: 6988: 6985: 6977: 6970: 6963: 6960: 6944: 6940: 6933: 6930: 6922: 6921: 6916: 6909: 6906: 6901: 6894: 6891: 6886: 6882: 6878: 6874: 6867: 6866: 6858: 6856: 6852: 6844: 6843: 6835: 6832: 6826: 6823: 6817: 6814: 6808: 6805: 6800: 6796: 6792: 6786: 6782: 6778: 6773: 6768: 6764: 6757: 6754: 6749: 6743: 6739: 6732: 6729: 6721: 6720: 6712: 6709: 6705: 6700: 6697: 6692: 6690:0-201-63361-2 6686: 6681: 6680: 6671: 6668: 6663: 6656: 6653: 6648: 6642: 6638: 6637: 6629: 6626: 6619: 6615: 6612: 6610: 6607: 6605: 6602: 6600: 6597: 6596: 6592: 6577: 6569: 6565: 6563: 6559: 6556: 6552: 6547: 6545: 6541: 6537: 6533: 6529: 6525: 6521: 6513: 6511: 6509: 6505: 6501: 6494: 5987: 5981: 5978: 5975: 5972: 5969: 5965: 5962: 5958: 5954: 5951: 5950: 5949: 5943: 5942:default cases 5939: 5934: 5931: 5930: 5929: 5927: 5923: 5919: 5911: 5623: 5621: 5617: 5613: 5609: 5606: 5602: 5598: 5590: 5588: 5568: 5476: 5466: 5461: 5449: 5446:mechanism of 5445: 5437: 5432: 5397:// hellohello 5262:TGenericClass 5235:TGenericClass 5190:{$ ifdef fpc} 5184:TestGenDelphi 5145:// hellohello 5070:TGenericClass 5040:TGenericClass 5013:TGenericClass 4989:TGenericClass 4950:{$ ifdef fpc} 4944:TestGenDelphi 4869:TGenericClass 4806:TGenericClass 4788:{$ ifdef fpc} 4701:TGenericClass 4638:TGenericClass 4623:{$ ifdef fpc} 4607: 4604: 4601: 4594: 4592: 3882: 3879: 3878:Object Pascal 3876: 3869: 3512: 3509: 3503: 3495: 3487: 3483: 3482:contravariant 3474: 3468: 3451:MakeAtLeast() 3119: 3112: 3109: 3105: 3101: 3097: 3093: 3089: 3085: 3075: 3066: 3064: 3058: 3046: 3042: 3038: 3034: 3028: 3020: 3008: 2994: 2982: 2980: 2937: 2931: 2912:below, where 2911: 2842: 2833: 2825: 2823: 2821: 2817: 2809: 2740: 2738: 2729: 2722: 2719: 2716: 2713: 2710:User-defined 2709: 2706: 2699: 2698: 2697: 2691: 2634: 2471: 2465: 2461: 2456: 2454: 2438: 2433: 2424: 2417: 2410: 2402: 2398: 2397: 2396: 2394: 2386: 2384: 2380: 2373: 2369: 2363: 2357: 2351: 2346: 2342: 2339: 2336: 2332: 2328: 2324: 2323: 2322: 2320: 2316: 2311: 2307: 2305: 2301: 2289: 2287: 2283: 2280: 2268: 2266: 2264: 2260: 2256: 2251: 2243: 2241: 2233: 2231: 2217: 2213: 2208: 2203:can also use 2194: 2169: 2165: 2158:. Therefore, 2157: 2145: 2140: 2138: 2134: 2121:stable_sort() 2101: 2097: 2012: 2001:max(int, int) 1990:// Outputs 7. 1956: 1954: 1871: 1865: 1861: 1853: 1845: 1843: 1841: 1837: 1833: 1829: 1823: 1815: 1810: 1807: 1804: 1799: 1795: 1792: 1789: 1788: 1786: 1782: 1781: 1780: 1777: 1775: 1770: 1694: 1692: 1683: 1615:Document_Type 1591:Document_Name 1519:Document_Type 1512: 1501:Bookmark_Type 1453:Bookmark_Type 1446: 1052: 1046: 1044: 1042: 1038: 1034: 1029: 1026: 1021: 1019: 1015: 1010: 1008: 1003: 993: 990: 982: 971: 968: 964: 961: 957: 954: 950: 947: 943: 940: –  939: 935: 934:Find sources: 928: 924: 920: 914: 913: 909: 904:This section 902: 898: 893: 892: 886: 884: 882: 878: 874: 870: 866: 864: 649: 634:Moving_Object 631: 627: 626: 621: 617: 613: 534: 527: 525: 522: 520: 516: 511: 507: 503: 501: 497: 493: 489: 485: 481: 477: 473: 469: 465: 460: 458: 454: 450: 446: 442: 438: 434: 430: 426: 422: 418: 414: 406: 404: 402: 398: 394: 390: 385: 382: 378: 376: 364: 360: 358: 347: 345: 344:Banach spaces 341: 328: 326: 320: 318: 313: 310: 304: 300: 295: 289: 285: 272: 268: 263: 261: 257: 253: 249: 236: 231: 229: 221: 219: 217: 213: 209: 205: 201: 197: 192: 190: 186: 182: 178: 174: 173: 168: 164: 160: 156: 152: 148: 144: 140: 136: 132: 128: 124: 120: 116: 111: 109: 105: 104: 99: 94: 92: 91: 86: 82: 78: 74: 69: 67: 63: 59: 55: 51: 47: 43: 40: 36: 32: 28: 22: 9137: 8960:Intersection 8615:Event-driven 8502: 8019:Higher-order 7947:Object-based 7784: 7770: 7760: 7727: 7726:Andres Löh, 7709: 7692: 7672: 7654: 7589: 7572:Generics.Net 7567:, Microsoft. 7564: 7556:, Microsoft. 7553: 7528: 7519: 7455: 7433: 7409: 7373: 7358: 7327: 7297: 7278: 7256: 7244: 7229: 7224: 7213: 7202: 7191: 7180: 7169: 7157: 7146: 7134: 7126: 7122: 7114: 7110: 7106: 7094:. Retrieved 7090: 7080: 7053: 7044: 7033: 7021:. Retrieved 7017: 7008: 6987: 6976:the original 6962: 6950:. Retrieved 6932: 6919: 6908: 6893: 6864: 6841: 6834: 6825: 6816: 6807: 6762: 6756: 6737: 6731: 6718: 6711: 6699: 6678: 6670: 6661: 6655: 6635: 6628: 6566: 6560: 6548: 6531: 6526:and generic 6517: 6498: 5985: 5979: 5973: 5967: 5960: 5956: 5952: 5947: 5941: 5937: 5932: 5915: 5619: 5615: 5611: 5607: 5600: 5594: 5569: 5550: 5465:binary trees 5459: 5441: 4605: 4598: 4589: 3873: 3510: 3475: 3471:CompareTo(T) 3467:compile time 3448: 3113: 3088:type erasure 3081: 3041:type erasure 3032: 3030: 2992: 2986: 2966: 2929: 2909: 2907: 2831: 2829: 2819: 2813: 2786:htmlTemplate 2750:htmlTemplate 2730: 2726: 2695: 2668:isInputRange 2632: 2499:isInputRange 2478:isInputRange 2468:isInputRange 2457: 2442: 2413:if constexpr 2409:C++ concepts 2390: 2381: 2377: 2371: 2354: 2344: 2312: 2308: 2300:preprocessor 2297: 2279:preprocessor 2272: 2262: 2258: 2252: 2244: 2239: 2237: 2211: 2209: 2167: 2163: 2141: 2092:operator< 2077: 1994: 1952: 1951: 1863: 1859: 1851: 1849: 1825: 1784: 1778: 1771: 1768: 1761:Element_Type 1719:Element_Type 1690: 1687: 1657:Initial_Size 1510: 1496:Element_Type 1444: 1353:Element_Type 1266:Element_Type 1224:Element_Type 1167:Initial_Size 1077:Element_Type 1050: 1036: 1032: 1030: 1024: 1022: 1017: 1014:generic unit 1013: 1011: 1000: 985: 979:January 2024 976: 966: 959: 952: 945: 933: 917:Please help 905: 867: 865:(J2SE) 5.0. 855: 623: 605: 598:list_of_cars 531: 523: 504: 487: 483: 479: 475: 471: 461: 425:object-based 410: 396: 392: 386: 374: 372: 362: 355: 337: 322: 317:compile-time 314: 302: 298: 293: 287: 283: 270: 266: 264: 244: 233: 230:as follows, 225: 200:David Musser 195: 193: 170: 114: 112: 101: 95: 88: 84: 70: 46:instantiated 45: 41: 26: 25: 9190:Type theory 9185:Type system 9035:Bottom type 8982:Option type 8923:generalized 8809:Long double 8754:Fixed point 8625:Intentional 8605:Data-driven 8587:of concerns 8546:Inferential 8533:Multi-stage 8513:Interactive 8390:Actor-based 8377:distributed 8320:Stack-based 8120:Synchronous 8077:Value-level 8064:Applicative 7981:Declarative 7939:Class-based 7702:Ralf Lämmel 7610:Free Pascal 6948:. Microsoft 6536:Standard ML 5926:Netherlands 4600:Free Pascal 4516:MakeAtLeast 4381:MakeAtLeast 4327:MakeAtLeast 4093:MakeAtLeast 4018:MakeAtLeast 3934:MakeAtLeast 3333:IComparable 3291:MakeAtLeast 3192:MakeAtLeast 3108:collections 3092:reification 3015:SORTED_LIST 3005:SORTED_LIST 2997:SORTED_LIST 2337:boundaries. 2216:linked list 2199:instead of 2096:duck typing 1710:(<>); 1033:instantiate 873:Oxygene 1.5 630:algorithmic 457:Trellis-Owl 381:boilerplate 379:Scrap your 9095:Empty type 9090:Type class 9040:Collection 8997:Refinement 8975:metaobject 8823:signedness 8682:Data types 8600:Components 8585:Separation 8560:Reflective 8554:by example 8498:Extensible 8372:Concurrent 8348:Production 8335:Templating 8315:Simulation 8300:Scientific 8220:Spacecraft 8148:Constraint 8143:Answer set 8095:Flow-based 7995:comparison 7990:Functional 7962:Persistent 7926:comparison 7891:Procedural 7863:Structured 7854:Imperative 7691:, editor, 7602:Dr. Bob, " 7473:0897912047 7139:Bloch 2018 6952:16 October 6790:0897912438 6620:References 6390:&& 5444:type class 5253:specialize 5226:specialize 3621:// a class 3549:OnePerType 3096:reflection 3057:type casts 3001:COMPARABLE 2820:genericity 2712:attributes 2350:code bloat 2319:code bloat 1749:Index_Type 1737:Array_Type 1704:Index_Type 1576:end record 1428:end record 1398:Index_Type 1341:Index_Type 1302:Index_Type 949:newspapers 533:template: 488:genericity 484:genericity 480:genericity 163:TypeScript 50:parameters 39:data types 35:algorithms 9170:Subtyping 9165:Interface 9148:metaclass 9100:Unit type 9070:Semaphore 9050:Exception 8955:Inductive 8945:Dependent 8910:Composite 8888:Character 8870:Reference 8767:Minifloat 8723:Bit array 8487:Inductive 8483:Automatic 8305:Scripting 8004:Recursive 7438:CiteSeerX 7416:LCSD 2005 7324:P. Gianni 7091:Dr. Dobbs 6994:CiteSeerX 6767:CiteSeerX 6576:keyword: 6532:functors. 5873:FunctorOf 5663:polytypic 5610:, and if 5601:polytypic 5561:BinTree T 5196:{$ endif} 4956:{$ endif} 4797:interface 4794:{$ endif} 4632:interface 4629:{$ endif} 4318:procedure 4204:TComparer 4147:IComparer 4084:procedure 4015:procedure 3988:IComparer 3931:procedure 3486:type safe 3408:CompareTo 3249:WriteLine 2858:-- Access 2801:htmlDCode 2774:htmlDCode 2405:static if 2160:max(x, y) 2144:type safe 1856:max(x, y) 1755:<>) 1651:Bookmarks 1582:procedure 1558:Bookmarks 1546:Unbounded 1374:Size_Type 1347:<>) 1308:Size_Type 1290:exception 1284:Underflow 1278:exception 1230:procedure 1188:procedure 1176:Size_Type 1143:procedure 1104:Size_Type 906:does not 620:signature 612:templates 260:iterators 235:software. 194:The term 77:templates 58:functions 33:in which 9210:Category 9195:Variable 9085:Top type 8950:Equality 8858:physical 8835:Rational 8830:Interval 8777:bfloat16 8640:Subjects 8630:Literate 8620:Features 8575:Template 8570:Symbolic 8542:Bayesian 8522:Hygienic 8382:parallel 8261:Modeling 8256:Low-code 8231:End-user 8168:Ontology 8100:Reactive 8087:Dataflow 7543:C#, .NET 7419:Archived 7356:(2007). 7023:25 April 6917:(1999). 6593:See also 6573:_Generic 6555:register 6506:and the 5531:deriving 4866:function 4824:function 4698:function 4656:function 4264:Comparer 4198:Comparer 4186:Comparer 4141:Comparer 4069:overload 4006:overload 3982:Comparer 3907:Defaults 3901:Generics 3875:Delphi's 3033:generics 2975:such as 2888:new_item 2592:popFront 2475:template 2359:—  2345:instance 2088:x < y 1969:<< 1881:typename 1875:template 1836:run-time 1774:compiler 1645:Document 1609:Document 1528:Contents 1486:Max_Size 1320:Max_Size 1272:Overflow 1182:Max_Size 1119:Max_Size 1059:Max_Size 1041:run-time 858:template 856:The C++ 836:<< 830:<< 824:<< 662:typename 656:template 616:subtypes 544:typename 538:template 515:compiler 468:compiler 366:—  349:—  330:—  248:concepts 238:—  212:concepts 115:generics 9138:Generic 9114:Related 9030:Boolean 8987:Product 8863:virtual 8853:Address 8845:Pointer 8818:Integer 8749:Decimal 8744:Complex 8732:Numeric 8595:Aspects 8503:Generic 8493:Dynamic 8352:Pattern 8330:Tactile 8295:Quantum 8285:filters 8216:Command 8115:Streams 8110:Signals 7881:Modular 7715:SIGPLAN 7683:(ICFP), 7678:SIGPLAN 7647:Haskell 7380:Bibcode 7326:(ed.). 7270:Sources 7058:Bibcode 6885:7518369 6551:Verilog 6530:called 6528:modules 5924:in the 5918:Haskell 5861:Regular 5825:flatten 5651:flatten 5633:Regular 5627:flatten 5597:Haskell 5522:BinTree 5507:BinTree 5483:BinTree 5448:Haskell 5370:WriteLn 5340:WriteLn 5241:Integer 5181:program 5118:WriteLn 5088:WriteLn 5046:Integer 4995:Integer 4941:program 4803:generic 4561:WriteLn 4522:Integer 4471:Integer 4450:Integer 4438:Integer 4270:Compare 4216:Default 4174:Integer 3886:program 3846:GenTest 3825:GenTest 3804:GenTest 3783:GenTest 3762:GenTest 3741:GenTest 3720:GenTest 3699:GenTest 3678:Counter 3648:Counter 3585:GenTest 3567:private 3525:GenTest 3494:casting 3270:ReadKey 3264:Console 3243:Console 3222:foreach 2926:DEPOSIT 2922:ACCOUNT 2918:DEPOSIT 2914:ACCOUNT 2876:feature 2855:feature 2420:is(...) 2317:), and 2205:complex 2197:compare 2184:complex 2180:complex 2172:complex 2148:complex 1725:private 1698:generic 1691:between 1540:Strings 1471:package 1462:Natural 1404:Storage 1299:subtype 1296:private 1257:Element 1215:Element 1137:private 1134:limited 1092:package 1083:private 1065:Natural 1056:generic 1047:Example 963:scholar 927:removed 912:sources 606:Above, 510:structs 496:Haskell 359:noted, 214:, with 189:Haskell 9128:Boxing 9116:topics 9075:Stream 9012:tagged 8970:Object 8893:String 8358:Visual 8325:System 8210:Action 8034:Strict 7791:  7777:  7741:  7671:," In 7635:Eiffel 7535:  7513:C++, D 7482:285030 7480:  7470:  7440:  7390:  7342:  7304:  7285:  7236:  7096:3 June 7068:  6996:  6883:  6799:795406 6797:  6787:  6769:  6744:  6687:  6643:  6544:Scheme 6042:forall 5961:k → k' 5819:concat 5702:either 5367:// 200 5334:Create 5316:Create 5268:String 5115:// 200 5082:Create 5076:String 5052:Create 5019:String 4920:AValue 4914:AValue 4908:Result 4884:AValue 4836:AValue 4758:AValue 4752:AValue 4746:Result 4722:AValue 4668:AValue 4576:ReadLn 4510:TUtils 4477:Create 4465:TArray 4432:TArray 4402:Lowest 4363:Lowest 4348:TArray 4321:TUtils 4303:Lowest 4282:Lowest 4129:Lowest 4114:TArray 4087:TUtils 4054:Lowest 4039:TArray 3970:Lowest 3955:TArray 3919:TUtils 3889:Sample 3852:double 3831:double 3657:public 3642:static 3639:public 3624:public 3582:public 3543:static 3519:public 3502:boxing 3490:object 3435:lowest 3414:lowest 3381:Length 3318:lowest 3285:static 3141:static 3135:Sample 3126:System 3071:": --> 3061:String 2816:Eiffel 2756:import 2733:import 2702:import 2683:// ... 2511:typeof 2432:typeof 2331:linker 2315:SFINAE 2282:macros 2247:sort() 2135:, and 2123:, and 2117:sort() 2046:return 1920:return 1633:Create 1600:String 1525:record 1480:Stacks 1477:is new 1437:Stacks 1410:Vector 1389:record 1329:Vector 1146:Create 1095:Stacks 1037:actual 965:  958:  951:  944:  936:  782:string 761:string 638:Animal 574:Animal 506:Arrays 451:, and 445:Eiffel 187:, and 165:, and 147:Python 131:Eiffel 127:Delphi 9023:Other 9007:Union 8940:Class 8930:Array 8713:Tryte 8635:Roles 8518:Macro 8281:Pipes 8201:Array 8178:Query 8130:Logic 8039:GADTs 8029:Total 7952:Agent 7766:2004. 7685:2004. 7478:S2CID 7363:(PDF) 6979:(PDF) 6972:(PDF) 6946:(PDF) 6924:(PDF) 6881:S2CID 6869:(PDF) 6846:(PDF) 6795:S2CID 6723:(PDF) 6540:OCaml 6534:Both 6504:PolyP 6500:Clean 6495:Clean 6321:False 6066:-> 6018:-> 6012:-> 5903:-> 5894:-> 5885:-> 5867:=> 5852:-> 5843:-> 5816:-> 5801:-> 5792:-> 5786:-> 5777:-> 5771:-> 5762:-> 5741:-> 5720:-> 5699:-> 5678:-> 5648:-> 5639:=> 5608:* → * 5591:PolyP 5301:begin 5271:>; 5244:>; 5079:>. 5049:>. 5025:begin 5022:>; 4998:>; 4905:begin 4881:const 4833:const 4821:class 4743:begin 4719:const 4710:>. 4665:const 4653:class 4567:Value 4549:Value 4474:>. 4456:begin 4444:Value 4441:>; 4378:begin 4360:const 4357:>; 4315:class 4213:>. 4180:begin 4126:const 4123:>; 4081:class 4051:const 4048:>; 4012:class 3967:const 3964:>; 3928:class 3925:class 3627:class 3522:class 3478:Array 3324:where 3237:array 3207:array 3159:array 3132:class 3123:using 3116:where 3100:casts 3012:class 2977:LIST 2973:LIST 2969:LIST 2846:class 2795:mixin 2674:Range 2656:range 2653:Range 2647:Range 2616:front 2574:empty 2520:inout 2464:range 2275:max() 2133:heaps 2108:max() 1868:max() 1752:range 1743:array 1660:=> 1642:=> 1621:begin 1570:Stack 1499:=> 1489:=> 1362:Stack 1344:range 1335:array 1311:range 1251:Stack 1209:Stack 1161:Stack 1128:Stack 1110:range 970:JSTOR 956:books 871:2.0, 833:hello 827:world 809:hello 803:world 785:hello 764:world 695:& 683:& 553:class 476:words 464:Forth 340:rings 325:Knuth 294:range 185:Julia 181:Scala 159:Swift 62:types 9143:Kind 9105:Void 8965:List 8880:Text 8718:Word 8708:Trit 8703:Byte 8283:and 7930:list 7789:ISBN 7775:ISBN 7754:Java 7739:ISBN 7704:and 7533:ISBN 7468:ISBN 7388:ISBN 7340:ISBN 7302:ISBN 7283:ISBN 7234:ISBN 7098:2015 7066:ISBN 7025:2024 6954:2016 6785:ISBN 6742:ISBN 6685:ISBN 6641:ISBN 6562:VHDL 6538:and 6471:Bool 6441:Char 6165:True 6147:Unit 6024:type 6021:Bool 5991:type 5959:and 5855:cata 5831:pmap 5681:case 5657:cata 5605:kind 5584:show 5582:and 5576:Show 5574:and 5557:show 5543:Show 5501:Node 5492:Leaf 5480:data 5473:Show 5471:and 5456:Show 5442:The 5418:Free 5406:Free 5265:< 5238:< 5217:type 5199:uses 5166:Free 5154:Free 5073:< 5043:< 5016:< 4992:< 4959:uses 4815:> 4809:< 4800:type 4779:unit 4704:< 4647:> 4641:< 4635:type 4614:unit 4555:Ints 4531:Ints 4525:> 4519:< 4468:< 4459:Ints 4435:< 4426:Ints 4390:> 4384:< 4351:< 4336:> 4330:< 4294:then 4288:< 4246:High 4207:< 4195:then 4156:> 4150:< 4117:< 4102:> 4096:< 4042:< 4027:> 4021:< 3997:> 3991:< 3958:< 3943:> 3937:< 3916:type 3898:uses 3855:> 3849:< 3834:> 3828:< 3813:> 3807:< 3795:g111 3792:> 3786:< 3771:> 3765:< 3750:> 3744:< 3729:> 3723:< 3708:> 3702:< 3534:> 3528:< 3449:The 3429:list 3420:< 3402:list 3375:list 3372:< 3342:> 3336:< 3309:list 3300:> 3294:< 3288:void 3276:true 3201:> 3195:< 3147:Main 3144:void 3073:edit 3053:List 2959:LIST 2947:LIST 2924:and 2916:and 2861:item 2849:LIST 2836:LIST 2771:enum 2747:enum 2731:The 2700:The 2638:auto 2625:})); 2601:auto 2553:init 2496:bool 2493:enum 2427:auto 2425:The 2418:The 2411:and 2391:The 2228:list 2226:. A 2201:< 2176:< 2170:are 2166:and 2152:< 2113:< 2104:< 2082:and 2052:< 1966:cout 1926:< 1887:> 1878:< 1734:type 1716:type 1701:type 1675:Edit 1585:Edit 1516:type 1450:type 1359:type 1326:type 1239:From 1197:Into 1191:Push 1125:type 1101:type 1074:type 942:news 910:any 908:cite 821:cout 797:Swap 746:temp 716:temp 674:Swap 671:void 668:> 659:< 646:Swap 640:and 618:and 595:> 589:< 586:List 577:> 571:< 568:List 556:List 550:> 541:< 508:and 466:the 449:Java 433:BETA 427:and 419:and 279:sort 275:find 202:and 155:Rust 139:Java 9002:Set 8698:Bit 8188:DSL 7712:ACM 7675:ACM 7506:STL 7460:doi 7332:doi 6873:doi 6777:doi 6411:Int 6393:eqB 6381:eqA 6369::*: 6354::*: 6345:eqB 6342:eqA 6333::*: 6309:eqB 6306:eqA 6297::+: 6279:eqB 6267:Inr 6255:Inr 6249:eqB 6246:eqA 6237::+: 6219:eqA 6207:Inl 6195:Inl 6189:eqB 6186:eqA 6177::+: 5837:Con 5789:Rec 5774:Par 5620:t a 5424:end 5412:GC2 5400:GC1 5382:Foo 5376:GC2 5358:100 5352:Foo 5346:GC1 5322:GC2 5304:GC1 5289:GC2 5277:GC1 5274:var 5172:end 5160:GC2 5148:GC1 5130:Foo 5124:GC2 5106:100 5100:Foo 5094:GC1 5058:GC2 5028:GC1 5001:GC2 4977:GC1 4974:var 4932:end 4926:end 4875:Foo 4857:end 4827:Foo 4770:end 4764:end 4713:Foo 4689:end 4659:Foo 4582:end 4546:for 4423:var 4417:end 4408:nil 4396:Arr 4342:Arr 4309:end 4297:Arr 4276:Arr 4252:Arr 4237:Arr 4231:Low 4222:for 4192:nil 4165:var 4108:Arr 4075:end 4033:Arr 3949:Arr 3861:1.0 3843:new 3819:111 3810:int 3801:new 3789:int 3768:int 3759:new 3753:g11 3747:int 3726:int 3717:new 3705:int 3645:int 3561:(); 3555:new 3498:int 3354:int 3348:for 3228:int 3198:int 3156:int 3045:JVM 2903:... 2882:put 2873:... 2852:... 2641:fun 2595:(); 2523:int 2188:map 2131:s, 2129:set 2034:int 2025:int 2019:max 2016:int 2009:int 2007:is 1997:max 1972:max 1960:std 1893:max 1862:or 1672:end 1534:Ada 1459:new 1434:end 1392:Top 1263:out 1248:out 1233:Pop 1206:out 1158:out 1031:To 1002:Ada 921:by 815:std 776:std 755:std 642:Car 592:Car 453:DEC 437:C++ 421:Ada 417:CLU 391:of 342:or 175:in 143:Nim 119:Ada 117:in 81:C++ 79:in 73:Ada 60:or 9212:: 8552:, 8548:, 8544:, 8350:, 8346:, 8075:, 8066:, 7945:, 7941:, 7928:, 7737:. 7612:: 7476:. 7466:. 7386:. 7338:. 7318:; 7089:. 7064:. 7016:. 6879:. 6871:. 6854:^ 6793:. 6783:. 6775:. 6549:A 6520:ML 6486:== 6462:eq 6456:== 6432:eq 6426:== 6402:eq 6399:b2 6396:b1 6387:a2 6384:a1 6372:b2 6366:a2 6357:b1 6351:a1 6324:eq 6288:eq 6285:b2 6282:b1 6270:b2 6258:b1 6228:eq 6225:a2 6222:a1 6210:a2 6198:a1 6168:eq 6138:eq 6129:{} 6126:Eq 6123::: 6111::: 6099:eq 6093:u2 6090:t2 6081:u1 6078:t1 6072:{} 6069:Eq 6063:u2 6060:u1 6057:{} 6054:Eq 6048:u2 6045:u1 6036:t2 6033:t1 6030:{} 6027:Eq 6015:t2 6009:t1 6003:t2 6000:t1 5997:{} 5994:Eq 5858::: 5834:fl 5759:() 5753:fl 5750:++ 5744:fl 5708:fl 5705:fl 5687:of 5669::: 5666:fl 5660:fl 5630::: 5580:== 5572:Eq 5553:== 5537:Eq 5475:: 5469:Eq 5452:Eq 5391:)) 5361:)) 5325::= 5307::= 5139:)) 5109:)) 5061::= 5031::= 4911::= 4749::= 4558:do 4552:in 4462::= 4300::= 4261:if 4258:do 4243:to 4228::= 4201::= 4183:if 3864:); 3837:g2 3822:); 3780:); 3777:11 3738:); 3711:g1 3681:++ 3663:() 3603:_t 3573:_t 3473:. 3396:if 3390:++ 3279:); 3258:); 3234:in 3216:); 3189:}; 3150:() 2804:); 2789:); 2765:); 2662:if 2650:)( 2580:{} 2562:if 2505:is 2321:: 2139:. 2119:, 1987:); 1963::: 1864:y, 1842:. 1758:of 1740:is 1722:is 1707:is 1666:); 1663:10 1606:is 1597:in 1594:: 1522:is 1503:); 1491:20 1456:is 1425:); 1419:.. 1386:is 1377::= 1371:: 1350:of 1332:is 1317:.. 1305:is 1269:); 1260:: 1245:in 1242:: 1227:); 1221:in 1218:: 1203:in 1200:: 1185:); 1179::= 1173:in 1170:: 1155:: 1131:is 1116:.. 1107:is 1098:is 1080:is 1023:A 1020:. 1012:A 1009:. 869:C# 839:‘\ 818::: 812:); 779::: 758::: 565:}; 459:. 447:, 443:, 439:, 435:, 415:, 413:ML 301:+ 286:× 277:, 183:, 179:, 177:ML 161:, 157:, 153:, 151:Go 149:, 145:, 141:, 137:, 135:F# 133:, 129:, 125:, 123:C# 121:, 93:. 68:. 54:ML 8674:e 8667:t 8660:v 8556:) 8540:( 8524:) 8520:( 8489:) 8485:( 8411:) 8407:( 8379:, 8374:, 8354:) 8342:( 8222:) 8218:( 8212:) 8208:( 8154:) 8150:( 8106:) 8102:( 8015:) 8011:( 7997:) 7993:( 7932:) 7924:( 7847:) 7843:( 7833:e 7826:t 7819:v 7764:, 7731:, 7723:) 7696:, 7606:" 7523:. 7508:) 7484:. 7462:: 7446:. 7425:. 7413:, 7396:. 7382:: 7348:. 7334:: 7310:. 7291:. 7164:. 7100:. 7074:. 7060:: 7027:. 7002:. 6956:. 6926:. 6902:. 6887:. 6875:: 6848:. 6801:. 6779:: 6750:. 6725:. 6706:. 6693:. 6664:. 6649:. 6568:C 6489:) 6483:( 6480:= 6477:} 6474:| 6468:| 6465:{ 6459:) 6453:( 6450:= 6447:} 6444:| 6438:| 6435:{ 6429:) 6423:( 6420:= 6417:} 6414:| 6408:| 6405:{ 6378:= 6375:) 6363:( 6360:) 6348:( 6339:} 6336:| 6330:| 6327:{ 6318:= 6315:_ 6312:_ 6303:} 6300:| 6294:| 6291:{ 6276:= 6273:) 6264:( 6261:) 6252:( 6243:} 6240:| 6234:| 6231:{ 6216:= 6213:) 6204:( 6201:) 6192:( 6183:} 6180:| 6174:| 6171:{ 6162:= 6159:_ 6156:_ 6153:} 6150:| 6144:| 6141:{ 6135:t 6132:t 6120:} 6117:| 6114:k 6108:t 6105:| 6102:{ 6096:) 6087:( 6084:) 6075:( 6051:. 6039:= 6006:= 5957:* 5944:. 5906:b 5900:a 5897:d 5891:) 5888:b 5882:b 5879:a 5876:d 5870:( 5864:d 5849:x 5846:\ 5840:t 5828:. 5822:. 5813:g 5810:@ 5807:d 5804:x 5798:x 5795:\ 5783:x 5780:\ 5768:x 5765:\ 5756:y 5747:x 5738:) 5735:y 5732:, 5729:x 5726:( 5723:\ 5717:h 5714:* 5711:g 5696:h 5693:+ 5690:g 5684:f 5675:a 5672:f 5654:= 5645:a 5642:d 5636:d 5616:t 5612:a 5565:T 5546:) 5540:, 5534:( 5528:) 5525:a 5519:( 5516:a 5513:) 5510:a 5504:( 5498:| 5495:a 5489:= 5486:a 5427:. 5421:; 5415:. 5409:; 5403:. 5394:; 5385:( 5379:. 5373:( 5364:; 5355:( 5349:. 5343:( 5337:; 5331:. 5319:; 5313:. 5298:; 5292:: 5286:; 5280:: 5259:. 5256:B 5250:= 5232:. 5229:A 5223:= 5211:; 5208:B 5205:, 5202:A 5187:; 5175:. 5169:; 5163:. 5157:; 5151:. 5142:; 5133:( 5127:. 5121:( 5112:; 5103:( 5097:. 5091:( 5085:; 5067:. 5064:B 5055:; 5037:. 5034:A 5010:. 5007:B 5004:: 4986:. 4983:A 4980:: 4971:; 4968:B 4965:, 4962:A 4947:; 4935:. 4929:; 4923:; 4917:+ 4902:; 4899:T 4896:: 4893:) 4890:T 4887:: 4878:( 4872:. 4860:; 4854:; 4851:T 4848:: 4845:) 4842:T 4839:: 4830:( 4818:= 4812:T 4785:; 4782:B 4773:. 4767:; 4761:; 4755:+ 4740:; 4737:T 4734:: 4731:) 4728:T 4725:: 4716:( 4707:T 4692:; 4686:; 4683:T 4680:: 4677:) 4674:T 4671:: 4662:( 4650:= 4644:T 4620:; 4617:A 4585:. 4579:; 4573:; 4570:) 4564:( 4543:; 4540:) 4537:2 4534:, 4528:( 4513:. 4507:; 4504:) 4501:3 4498:, 4495:2 4492:, 4489:1 4486:, 4483:0 4480:( 4453:; 4447:: 4429:: 4420:; 4414:; 4411:) 4405:, 4399:, 4393:( 4387:T 4375:; 4372:) 4369:T 4366:: 4354:T 4345:: 4339:( 4333:T 4324:. 4312:; 4306:; 4291:0 4285:) 4279:, 4273:( 4267:. 4255:) 4249:( 4240:) 4234:( 4225:I 4219:; 4210:T 4189:= 4177:; 4171:: 4168:I 4162:; 4159:) 4153:T 4144:: 4138:; 4135:T 4132:: 4120:T 4111:: 4105:( 4099:T 4090:. 4078:; 4072:; 4066:; 4063:) 4060:T 4057:: 4045:T 4036:: 4030:( 4024:T 4009:; 4003:; 4000:) 3994:T 3985:: 3979:; 3976:T 3973:: 3961:T 3952:: 3946:( 3940:T 3922:= 3910:; 3904:. 3892:; 3858:( 3840:= 3816:( 3798:= 3774:( 3756:= 3735:1 3732:( 3714:= 3690:} 3687:} 3684:; 3675:. 3666:{ 3651:; 3633:{ 3618:} 3615:} 3612:; 3609:t 3606:= 3600:{ 3597:) 3594:t 3591:T 3588:( 3576:; 3570:T 3552:= 3537:{ 3531:T 3459:T 3455:T 3444:} 3441:} 3438:; 3432:= 3426:) 3423:0 3417:) 3411:( 3405:. 3399:( 3393:) 3387:i 3384:; 3378:. 3369:i 3366:; 3363:0 3360:= 3357:i 3351:( 3345:{ 3339:T 3330:: 3327:T 3321:) 3315:T 3312:, 3306:T 3303:( 3297:T 3282:} 3273:( 3267:. 3255:i 3252:( 3246:. 3240:) 3231:i 3225:( 3213:2 3210:, 3204:( 3186:3 3183:, 3180:2 3177:, 3174:1 3171:, 3168:0 3165:{ 3162:= 3153:{ 3138:{ 3129:; 3077:] 2989:G 2956:: 2944:: 2934:G 2897:) 2894:G 2891:: 2885:( 2867:G 2864:: 2840:G 2798:( 2783:( 2777:= 2759:( 2753:= 2686:} 2680:{ 2677:) 2671:! 2665:( 2659:) 2644:( 2628:} 2619:; 2613:. 2610:r 2607:= 2604:h 2589:. 2586:r 2577:) 2571:. 2568:r 2565:( 2556:; 2550:. 2547:R 2544:= 2541:r 2538:R 2535:{ 2532:) 2529:0 2526:= 2517:( 2514:( 2508:( 2502:= 2490:{ 2487:) 2484:R 2481:( 2415:. 2393:D 2286:C 2168:y 2164:x 2084:y 2080:x 2073:} 2070:; 2067:x 2064:: 2061:y 2058:? 2055:y 2049:x 2043:{ 2040:) 2037:y 2031:, 2028:x 2022:( 2005:T 1984:7 1981:, 1978:3 1975:( 1947:} 1944:; 1941:x 1938:: 1935:y 1932:? 1929:y 1923:x 1917:{ 1914:) 1911:y 1908:T 1905:, 1902:x 1899:T 1896:( 1890:T 1884:T 1860:x 1764:; 1746:( 1728:; 1678:; 1654:, 1648:. 1639:S 1636:( 1630:. 1618:; 1612:: 1603:) 1588:( 1579:; 1573:; 1567:. 1561:: 1555:; 1549:. 1543:. 1537:. 1531:: 1493:, 1483:( 1465:; 1440:; 1431:; 1416:1 1413:( 1407:: 1401:; 1395:: 1383:) 1380:0 1365:( 1356:; 1338:( 1323:; 1314:1 1293:; 1287:: 1281:; 1275:: 1254:; 1236:( 1212:; 1194:( 1164:; 1152:S 1149:( 1140:; 1122:; 1113:0 1086:; 1068:; 1062:: 992:) 986:( 981:) 977:( 967:· 960:· 953:· 946:· 929:. 915:. 848:; 845:’ 842:n 806:, 800:( 794:; 788:= 773:; 767:= 752:} 749:; 743:= 740:a 737:; 734:a 731:= 728:b 725:; 722:b 719:= 713:T 704:{ 701:) 698:b 692:T 689:, 686:a 680:T 677:( 665:T 608:T 601:; 583:; 559:{ 547:T 441:D 303:M 299:N 288:M 284:N 271:M 267:N 108:D 23:.

Index

Genetic programming
computer programming
algorithms
data types
parameters
ML
functions
types
duplicate code
Ada
templates
C++
Design Patterns
Andrei Alexandrescu
Modern C++ Design: Generic Programming and Design Patterns Applied
D
Ada
C#
Delphi
Eiffel
F#
Java
Nim
Python
Go
Rust
Swift
TypeScript
Visual Basic .NET
parametric polymorphism

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.