Knowledge

Tagged union

Source đź“ť

1535: 586:. While universal data types are comparable to tagged unions in their formal definition, typical tagged unions include a relatively small number of cases, and these cases form different ways of expressing a single coherent concept, such as a data structure node or instruction. Also, there is an expectation that every possible case of a tagged union will be dealt with when it is used. The values of a universal data type are not related and there is no feasible way to deal with them all. 1382: 1141: 889: 1147: 924: 680: 1377:{\displaystyle {\text{join}}\colon ((A+E)+E)\to (A+E)=a\mapsto {\begin{cases}{\text{err}}\,e&{\mbox{if}}\ a={\text{err}}\,e\\{\text{err}}\,e&{\text{if}}\ a={\text{value}}\,{\text{(err}}\,e\,{\text{)}}\\{\text{value}}\,a'&{\text{if}}\ a={\text{value}}\,{\text{(value}}\,a'\,{\text{)}}\end{cases}}} 1445:
This is a tagged union with two cases: one, the leaf, is used to terminate a path of the tree, and functions much like a null value would in imperative languages. The other branch holds a node, which contains an integer and a left and right subtree. Leaf and Node are the constructors, which enable us
78:
field explicitly indicates which type is in use. It can be thought of as a type that has several "cases", each of which should be handled correctly when that type is manipulated. This is critical in defining recursive datatypes, in which some component of a value may have the same type as that value,
530:
The primary advantage of a tagged union over an untagged union is that all accesses are safe, and the compiler can even check that all cases are handled. Untagged unions depend on program logic to correctly identify the currently active field, which may result in strange behavior and hard-to-find
2463:
As long as the union fields are only accessed through the functions, the accesses will be safe and correct. The same approach can be used for encoded tags; we simply decode the tag and then check it on each access. If the inefficiency of these tag checks is a concern, they may be automatically
546:
The main disadvantage of tagged unions is that the tag occupies space. Since there are usually a small number of alternatives, the tag can often be squeezed into 2 or 3 bits wherever space can be found, but sometimes even these bits are not available. In this case, a helpful alternative may be
6524:. It can be extended by creating further subclasses of the same base type, which could not be handled correctly under a tag/dispatch model. Hence, it is usually not possible to do case analysis or dispatch on a subobject's 'tag' as one would for tagged unions. Some languages such as 1136:{\displaystyle {\text{fmap}}\colon (A\to B)\to \left(\left(A+E\right)\to \left(B+E\right)\right)=f\mapsto a\mapsto {\begin{cases}{\text{err}}\,e&{\text{if}}\ a={\text{err}}\,e\\{\text{value}}\,{\text{(}}\,f\,a'\,{\text{)}}&{\text{if}}\ a={\text{value}}\,a'\end{cases}}} 538:
containing a field for each type is that it saves storage by overlapping storage for all the types. Some implementations reserve enough storage for the largest type, while others dynamically adjust the size of a tagged union value as needed. When the value is
884:{\displaystyle {\text{bind}}\colon \left(A+E\right)\to \left(A\to \left(B+E\right)\right)\to \left(B+E\right)=a\mapsto f\mapsto {\begin{cases}{\text{err}}\,e&{\text{if}}\ a={\text{err}}\,e\\f\,a'&{\text{if}}\ a={\text{value}}\,a'\end{cases}}} 433: 674: 574:
Sometimes, untagged unions are used to perform bit-level conversions between types, called reinterpret casts in C++. Tagged unions are not intended for this purpose; typically a new value is assigned whenever the tag is changed.
2502:
Unfortunately, C compilers do not verify that the null case is always handled. This is a particularly common source of errors in C code, since there is a tendency to ignore exceptional cases.
582:, which is a type that includes every value of every other type, and often a way is provided to test the actual type of a value of the universal type. These are sometimes referred to as 453: 348: 323: 477:. It corresponds to a set of nullary constructors and may be implemented as a simple tag variable, since it holds no additional data besides the value of the tag. 131:, and are much safer than untagged unions, often simply called unions, which are similar but do not explicitly track which member of a union is currently in use. 1770:(from the 1990s) give a central role to tagged unions and have the power to check that all cases are handled. Some other languages also support tagged unions. 611: 601:, and their occurrence is not consistently checked: this is a fairly common source of programming errors. This use of tagged unions can be formalized as a 119:
can verify that all cases of a tagged union are always handled, avoiding many types of errors. Compile-time checked sum types are also extensively used in
146:. A constructor is a function or an expression that produces a value of the tagged union type, given a tag and a value of the corresponding type. 6509:
pointer in most C++ implementations) identifies the subclass and so effectively acts as a tag identifying the data stored by the instance (see
3940:
can be used to emulate pattern matching or to create syntactic sugar for declaring object variants, seen here as implemented by the package
74:
used to hold a value that could take on several different, but fixed, types. Only one of the types can be in use at any one time, and a
6870: 6514: 139: 515: 7241: 6875: 597:, tagged unions are sometimes used to handle the occurrence of exceptional results. Often these tags are folded into the type as 6865: 6860: 6848: 6749: 1534: 2162:, a tagged union can be created from untagged unions using a strict access discipline where the tag is always checked: 7026: 2536:
demonstrated it was possible to implement a safe tagged union as a library in C++, visitable using function objects.
1792:
in Ada), and require the tag field to be manually created and the tag values specified, as in this Pascal example:
559:, where the tag value is dynamically computed from the contents of the union field. Common examples are the use of 6999: 463: 87:, tagged unions can save storage by overlapping storage areas for each type, since only one is in use at a time. 3525:
Because the defined cases are exhaustive, the compiler can check that all cases are handled in a pattern match:
7116: 6921: 6853: 6815: 3371: 2511: 2468: 602: 493: 3018:
Because the class hierarchy is sealed, the compiler can check that all cases are handled in a pattern match:
1773: 6646: 7016: 6946: 6794: 6525: 5094: 2840: 2526: 143: 17: 7271: 6906: 6498: 4636: 2518: 120: 6894: 3804: 1777: 1542:
Now we can easily write a typesafe function that, for example, counts the number of nodes in the tree:
7204: 7156: 7068: 7046: 7041: 6969: 6835: 6789: 1763: 535: 270: 100: 6660: 5943:
introduces support for typing annotations that can be used to define a tagged union type (PEP-593):
1218: 1025: 791: 563:, where, for example, a function returning a positive number may return -1 to indicate failure, and 7078: 6742: 6721: 3937: 2155: 7231: 7146: 221: 6618: 6974: 6830: 6784: 1759: 96: 6594: 4325:
Enums are added in Scala 3, allowing us to rewrite the earlier Scala examples more concisely:
428:{\displaystyle {\mathsf {case}}\ e\ {\mathsf {of}}\ x\Rightarrow e_{1}\mid y\Rightarrow e_{2}} 6964: 6939: 2533: 481: 80: 175:. If an element lies in both, there will be two effectively distinct copies of the value in 7297: 6766: 6521: 6506: 456: 438: 308: 128: 27:
Data structure used to hold a value that could take on several different, but fixed, types
8: 7292: 7236: 7214: 7141: 6994: 6986: 6735: 459: 135: 112: 6501:, each subclass can encapsulate data unique to that class. The metadata used to perform 2467:
C and C++ also have language support for one particular tagged union: the possibly-null
7219: 7199: 7151: 7126: 6911: 6880: 6717: 6546: 594: 203: 5067:
Rust's error handling model relies extensively on these tagged unions, especially the
669:{\displaystyle {\text{return}}\colon A\to \left(A+E\right)=a\mapsto {\text{value}}\,a} 7106: 7036: 7011: 6825: 6820: 6632: 6528:
allow base classes to be "sealed", and unify tagged unions with sealed base classes.
83:, where it is necessary to distinguish multi-node subtrees and leaves. Like ordinary 7251: 7136: 6934: 540: 266: 31: 7256: 7121: 7073: 7006: 6566: 6494: 906:
is the type of error conditions. Alternately, the same monad may be described by
512: 501: 489: 485: 470: 6580: 6026: 7209: 7031: 7021: 6929: 6711: 6502: 2480: 568: 564: 505: 151: 71: 56: 7286: 7131: 6537: 5097:
also has substantial support for tagged unions via enumerations. For example:
6684: 5940: 7063: 2491: 207: 3941: 7266: 7261: 7111: 7058: 6885: 6517:
sets this tag, and it remains constant throughout the object's lifetime.
1393: 590: 195: 7171: 7166: 7083: 7051: 6956: 6899: 5435: 1396:
of integers. In ML, we would do this by creating a datatype like this:
497: 84: 3807:
has object variants similar in declaration to those in Pascal and Ada:
7246: 7224: 7181: 7176: 6843: 6799: 6758: 474: 66: 4639:
has extensive support for tagged unions, called enums. For example:
7161: 1781: 1650: 579: 519: 116: 518:. The tag of the tagged union can be seen as the simplest kind of 6022: 1767: 104: 894:
where "value" and "err" are the constructors of the union type,
159:, usually written using +. Given an element of a disjoint union 543:, it is simple to allocate just as much storage as is needed. 6727: 6541: 2159: 6779: 6661:"Enumerations — The Swift Programming Language (Swift 5.4)" 6510: 3589: 2522: 1370: 1129: 877: 508:, are usually implemented using some sort of tagged union. 480:
Many programming techniques and data structures, including
5438:
it is also possible to create tagged unions. For example:
3106:
Scala's case classes also permit reuse through subtyping:
6774: 2149:-- discriminant is not the expected one, raises an error. 2143:-- Any attempt to access a member which existence depends 134:
Tagged unions are often accompanied by the concept of a
6685:"PEP 593 -- Flexible function and variable annotations" 1663:
construct is used to determine which field is tagged:
1233: 534:
The primary advantage of a tagged union over a simple
6488: 2483:: a tagged union (with an encoded tag) of two types: 1150: 927: 683: 614: 441: 351: 311: 2514:, has extensive built-in support for tagged unions. 2146:-- on a certain value of the discriminant, while the 473:
can be seen as a degenerate case: a tagged union of
167:, it is possible to determine whether it came from 511:A tagged union can be seen as the simplest kind of 1376: 1135: 883: 668: 447: 427: 317: 127:. They can, however, be constructed in nearly any 6581:"Using Enums - Haxe - The Cross-platform Toolkit" 7284: 3671:These can be matched using a switch expression: 1446:to actually produce a particular tree, such as: 265:The elimination form is case analysis, known as 79:for example in defining a type for representing 1639: 525: 6520:Nevertheless, a class hierarchy involves true 6743: 6441:// The !sizeof(T) expression is always false 149:Mathematically, tagged unions correspond to 6540:, the type tag for discriminated unions in 1538:The tree produced by the above constructors 210:. Notations vary, but usually the sum type 6750: 6736: 6619:"Scala 3 Language Reference: Enumerations" 2676:"It's a string, with value " 578:Many languages support, to some extent, a 1361: 1352: 1346: 1316: 1301: 1297: 1291: 1266: 1253: 1226: 1117: 1090: 1081: 1077: 1071: 1058: 1033: 865: 835: 824: 799: 662: 138:, which is similar but not the same as a 6720:is an implementation of variant type in 2604:"It's an int, with value " 14: 7285: 2529:languages also work as tagged unions. 2498:, indicating an exceptional condition. 2479:type in Haskell, and can be seen as a 382: 379: 363: 360: 357: 354: 6731: 6714:is a C++ typesafe discriminated union 3787:"Color had a red value of " 3592:'s enums also work as tagged unions: 6483:std::visit(Transverser{}, forest);*/ 3584:"top level node is a leaf" 3566:"top level node value: %i" 3095:"top level node is a leaf" 1754: 95:Tagged unions are most important in 6465:"non-exhaustive visitor!" 4706:It also allows matching on unions: 220:comes with two introduction forms ( 24: 6505:lookup (for example, the object's 6489:Class hierarchies as tagged unions 3068:"top level node value: " 2510:One advanced dialect of C, called 1533: 25: 7309: 6705: 1531:which corresponds to this tree: 6633:"The Rust Programming Language" 1657:, the tag is implicit, and the 6757: 6677: 6653: 6639: 6625: 6611: 6587: 6573: 6559: 2471:. This may be compared to the 2464:removed in the final version. 1740:c): print(("compl:", c)), ( 1736:i): print(("int:", i)), ( 1732:r): print(("real:", r)), ( 1210: 1201: 1189: 1186: 1183: 1174: 1162: 1159: 1017: 1011: 978: 951: 948: 942: 936: 910:and two additional functions, 783: 777: 749: 722: 711: 654: 626: 605:with the following functions: 494:arbitrary-precision arithmetic 455:. The sum type corresponds to 412: 393: 90: 13: 1: 6816:Arbitrary-precision or bignum 6552: 2532:The variant library from the 198:, a tagged union is called a 6025:introduces std::variant and 1744:s): print(("string:", s)) 1640:Timeline of language support 526:Advantages and disadvantages 345:respectively, then the term 7: 6531: 6499:object-oriented programming 3727:"Color was green" 1653:, tagged unions are called 1387: 902:are valid result types and 464:Curry–Howard correspondence 10: 7314: 3748:"Color was blue" 3374:has discriminated unions: 2494:type with only one value, 531:bugs if that logic fails. 7190: 7157:Strongly typed identifier 7099: 6985: 6955: 6920: 6808: 6765: 3706:"Color was red" 1964:and this Ada equivalent: 1720:n := "1234";   1392:Say we wanted to build a 6567:"Cyclone: Tagged Unions" 6030: 5945: 5440: 5099: 4708: 4641: 4327: 4320: 3946: 3809: 3673: 3594: 3527: 3376: 3108: 3020: 2845: 2538: 2505: 2164: 1966: 1794: 1644: 1544: 1448: 1398: 123:, where they are called 107:, where they are called 7232:Parametric polymorphism 2808:"hello world" 5083:type, which is either 5071:type, which is either 2517:The enum types in the 1760:Functional programming 1539: 1378: 1137: 885: 670: 449: 429: 325:under the assumptions 319: 97:functional programming 1766:(from the 1970s) and 1537: 1379: 1138: 886: 671: 567:, most often used in 504:, and other kinds of 450: 448:{\displaystyle \tau } 430: 320: 318:{\displaystyle \tau } 6522:subtype polymorphism 6480:/*Tree forest = ...; 1148: 925: 681: 612: 439: 349: 309: 202:. Sum types are the 157:discriminated unions 129:programming language 7237:Primitive data type 7142:Recursive data type 6995:Algebraic data type 6871:Quadruple precision 2534:Boost C++ Libraries 580:universal data type 460:logical disjunction 113:algebraic data type 52:discriminated union 7200:Abstract data type 6881:Extended precision 6840:Reduced precision 6583:. Haxe Foundation. 6547:Variant type (COM) 5966:'Currency' 5081:Result<T, E> 2843:has case classes: 2475:type in ML or the 1790:discriminated type 1762:languages such as 1697:Usage example for 1540: 1374: 1369: 1237: 1133: 1128: 881: 876: 666: 595:exception handling 445: 425: 315: 99:languages such as 7280: 7279: 7012:Associative array 6876:Octuple precision 6647:"Rust By Example" 6621:. The Scala Team. 5975:'dollars' 1755:1970s & 1980s 1748:print(("?:", n)) 1365: 1350: 1344: 1334: 1330: 1314: 1305: 1295: 1289: 1279: 1275: 1264: 1251: 1241: 1236: 1224: 1154: 1115: 1105: 1101: 1094: 1075: 1069: 1056: 1046: 1042: 1031: 931: 863: 853: 849: 822: 812: 808: 797: 687: 660: 618: 389: 376: 370: 16:(Redirected from 7305: 7252:Type constructor 7137:Opaque data type 7069:Record or Struct 6866:Double precision 6861:Single precision 6752: 6745: 6738: 6729: 6728: 6699: 6698: 6696: 6695: 6681: 6675: 6674: 6672: 6671: 6657: 6651: 6650: 6643: 6637: 6636: 6629: 6623: 6622: 6615: 6609: 6608: 6606: 6605: 6591: 6585: 6584: 6577: 6571: 6570: 6563: 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: 6018: 6015: 6012: 6009: 6006: 6003: 6000: 5997: 5994: 5991: 5988: 5987:'pounds' 5985: 5982: 5979: 5976: 5973: 5970: 5967: 5964: 5961: 5958: 5955: 5952: 5949: 5936: 5933: 5930: 5927: 5924: 5921: 5918: 5915: 5912: 5909: 5906: 5903: 5900: 5897: 5894: 5891: 5888: 5885: 5882: 5879: 5876: 5873: 5870: 5867: 5864: 5863:"node" 5861: 5858: 5855: 5852: 5851:"leaf" 5849: 5846: 5843: 5840: 5837: 5834: 5831: 5828: 5825: 5822: 5819: 5816: 5813: 5810: 5807: 5804: 5801: 5798: 5795: 5792: 5789: 5788:"leaf" 5786: 5783: 5780: 5777: 5774: 5771: 5768: 5767:"leaf" 5765: 5762: 5759: 5756: 5753: 5750: 5747: 5744: 5741: 5738: 5735: 5734:"node" 5732: 5729: 5726: 5723: 5720: 5717: 5714: 5713:"leaf" 5711: 5708: 5705: 5702: 5699: 5696: 5693: 5690: 5687: 5684: 5681: 5680:"node" 5678: 5675: 5672: 5669: 5666: 5663: 5660: 5657: 5656:"leaf" 5654: 5651: 5648: 5645: 5642: 5639: 5636: 5635:"leaf" 5633: 5630: 5627: 5624: 5621: 5618: 5615: 5612: 5609: 5606: 5603: 5602:"node" 5600: 5597: 5594: 5591: 5588: 5585: 5582: 5579: 5576: 5573: 5570: 5569:"node" 5567: 5564: 5561: 5558: 5555: 5552: 5549: 5546: 5543: 5540: 5537: 5534: 5531: 5528: 5525: 5522: 5519: 5516: 5513: 5510: 5507: 5504: 5501: 5498: 5495: 5492: 5489: 5486: 5483: 5482:"node" 5480: 5477: 5474: 5471: 5468: 5465: 5462: 5459: 5458:"leaf" 5456: 5453: 5450: 5447: 5444: 5430: 5427: 5424: 5421: 5418: 5415: 5412: 5409: 5406: 5403: 5400: 5397: 5394: 5391: 5388: 5385: 5382: 5379: 5376: 5373: 5370: 5367: 5364: 5361: 5358: 5355: 5352: 5349: 5346: 5343: 5340: 5337: 5334: 5331: 5328: 5325: 5322: 5319: 5316: 5313: 5310: 5307: 5304: 5301: 5298: 5295: 5292: 5289: 5286: 5283: 5280: 5277: 5274: 5271: 5268: 5265: 5262: 5259: 5256: 5253: 5250: 5247: 5244: 5241: 5238: 5235: 5232: 5229: 5226: 5223: 5220: 5217: 5214: 5211: 5208: 5205: 5202: 5199: 5196: 5193: 5190: 5187: 5184: 5181: 5178: 5175: 5172: 5169: 5166: 5163: 5160: 5157: 5154: 5151: 5148: 5145: 5142: 5139: 5136: 5133: 5130: 5127: 5124: 5121: 5118: 5115: 5112: 5109: 5106: 5103: 5090: 5086: 5082: 5078: 5074: 5070: 5063: 5060: 5057: 5054: 5051: 5048: 5045: 5042: 5039: 5036: 5033: 5030: 5027: 5023: 5020: 5017: 5014: 5011: 5008: 5005: 5002: 4999: 4996: 4993: 4990: 4987: 4984: 4981: 4978: 4975: 4972: 4969: 4966: 4963: 4960: 4957: 4953: 4950: 4947: 4944: 4941: 4938: 4934: 4931: 4927: 4924: 4921: 4918: 4915: 4912: 4909: 4905: 4902: 4899: 4895: 4892: 4889: 4885: 4882: 4879: 4875: 4872: 4869: 4866: 4863: 4859: 4856: 4853: 4849: 4846: 4843: 4839: 4836: 4833: 4829: 4826: 4823: 4820: 4817: 4813: 4810: 4807: 4803: 4800: 4797: 4793: 4790: 4787: 4783: 4780: 4777: 4773: 4770: 4767: 4763: 4760: 4757: 4754: 4751: 4747: 4744: 4741: 4737: 4734: 4731: 4728: 4725: 4721: 4718: 4715: 4712: 4702: 4699: 4696: 4693: 4690: 4687: 4684: 4681: 4678: 4675: 4672: 4669: 4666: 4663: 4660: 4657: 4654: 4651: 4648: 4645: 4631: 4628: 4625: 4622: 4619: 4616: 4613: 4610: 4607: 4604: 4601: 4598: 4595: 4592: 4589: 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: 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: 3933: 3930: 3927: 3924: 3921: 3918: 3915: 3912: 3909: 3906: 3903: 3900: 3897: 3894: 3891: 3888: 3885: 3882: 3879: 3876: 3873: 3870: 3867: 3864: 3861: 3858: 3855: 3852: 3849: 3846: 3843: 3840: 3837: 3834: 3831: 3828: 3825: 3822: 3819: 3816: 3813: 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: 3667: 3664: 3661: 3658: 3655: 3652: 3649: 3646: 3643: 3640: 3637: 3634: 3631: 3628: 3625: 3622: 3619: 3616: 3613: 3610: 3607: 3604: 3601: 3598: 3585: 3582: 3579: 3576: 3573: 3570: 3567: 3564: 3561: 3558: 3555: 3552: 3549: 3546: 3543: 3540: 3537: 3534: 3531: 3521: 3518: 3515: 3512: 3509: 3506: 3503: 3500: 3497: 3494: 3491: 3488: 3485: 3482: 3479: 3476: 3473: 3470: 3467: 3464: 3461: 3458: 3455: 3452: 3449: 3446: 3443: 3440: 3437: 3434: 3431: 3428: 3425: 3422: 3419: 3416: 3413: 3410: 3407: 3404: 3401: 3398: 3395: 3392: 3389: 3386: 3383: 3380: 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: 3121: 3118: 3115: 3112: 3102: 3099: 3096: 3093: 3090: 3087: 3084: 3081: 3078: 3075: 3072: 3069: 3066: 3063: 3060: 3057: 3054: 3051: 3048: 3045: 3042: 3039: 3036: 3033: 3030: 3027: 3024: 3014: 3011: 3008: 3005: 3002: 2999: 2996: 2993: 2990: 2987: 2984: 2981: 2978: 2975: 2972: 2969: 2966: 2963: 2960: 2957: 2954: 2951: 2948: 2945: 2942: 2939: 2936: 2933: 2930: 2927: 2924: 2921: 2918: 2915: 2912: 2909: 2906: 2903: 2900: 2897: 2894: 2891: 2888: 2885: 2882: 2879: 2876: 2873: 2870: 2867: 2864: 2861: 2858: 2855: 2852: 2849: 2836: 2833: 2830: 2827: 2824: 2821: 2818: 2815: 2812: 2809: 2806: 2803: 2800: 2797: 2794: 2791: 2788: 2785: 2782: 2779: 2776: 2773: 2770: 2767: 2764: 2761: 2758: 2755: 2752: 2749: 2746: 2743: 2740: 2737: 2734: 2731: 2728: 2725: 2722: 2719: 2716: 2713: 2710: 2707: 2704: 2701: 2698: 2695: 2692: 2689: 2686: 2683: 2680: 2677: 2674: 2671: 2668: 2665: 2662: 2659: 2656: 2653: 2650: 2647: 2644: 2641: 2638: 2635: 2632: 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: 2497: 2478: 2474: 2459: 2456: 2453: 2450: 2447: 2444: 2441: 2438: 2435: 2432: 2429: 2426: 2423: 2420: 2417: 2414: 2411: 2408: 2405: 2402: 2399: 2396: 2393: 2390: 2387: 2384: 2381: 2378: 2375: 2372: 2369: 2366: 2363: 2360: 2357: 2354: 2351: 2348: 2345: 2342: 2339: 2336: 2333: 2330: 2327: 2324: 2321: 2318: 2315: 2312: 2309: 2306: 2303: 2300: 2297: 2294: 2291: 2288: 2285: 2282: 2279: 2276: 2273: 2270: 2267: 2264: 2261: 2258: 2255: 2252: 2249: 2246: 2243: 2240: 2237: 2234: 2231: 2228: 2225: 2222: 2219: 2216: 2213: 2210: 2207: 2204: 2201: 2198: 2195: 2192: 2189: 2186: 2183: 2180: 2177: 2174: 2171: 2168: 2150: 2147: 2144: 2141: 2138: 2135: 2132: 2129: 2126: 2123: 2120: 2117: 2114: 2111: 2108: 2105: 2102: 2099: 2096: 2093: 2090: 2087: 2084: 2081: 2078: 2075: 2072: 2069: 2066: 2063: 2060: 2057: 2054: 2051: 2048: 2045: 2042: 2039: 2036: 2033: 2030: 2027: 2024: 2021: 2018: 2015: 2012: 2009: 2006: 2003: 2000: 1997: 1994: 1991: 1988: 1985: 1982: 1979: 1976: 1973: 1970: 1960: 1957: 1954: 1951: 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: 1873: 1870: 1867: 1864: 1861: 1858: 1855: 1852: 1849: 1846: 1843: 1840: 1837: 1834: 1831: 1828: 1825: 1822: 1819: 1816: 1813: 1810: 1807: 1804: 1801: 1798: 1713: 1707: 1702: 1694: 1662: 1635: 1632: 1629: 1626: 1623: 1620: 1617: 1614: 1611: 1608: 1605: 1602: 1599: 1596: 1593: 1590: 1587: 1584: 1581: 1578: 1575: 1572: 1569: 1566: 1563: 1560: 1557: 1554: 1551: 1548: 1527: 1524: 1521: 1518: 1515: 1512: 1509: 1506: 1503: 1500: 1497: 1494: 1491: 1488: 1485: 1482: 1479: 1476: 1473: 1470: 1467: 1464: 1461: 1458: 1455: 1452: 1441: 1438: 1435: 1432: 1429: 1426: 1423: 1420: 1417: 1414: 1411: 1408: 1405: 1402: 1383: 1381: 1380: 1375: 1373: 1372: 1366: 1363: 1360: 1351: 1348: 1345: 1342: 1332: 1331: 1328: 1324: 1315: 1312: 1306: 1303: 1296: 1293: 1290: 1287: 1277: 1276: 1273: 1265: 1262: 1252: 1249: 1239: 1238: 1234: 1225: 1222: 1155: 1152: 1142: 1140: 1139: 1134: 1132: 1131: 1125: 1116: 1113: 1103: 1102: 1099: 1095: 1092: 1089: 1076: 1073: 1070: 1067: 1057: 1054: 1044: 1043: 1040: 1032: 1029: 1004: 1000: 999: 995: 977: 973: 932: 929: 890: 888: 887: 882: 880: 879: 873: 864: 861: 851: 850: 847: 843: 823: 820: 810: 809: 806: 798: 795: 770: 766: 748: 744: 743: 739: 710: 706: 688: 685: 675: 673: 672: 667: 661: 658: 647: 643: 619: 616: 454: 452: 451: 446: 434: 432: 431: 426: 424: 423: 405: 404: 387: 386: 385: 374: 368: 367: 366: 344: 334: 324: 322: 321: 316: 304: 295: 286: 276: 267:pattern matching 264: 262: 242: 219: 38:, also called a 32:computer science 21: 7313: 7312: 7308: 7307: 7306: 7304: 7303: 7302: 7283: 7282: 7281: 7276: 7257:Type conversion 7192: 7186: 7122:Enumerated type 7095: 6981: 6975:null-terminated 6951: 6916: 6804: 6761: 6756: 6708: 6703: 6702: 6693: 6691: 6683: 6682: 6678: 6669: 6667: 6659: 6658: 6654: 6645: 6644: 6640: 6631: 6630: 6626: 6617: 6616: 6612: 6603: 6601: 6593: 6592: 6588: 6579: 6578: 6574: 6565: 6564: 6560: 6555: 6534: 6513:). An object's 6495:class hierarchy 6491: 6486: 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: 6020: 6019: 6016: 6013: 6010: 6007: 6004: 6001: 5998: 5995: 5992: 5989: 5986: 5983: 5980: 5977: 5974: 5971: 5968: 5965: 5962: 5959: 5956: 5953: 5950: 5947: 5938: 5937: 5934: 5931: 5928: 5925: 5922: 5919: 5916: 5913: 5910: 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: 5625: 5622: 5619: 5616: 5613: 5610: 5607: 5604: 5601: 5598: 5595: 5592: 5589: 5586: 5583: 5580: 5577: 5574: 5571: 5568: 5565: 5562: 5559: 5556: 5553: 5550: 5547: 5544: 5541: 5538: 5535: 5532: 5529: 5526: 5523: 5520: 5517: 5514: 5511: 5508: 5505: 5502: 5499: 5496: 5493: 5490: 5487: 5484: 5481: 5478: 5475: 5472: 5469: 5466: 5463: 5460: 5457: 5454: 5451: 5448: 5445: 5442: 5432: 5431: 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: 5088: 5084: 5080: 5076: 5072: 5069:Option<T> 5068: 5065: 5064: 5061: 5058: 5055: 5052: 5049: 5046: 5043: 5040: 5037: 5034: 5031: 5028: 5025: 5021: 5018: 5015: 5012: 5009: 5006: 5003: 5000: 4997: 4994: 4991: 4988: 4985: 4982: 4979: 4976: 4973: 4970: 4967: 4964: 4961: 4958: 4955: 4951: 4948: 4945: 4942: 4939: 4936: 4932: 4929: 4925: 4922: 4919: 4916: 4913: 4910: 4907: 4903: 4900: 4897: 4893: 4890: 4887: 4883: 4880: 4877: 4873: 4870: 4867: 4864: 4861: 4857: 4854: 4851: 4847: 4844: 4841: 4837: 4834: 4831: 4827: 4824: 4821: 4818: 4815: 4811: 4808: 4805: 4801: 4798: 4795: 4791: 4788: 4785: 4781: 4778: 4775: 4771: 4768: 4765: 4761: 4758: 4755: 4752: 4749: 4745: 4742: 4739: 4735: 4732: 4729: 4726: 4723: 4719: 4716: 4713: 4710: 4704: 4703: 4700: 4697: 4694: 4691: 4688: 4685: 4682: 4679: 4676: 4673: 4670: 4667: 4664: 4661: 4658: 4655: 4652: 4649: 4646: 4643: 4633: 4632: 4629: 4626: 4623: 4620: 4617: 4614: 4611: 4608: 4605: 4602: 4599: 4596: 4593: 4590: 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: 4323: 4318: 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: 3935: 3934: 3931: 3928: 3925: 3922: 3919: 3916: 3913: 3910: 3907: 3904: 3901: 3898: 3895: 3892: 3889: 3886: 3883: 3880: 3877: 3874: 3871: 3868: 3865: 3862: 3859: 3856: 3853: 3850: 3847: 3844: 3841: 3838: 3835: 3832: 3829: 3826: 3823: 3820: 3817: 3814: 3811: 3802: 3801: 3798: 3795: 3792: 3789: 3786: 3783: 3780: 3777: 3774: 3771: 3768: 3765: 3762: 3759: 3756: 3753: 3750: 3747: 3744: 3741: 3738: 3735: 3732: 3729: 3726: 3723: 3720: 3717: 3714: 3711: 3708: 3705: 3702: 3699: 3696: 3693: 3690: 3687: 3684: 3681: 3678: 3675: 3669: 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: 3587: 3586: 3583: 3580: 3577: 3574: 3571: 3568: 3565: 3562: 3559: 3556: 3553: 3550: 3547: 3544: 3541: 3538: 3535: 3532: 3529: 3523: 3522: 3519: 3516: 3513: 3510: 3507: 3504: 3501: 3498: 3495: 3492: 3489: 3486: 3483: 3480: 3477: 3474: 3471: 3468: 3465: 3462: 3459: 3456: 3453: 3450: 3447: 3444: 3441: 3438: 3435: 3432: 3429: 3426: 3423: 3420: 3417: 3414: 3411: 3408: 3405: 3402: 3399: 3396: 3393: 3390: 3387: 3384: 3381: 3378: 3369: 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: 3119: 3116: 3113: 3110: 3104: 3103: 3100: 3097: 3094: 3091: 3088: 3085: 3082: 3079: 3076: 3073: 3070: 3067: 3064: 3061: 3058: 3055: 3052: 3049: 3046: 3043: 3040: 3037: 3034: 3031: 3028: 3025: 3022: 3016: 3015: 3012: 3009: 3006: 3003: 3000: 2997: 2994: 2991: 2988: 2985: 2982: 2979: 2976: 2973: 2970: 2967: 2964: 2961: 2958: 2955: 2952: 2949: 2946: 2943: 2940: 2937: 2934: 2931: 2928: 2925: 2922: 2919: 2916: 2913: 2910: 2907: 2904: 2901: 2898: 2895: 2892: 2889: 2886: 2883: 2880: 2877: 2874: 2871: 2868: 2865: 2862: 2859: 2856: 2853: 2850: 2847: 2838: 2837: 2834: 2831: 2828: 2825: 2822: 2819: 2816: 2813: 2810: 2807: 2804: 2801: 2798: 2795: 2792: 2789: 2786: 2783: 2780: 2777: 2774: 2771: 2768: 2765: 2762: 2759: 2756: 2753: 2750: 2747: 2744: 2741: 2738: 2735: 2732: 2729: 2726: 2723: 2720: 2717: 2714: 2711: 2708: 2705: 2702: 2699: 2696: 2693: 2690: 2687: 2684: 2681: 2678: 2675: 2672: 2669: 2666: 2663: 2660: 2657: 2654: 2651: 2648: 2645: 2642: 2639: 2636: 2633: 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: 2508: 2495: 2487:Valid pointers, 2476: 2472: 2461: 2460: 2458:/* and so on */ 2457: 2454: 2451: 2448: 2445: 2442: 2439: 2436: 2433: 2430: 2427: 2424: 2421: 2418: 2415: 2412: 2409: 2406: 2403: 2400: 2397: 2394: 2391: 2388: 2385: 2382: 2379: 2376: 2373: 2370: 2367: 2364: 2361: 2358: 2355: 2352: 2349: 2346: 2343: 2340: 2337: 2334: 2331: 2328: 2325: 2322: 2319: 2316: 2313: 2310: 2307: 2304: 2301: 2298: 2295: 2292: 2289: 2286: 2284:/* Rectangle */ 2283: 2280: 2277: 2274: 2271: 2268: 2265: 2262: 2259: 2256: 2253: 2250: 2247: 2244: 2241: 2238: 2235: 2232: 2229: 2226: 2223: 2220: 2217: 2214: 2211: 2208: 2205: 2202: 2199: 2196: 2193: 2190: 2187: 2184: 2181: 2178: 2175: 2172: 2169: 2166: 2152: 2151: 2148: 2145: 2142: 2139: 2136: 2133: 2130: 2127: 2124: 2121: 2118: 2115: 2112: 2109: 2106: 2103: 2100: 2097: 2094: 2091: 2088: 2085: 2082: 2079: 2076: 2073: 2070: 2067: 2064: 2061: 2058: 2055: 2052: 2049: 2046: 2043: 2040: 2037: 2034: 2031: 2028: 2025: 2022: 2019: 2016: 2013: 2010: 2007: 2004: 2001: 1998: 1995: 1992: 1989: 1986: 1983: 1980: 1977: 1974: 1971: 1968: 1962: 1961: 1958: 1955: 1952: 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: 1871: 1868: 1865: 1862: 1859: 1856: 1853: 1850: 1847: 1844: 1841: 1838: 1835: 1832: 1829: 1826: 1823: 1820: 1817: 1814: 1811: 1808: 1805: 1802: 1799: 1796: 1786:variant records 1757: 1752: 1709: 1703: 1698: 1666: 1658: 1647: 1642: 1637: 1636: 1633: 1630: 1627: 1624: 1621: 1618: 1615: 1612: 1609: 1606: 1603: 1600: 1597: 1594: 1591: 1588: 1585: 1582: 1579: 1576: 1573: 1570: 1567: 1564: 1561: 1558: 1555: 1552: 1549: 1546: 1529: 1528: 1525: 1522: 1519: 1516: 1513: 1510: 1507: 1504: 1501: 1498: 1495: 1492: 1489: 1486: 1483: 1480: 1477: 1474: 1471: 1468: 1465: 1462: 1459: 1456: 1453: 1450: 1443: 1442: 1439: 1436: 1433: 1430: 1427: 1424: 1421: 1418: 1415: 1412: 1409: 1406: 1403: 1400: 1390: 1368: 1367: 1362: 1353: 1347: 1341: 1327: 1325: 1317: 1311: 1308: 1307: 1302: 1292: 1286: 1272: 1270: 1261: 1258: 1257: 1248: 1232: 1230: 1221: 1214: 1213: 1151: 1149: 1146: 1145: 1127: 1126: 1118: 1112: 1098: 1096: 1091: 1082: 1072: 1066: 1063: 1062: 1053: 1039: 1037: 1028: 1021: 1020: 985: 981: 963: 959: 958: 954: 928: 926: 923: 922: 875: 874: 866: 860: 846: 844: 836: 829: 828: 819: 805: 803: 794: 787: 786: 756: 752: 729: 725: 718: 714: 696: 692: 684: 682: 679: 678: 657: 633: 629: 615: 613: 610: 609: 599:reserved values 569:tagged pointers 565:sentinel values 561:reserved values 528: 513:self-describing 506:tagged pointers 502:indirection bit 490:class hierarchy 486:lazy evaluation 471:enumerated type 440: 437: 436: 419: 415: 400: 396: 378: 377: 353: 352: 350: 347: 346: 336: 326: 310: 307: 306: 303: 297: 294: 288: 278: 274: 249: 245: 244: 229: 225: 211: 93: 28: 23: 22: 15: 12: 11: 5: 7311: 7301: 7300: 7295: 7278: 7277: 7275: 7274: 7269: 7264: 7259: 7254: 7249: 7244: 7239: 7234: 7229: 7228: 7227: 7217: 7212: 7210:Data structure 7207: 7202: 7196: 7194: 7188: 7187: 7185: 7184: 7179: 7174: 7169: 7164: 7159: 7154: 7149: 7144: 7139: 7134: 7129: 7124: 7119: 7114: 7109: 7103: 7101: 7097: 7096: 7094: 7093: 7092: 7091: 7081: 7076: 7071: 7066: 7061: 7056: 7055: 7054: 7044: 7039: 7034: 7029: 7024: 7019: 7014: 7009: 7004: 7003: 7002: 6991: 6989: 6983: 6982: 6980: 6979: 6978: 6977: 6967: 6961: 6959: 6953: 6952: 6950: 6949: 6944: 6943: 6942: 6937: 6926: 6924: 6918: 6917: 6915: 6914: 6909: 6904: 6903: 6902: 6892: 6891: 6890: 6889: 6888: 6878: 6873: 6868: 6863: 6858: 6857: 6856: 6851: 6849:Half precision 6846: 6836:Floating point 6833: 6828: 6823: 6818: 6812: 6810: 6806: 6805: 6803: 6802: 6797: 6792: 6787: 6782: 6777: 6771: 6769: 6763: 6762: 6755: 6754: 6747: 6740: 6732: 6726: 6725: 6715: 6712:boost::variant 6707: 6706:External links 6704: 6701: 6700: 6676: 6665:docs.swift.org 6652: 6638: 6624: 6610: 6586: 6572: 6557: 6556: 6554: 6551: 6550: 6549: 6544: 6533: 6530: 6503:virtual method 6490: 6487: 6031: 5946: 5441: 5100: 4709: 4642: 4328: 4322: 4319: 3947: 3810: 3674: 3595: 3528: 3377: 3109: 3021: 2846: 2556:static_visitor 2539: 2507: 2504: 2500: 2499: 2488: 2481:tagged pointer 2165: 1967: 1795: 1756: 1753: 1716: 1646: 1643: 1641: 1638: 1545: 1449: 1399: 1389: 1386: 1385: 1384: 1371: 1359: 1356: 1340: 1337: 1326: 1323: 1320: 1310: 1309: 1300: 1285: 1282: 1271: 1269: 1260: 1259: 1256: 1247: 1244: 1231: 1229: 1220: 1219: 1217: 1212: 1209: 1206: 1203: 1200: 1197: 1194: 1191: 1188: 1185: 1182: 1179: 1176: 1173: 1170: 1167: 1164: 1161: 1158: 1143: 1130: 1124: 1121: 1111: 1108: 1097: 1088: 1085: 1080: 1065: 1064: 1061: 1052: 1049: 1038: 1036: 1027: 1026: 1024: 1019: 1016: 1013: 1010: 1007: 1003: 998: 994: 991: 988: 984: 980: 976: 972: 969: 966: 962: 957: 953: 950: 947: 944: 941: 938: 935: 892: 891: 878: 872: 869: 859: 856: 845: 842: 839: 834: 831: 830: 827: 818: 815: 804: 802: 793: 792: 790: 785: 782: 779: 776: 773: 769: 765: 762: 759: 755: 751: 747: 742: 738: 735: 732: 728: 724: 721: 717: 713: 709: 705: 702: 699: 695: 691: 676: 665: 656: 653: 650: 646: 642: 639: 636: 632: 628: 625: 622: 527: 524: 457:intuitionistic 444: 422: 418: 414: 411: 408: 403: 399: 395: 392: 384: 381: 373: 365: 362: 359: 356: 314: 301: 292: 273:languages: if 247: 227: 92: 89: 72:data structure 57:disjoint union 44:variant record 26: 9: 6: 4: 3: 2: 7310: 7299: 7296: 7294: 7291: 7290: 7288: 7273: 7270: 7268: 7265: 7263: 7260: 7258: 7255: 7253: 7250: 7248: 7245: 7243: 7240: 7238: 7235: 7233: 7230: 7226: 7223: 7222: 7221: 7218: 7216: 7213: 7211: 7208: 7206: 7203: 7201: 7198: 7197: 7195: 7189: 7183: 7180: 7178: 7175: 7173: 7170: 7168: 7165: 7163: 7160: 7158: 7155: 7153: 7150: 7148: 7145: 7143: 7140: 7138: 7135: 7133: 7132:Function type 7130: 7128: 7125: 7123: 7120: 7118: 7115: 7113: 7110: 7108: 7105: 7104: 7102: 7098: 7090: 7087: 7086: 7085: 7082: 7080: 7077: 7075: 7072: 7070: 7067: 7065: 7062: 7060: 7057: 7053: 7050: 7049: 7048: 7045: 7043: 7040: 7038: 7035: 7033: 7030: 7028: 7025: 7023: 7020: 7018: 7015: 7013: 7010: 7008: 7005: 7001: 6998: 6997: 6996: 6993: 6992: 6990: 6988: 6984: 6976: 6973: 6972: 6971: 6968: 6966: 6963: 6962: 6960: 6958: 6954: 6948: 6945: 6941: 6938: 6936: 6933: 6932: 6931: 6928: 6927: 6925: 6923: 6919: 6913: 6910: 6908: 6905: 6901: 6898: 6897: 6896: 6893: 6887: 6884: 6883: 6882: 6879: 6877: 6874: 6872: 6869: 6867: 6864: 6862: 6859: 6855: 6852: 6850: 6847: 6845: 6842: 6841: 6839: 6838: 6837: 6834: 6832: 6829: 6827: 6824: 6822: 6819: 6817: 6814: 6813: 6811: 6807: 6801: 6798: 6796: 6793: 6791: 6788: 6786: 6783: 6781: 6778: 6776: 6773: 6772: 6770: 6768: 6767:Uninterpreted 6764: 6760: 6753: 6748: 6746: 6741: 6739: 6734: 6733: 6730: 6723: 6719: 6716: 6713: 6710: 6709: 6690: 6686: 6680: 6666: 6662: 6656: 6648: 6642: 6634: 6628: 6620: 6614: 6600: 6596: 6590: 6582: 6576: 6568: 6562: 6558: 6548: 6545: 6543: 6539: 6538:Discriminator 6536: 6535: 6529: 6527: 6523: 6518: 6516: 6512: 6508: 6504: 6500: 6496: 6493:In a typical 6444:static_assert 6029: 6028: 6024: 5944: 5942: 5439: 5437: 5098: 5096: 5092: 4707: 4640: 4638: 4637:Rust language 4326: 3945: 3943: 3939: 3808: 3806: 3672: 3593: 3591: 3526: 3375: 3373: 3107: 3019: 2844: 2842: 2820:apply_visitor 2754:apply_visitor 2537: 2535: 2530: 2528: 2524: 2520: 2515: 2513: 2503: 2493: 2489: 2486: 2485: 2484: 2482: 2470: 2465: 2386:setSquareSide 2317:getSquareSide 2163: 2161: 2157: 1965: 1793: 1791: 1787: 1783: 1779: 1775: 1771: 1769: 1765: 1761: 1751: 1747: 1743: 1739: 1735: 1731: 1727: 1723: 1719: 1715: 1712: 1706: 1701: 1695: 1692: 1688: 1684: 1680: 1676: 1672: 1669: 1664: 1661: 1656: 1652: 1543: 1536: 1532: 1447: 1397: 1395: 1357: 1354: 1338: 1335: 1321: 1318: 1298: 1283: 1280: 1267: 1254: 1245: 1242: 1227: 1215: 1207: 1204: 1198: 1195: 1192: 1180: 1177: 1171: 1168: 1165: 1156: 1144: 1122: 1119: 1109: 1106: 1086: 1083: 1078: 1059: 1050: 1047: 1034: 1022: 1014: 1008: 1005: 1001: 996: 992: 989: 986: 982: 974: 970: 967: 964: 960: 955: 945: 939: 933: 921: 920: 919: 917: 913: 909: 905: 901: 897: 870: 867: 857: 854: 840: 837: 832: 825: 816: 813: 800: 788: 780: 774: 771: 767: 763: 760: 757: 753: 745: 740: 736: 733: 730: 726: 719: 715: 707: 703: 700: 697: 693: 689: 677: 663: 651: 648: 644: 640: 637: 634: 630: 623: 620: 608: 607: 606: 604: 600: 596: 592: 587: 585: 581: 576: 572: 570: 566: 562: 558: 554: 550: 544: 542: 537: 532: 523: 521: 517: 514: 509: 507: 503: 499: 495: 492:(see below), 491: 487: 483: 478: 476: 472: 467: 465: 461: 458: 442: 420: 416: 409: 406: 401: 397: 390: 371: 343: 339: 333: 329: 312: 300: 291: 285: 281: 272: 268: 261: 257: 253: 241: 237: 233: 223: 218: 214: 209: 208:product types 205: 201: 197: 192: 190: 187:and one from 186: 182: 178: 174: 170: 166: 162: 158: 154: 153: 147: 145: 141: 137: 132: 130: 126: 122: 118: 114: 110: 106: 102: 98: 88: 86: 82: 77: 73: 69: 68: 63: 59: 58: 53: 49: 45: 41: 37: 33: 19: 7088: 7037:Intersection 6692:. Retrieved 6688: 6679: 6668:. Retrieved 6664: 6655: 6641: 6627: 6613: 6602:. Retrieved 6599:nim-lang.org 6598: 6595:"Nim Manual" 6589: 6575: 6561: 6519: 6492: 6027:constexpr if 6021: 5939: 5433: 5093: 5066: 4705: 4634: 4324: 3936: 3803: 3670: 3588: 3524: 3370: 3105: 3017: 2839: 2531: 2516: 2509: 2501: 2492:null pointer 2466: 2462: 2305:/* Circle */ 2257:/* Square */ 2153: 1963: 1789: 1785: 1772: 1758: 1749: 1745: 1741: 1737: 1733: 1729: 1725: 1721: 1717: 1710: 1704: 1699: 1696: 1690: 1686: 1682: 1678: 1674: 1670: 1667: 1665: 1659: 1655:united modes 1654: 1648: 1541: 1530: 1444: 1391: 915: 911: 907: 903: 899: 895: 893: 598: 591:option types 588: 583: 577: 573: 560: 557:encoded tags 556: 552: 548: 545: 533: 529: 510: 479: 468: 341: 337: 331: 327: 298: 289: 283: 279: 259: 255: 251: 239: 235: 231: 216: 212: 199: 193: 188: 184: 180: 176: 172: 168: 164: 160: 156: 150: 148: 133: 124: 108: 94: 75: 65: 61: 55: 51: 47: 43: 39: 36:tagged union 35: 29: 18:Variant type 7298:Type theory 7267:Type theory 7262:Type system 7112:Bottom type 7059:Option type 7000:generalized 6886:Long double 6831:Fixed point 6718:std.variant 6515:constructor 6411:Transverser 6354:Transverser 6153:Transverser 6011:TaggedUnion 3896:skRectangle 3830:skRectangle 1394:binary tree 516:data format 196:type theory 183:, one from 140:constructor 136:constructor 91:Description 48:choice type 7293:Data types 7287:Categories 7172:Empty type 7167:Type class 7117:Collection 7074:Refinement 7052:metaobject 6900:signedness 6759:Data types 6694:2021-06-20 6689:Python.org 6670:2021-04-28 6649:. Mozilla. 6635:. Mozilla. 6604:2020-01-23 6553:References 6186:&& 5941:Python 3.9 5436:TypeScript 5411:add_values 5369:add_values 5354:add_values 5273:add_values 5079:, and the 5047:add_values 5041:assert_eq! 5007:add_values 4989:add_values 4920:add_values 4165:listHelper 4126:listHelper 4054:listHelper 2137:end record 2014:Shape_Kind 1972:Shape_Kind 1788:(formally 1784:call them 1625:countNodes 1610:countNodes 1571:countNodes 1550:countNodes 498:CDR coding 475:unit types 462:under the 305:have type 222:injections 115:) and the 7247:Subtyping 7242:Interface 7225:metaclass 7177:Unit type 7147:Semaphore 7127:Exception 7032:Inductive 7022:Dependent 6987:Composite 6965:Character 6947:Reference 6844:Minifloat 6800:Bit array 6309:&> 6294:is_same_v 6282:constexpr 6228:&> 6213:is_same_v 6201:constexpr 5960:TypedDict 5954:Annotated 5467:interface 5443:interface 4492:Rectangle 3872:ShapeKind 3815:ShapeKind 3225:Rectangle 2224:ShapeKind 2182:Rectangle 2170:ShapeKind 2083:Rectangle 1987:Rectangle 1902:rectangle 1872:shapeKind 1815:rectangle 1800:shapeKind 1211:↦ 1187:→ 1157:: 1018:↦ 1012:↦ 979:→ 952:→ 943:→ 934:: 784:↦ 778:↦ 750:→ 723:→ 712:→ 690:: 655:↦ 627:→ 621:: 541:immutable 443:τ 435:has type 413:⇒ 407:∣ 394:⇒ 313:τ 277:has type 109:datatypes 67:coproduct 7272:Variable 7162:Top type 7027:Equality 6935:physical 6912:Rational 6907:Interval 6854:bfloat16 6532:See also 6258:<< 6246:<< 6177:operator 6165:typename 6159:template 5948:Currency 5803:function 5117:indirect 3920:skCircle 3878:skSquare 3836:skCircle 3824:skSquare 3114:abstract 2851:abstract 2685:<< 2679:<< 2673:<< 2634:operator 2613:<< 2607:<< 2601:<< 2574:operator 2038:Center_Y 2026:Center_X 1782:Modula-2 1651:ALGOL 68 1401:datatype 1388:Examples 1358:′ 1322:′ 1123:′ 1087:′ 871:′ 841:′ 584:variants 553:computed 520:metadata 271:ML-style 200:sum type 152:disjoint 117:compiler 62:sum type 7215:Generic 7191:Related 7107:Boolean 7064:Product 6940:virtual 6930:Address 6922:Pointer 6895:Integer 6826:Decimal 6821:Complex 6809:Numeric 6393:nullptr 6336:nullptr 6141:nullptr 6123:nullptr 6048:variant 5869:console 5077:Some(T) 4627:centerY 4621:centerX 4612:extends 4600:centerY 4588:centerX 4561:centerY 4555:centerX 4546:extends 4534:centerY 4522:centerX 4483:centerX 4477:centerY 4468:extends 4456:centerY 4444:centerX 4411:centerY 4399:centerX 4153:varargs 4006:variant 3854:centerY 3848:centerX 3581:printfn 3563:printfn 3363:centerY 3357:centerX 3348:extends 3336:centerY 3324:centerX 3294:centerY 3288:centerX 3279:extends 3267:centerY 3255:centerX 3213:centerY 3207:centerX 3198:extends 3186:centerY 3174:centerX 3138:centerY 3126:centerX 3089:println 3062:println 2923:extends 2869:extends 2826:display 2778:variant 2760:display 2712:variant 2544:display 2512:Cyclone 2469:pointer 2215:centery 2206:centerx 2122:Integer 2101:Integer 2074:Integer 2044:Integer 2032:Integer 1947:integer 1923:integer 1893:integer 1857:integer 1851:centery 1845:integer 1839:centerx 1768:Haskell 105:Haskell 70:, is a 40:variant 7205:Boxing 7193:topics 7152:Stream 7089:tagged 7047:Object 6970:String 6507:vtable 6453:sizeof 6267:" 6261:" 6150:struct 6102:struct 6090:string 6075:struct 6063:struct 6054:struct 5827:switch 5494:number 5405:assert 5393:return 5345:return 5303:switch 5089:Err(E) 4935:-> 4576:radius 4570:Circle 4510:height 4498:length 4426:Square 3997:result 3991:result 3949:import 3938:Macros 3926:radius 3908:height 3902:length 3845:object 3676:switch 3312:radius 3306:Circle 3243:height 3231:length 3156:Square 3111:sealed 2863:object 2848:sealed 2796:string 2730:string 2649:string 2541:struct 2525:, and 2473:option 2431:Square 2392:struct 2365:return 2359:Square 2341:assert 2323:struct 2296:radius 2287:struct 2275:height 2260:struct 2239:struct 2194:struct 2188:Circle 2176:Square 2116:Radius 2110:Circle 2095:Height 2062:Square 2023:record 1993:Circle 1981:Square 1941:radius 1932:circle 1917:height 1878:square 1836:record 1821:circle 1809:square 1780:, and 1774:Pascal 1742:string 1691:string 1349:(value 1333:  1278:  1240:  1104:  1045:  908:return 852:  811:  617:return 549:folded 536:record 500:, the 388:  375:  369:  142:for a 85:unions 7100:Other 7084:Union 7017:Class 7007:Array 6790:Tryte 6542:CORBA 6526:Scala 6426:right 6405:visit 6387:right 6348:visit 6255:value 6135:right 6093:value 6033:using 6023:C++17 6005:False 5999:total 5993:float 5981:float 5929:break 5923:right 5911:visit 5893:visit 5887:value 5857:break 5806:visit 5773:right 5740:value 5719:right 5686:value 5665:right 5641:right 5608:value 5575:value 5545:const 5512:right 5488:value 5434:With 5294:-> 5095:Swift 5085:Ok(T) 5029:=> 4980:=> 4943:match 4911:))))) 4615:Shape 4549:Shape 4471:Shape 4393:Shape 4378:right 4321:2010s 4216:match 4210:block 3952:patty 3942:patty 3839:Shape 3781:trace 3742:trace 3721:trace 3715:Green 3700:trace 3682:color 3612:Green 3600:Color 3578:-> 3560:-> 3530:match 3427:right 3403:value 3351:Shape 3303:class 3282:Shape 3222:class 3201:Shape 3153:class 3120:Shape 3117:class 3086:=> 3059:=> 3026:match 2911:right 2887:value 2878:class 2854:class 2841:Scala 2814:boost 2772:boost 2748:boost 2706:boost 2652:& 2640:const 2550:boost 2527:Swift 2506:2000s 2477:Maybe 2440:-> 2422:-> 2395:Shape 2371:-> 2350:-> 2326:Shape 2269:width 2233:union 2197:Shape 2113:=> 2089:Width 2086:=> 2065:=> 2002:Shape 1911:width 1830:shape 1738:compl 1700:union 1687:compl 1675:union 1645:1960s 1631:right 1595:right 1343:value 1313:value 1288:value 1114:value 1068:value 862:value 659:value 603:monad 589:Like 144:class 111:(see 81:trees 64:, or 7220:Kind 7182:Void 7042:List 6957:Text 6795:Word 6785:Trit 6780:Byte 6511:RTTI 6435:else 6369:left 6330:left 6306:Node 6297:< 6276:else 6243:cout 6225:Leaf 6216:< 6174:void 6171:> 6162:< 6129:Tree 6117:left 6111:Tree 6105:Node 6078:Leaf 6069:> 6066:Node 6057:Leaf 6051:< 6036:Tree 5917:tree 5905:left 5899:tree 5881:tree 5860:case 5848:case 5839:kind 5833:tree 5818:Tree 5812:tree 5782:kind 5761:kind 5752:left 5728:kind 5707:kind 5698:left 5674:kind 5650:kind 5629:kind 5620:left 5596:kind 5587:left 5563:kind 5554:Tree 5548:root 5542:Node 5536:Leaf 5530:Tree 5527:type 5518:Tree 5506:Tree 5500:left 5476:kind 5470:Node 5452:kind 5446:Leaf 5417:tree 5387:leaf 5381:case 5321:node 5312:case 5306:tree 5288:Tree 5282:tree 5270:func 5261:leaf 5252:leaf 5237:node 5228:leaf 5213:node 5204:leaf 5195:leaf 5180:node 5165:node 5159:Tree 5153:tree 5141:Tree 5135:Tree 5123:node 5120:case 5114:leaf 5111:case 5105:Tree 5102:enum 5073:None 5053:tree 5026:Leaf 5022:Tree 4956:Node 4952:Tree 4946:tree 4930:Tree 4926:tree 4908:Leaf 4904:Tree 4888:Leaf 4884:Tree 4862:Node 4858:Tree 4842:Leaf 4838:Tree 4816:Node 4812:Tree 4799:))), 4796:Leaf 4792:Tree 4776:Leaf 4772:Tree 4750:Node 4746:Tree 4724:Node 4720:Tree 4714:tree 4695:> 4692:Tree 4689:< 4680:> 4677:Tree 4674:< 4659:Node 4653:Leaf 4647:Tree 4644:enum 4635:The 4567:case 4489:case 4432:side 4423:case 4390:enum 4384:Tree 4372:Tree 4366:left 4348:Node 4345:case 4342:Leaf 4339:case 4333:Tree 4330:enum 4282:list 4273:echo 4234:Cons 4195:List 4180:proc 4159:List 4141:list 4138:proc 4111:Cons 4105:else 4072:List 4051:proc 4045:List 4018:Cons 4009:List 3955:proc 3884:side 3866:kind 3863:case 3821:enum 3812:type 3754:case 3736:Blue 3733:case 3712:case 3691:case 3618:Blue 3597:enum 3590:Haxe 3575:Leaf 3542:Node 3536:with 3533:tree 3517:Leaf 3511:Leaf 3499:Node 3493:Leaf 3481:Node 3475:Leaf 3469:Leaf 3457:Node 3445:Node 3439:tree 3433:Tree 3421:Tree 3415:left 3397:Node 3391:Leaf 3382:Tree 3379:type 3300:case 3219:case 3162:side 3150:case 3083:Leaf 3080:case 3035:Node 3032:case 3023:tree 3010:Leaf 3004:Leaf 2992:Node 2986:Leaf 2974:Node 2968:Leaf 2962:Leaf 2950:Node 2938:Node 2932:tree 2926:Tree 2917:Tree 2905:Tree 2899:left 2881:Node 2875:case 2872:Tree 2866:Leaf 2860:case 2857:Tree 2799:> 2781:< 2733:> 2715:< 2694:endl 2670:cout 2631:void 2622:endl 2598:cout 2571:void 2565:> 2562:void 2559:< 2523:Haxe 2519:Rust 2496:null 2449:side 2443:side 2425:kind 2410:side 2383:void 2374:side 2353:kind 2248:side 2227:kind 2221:enum 2167:enum 2158:and 2131:case 2107:when 2080:when 2068:Side 2059:when 2053:Kind 2050:case 2008:Kind 1999:type 1969:type 1887:side 1866:kind 1863:case 1797:type 1750:esac 1730:real 1722:case 1718:node 1711:node 1705:case 1679:real 1671:node 1668:mode 1660:case 1616:left 1589:left 1577:Node 1556:Leaf 1523:Leaf 1517:Leaf 1505:Node 1499:Leaf 1487:Node 1481:Leaf 1475:Leaf 1463:Node 1451:Node 1437:tree 1431:tree 1416:Node 1410:Leaf 1404:tree 1294:(err 1153:join 930:fmap 916:join 914:and 912:fmap 898:and 686:bind 593:and 482:rope 335:and 296:and 287:and 243:and 204:dual 125:enum 121:Rust 103:and 34:, a 7079:Set 6775:Bit 6724:2.0 6497:in 6414:{}, 6399:std 6357:{}, 6342:std 6288:std 6237:std 6207:std 6180:()( 6084:std 6042:std 5875:log 5315:let 5297:Int 5150:let 5129:Int 5087:or 5075:or 4937:i64 4898:new 4894:Box 4878:new 4874:Box 4852:new 4848:Box 4832:new 4828:Box 4806:new 4802:Box 4786:new 4782:Box 4766:new 4762:Box 4740:new 4736:Box 4711:let 4686:Box 4671:Box 4665:i64 4606:Int 4594:Int 4582:Int 4540:Int 4528:Int 4516:Int 4504:Int 4462:Int 4450:Int 4438:Int 4417:Int 4405:Int 4360:Int 4276:sum 4258:sum 4225:Nil 4201:int 4183:sum 4099:Nil 4087:len 4066:seq 4042:ref 4015:Nil 3985:new 3976:ref 3958:`~` 3932:int 3914:int 3890:int 3860:int 3805:Nim 3757:Rgb 3694:Red 3660:Int 3648:Int 3636:Int 3624:Rgb 3606:Red 3520:))) 3436:let 3409:int 3342:Int 3330:Int 3318:Int 3273:Int 3261:Int 3249:Int 3237:Int 3192:Int 3180:Int 3168:Int 3144:Int 3132:Int 3013:))) 2929:val 2893:Int 2829:(), 2790:std 2784:int 2763:(), 2724:std 2718:int 2688:std 2664:std 2643:std 2637:()( 2616:std 2592:std 2580:int 2577:()( 2407:int 2314:int 2293:int 2266:int 2245:int 2212:int 2203:int 2160:C++ 2154:In 2128:end 1956:end 1778:Ada 1746:out 1734:int 1708:of 1683:int 1649:In 1583:int 1547:fun 1526:))) 1425:int 1263:err 1250:err 1223:err 1055:err 1030:err 821:err 796:err 555:or 469:An 269:in 246:inj 226:inj 206:of 194:In 171:or 155:or 76:tag 30:In 7289:: 6687:. 6663:. 6597:. 6477:}; 6471:}; 6468:); 6462:), 6429:); 6402::: 6390:!= 6375:if 6372:); 6345::: 6333:!= 6318:if 6291::: 6279:if 6264:\n 6240::: 6210::: 6198:if 6147:}; 6099:}; 6087::: 6045::: 6008:), 5996:}, 5770:}, 5716:}, 5662:}, 5638:}, 5423:== 5342:): 5264:)) 5207:), 5091:. 5062:); 5056:), 5024::: 5019:), 4954::: 4928:: 4917:fn 4914:); 4906::: 4896::: 4891:), 4886::: 4876::: 4860::: 4850::: 4845:), 4840::: 4830::: 4814::: 4804::: 4794::: 4784::: 4779:), 4774::: 4764::: 4748::: 4738::: 4722::: 4420:): 4315:)) 4264:ys 4249:): 4246:ys 4219:xs 4198:): 4189:xs 4174:xs 4156:): 4147:xs 4135:)) 4132:xs 4117:xs 4102:() 4090:== 4081:xs 4078:if 4069:): 4060:xs 4036:xs 3973:): 3917:of 3893:of 3875:of 3796:); 3778:): 3751:); 3730:); 3709:); 3663:); 3557:_) 3554:_, 3478:), 3400:of 3372:F# 2971:), 2835:); 2817::: 2793::: 2775::: 2769:); 2751::: 2742:42 2727::: 2709::: 2703:}; 2691::: 2667::: 2646::: 2619::: 2595::: 2553::: 2521:, 2490:A 2362:); 2356:== 2311:}; 2308:}; 2302:}; 2281:}; 2254:}; 2191:}; 2056:is 2020:is 2011:: 1996:); 1975:is 1875:of 1776:, 1764:ML 1726:in 1724:n 1714:: 1693:); 1689:, 1685:, 1681:, 1673:= 1598:)) 1484:), 1419:of 1329:if 1274:if 1235:if 1100:if 1041:if 918:: 848:if 807:if 571:. 551:, 522:. 496:, 488:, 484:, 466:. 340:: 330:: 282:+ 258:+ 254:→ 250:: 238:+ 234:→ 230:: 224:) 215:+ 191:. 179:+ 163:+ 101:ML 60:, 54:, 50:, 46:, 42:, 6751:e 6744:t 6737:v 6722:D 6697:. 6673:. 6607:. 6569:. 6474:} 6459:T 6456:( 6450:! 6447:( 6438:{ 6432:} 6423:. 6420:v 6417:* 6408:( 6396:) 6384:. 6381:v 6378:( 6366:. 6363:v 6360:* 6351:( 6339:) 6327:. 6324:v 6321:( 6315:{ 6312:) 6303:, 6300:T 6285:( 6273:} 6270:; 6252:. 6249:v 6234:{ 6231:) 6222:, 6219:T 6204:( 6195:{ 6192:) 6189:v 6183:T 6168:T 6156:{ 6144:; 6138:= 6132:* 6126:; 6120:= 6114:* 6108:{ 6096:; 6081:{ 6072:; 6060:, 6039:= 6017:] 6014:, 6002:= 5990:: 5984:, 5978:: 5972:{ 5969:, 5963:( 5957:[ 5951:= 5935:} 5932:} 5926:) 5920:. 5914:( 5908:) 5902:. 5896:( 5890:) 5884:. 5878:( 5872:. 5866:: 5854:: 5845:{ 5842:) 5836:. 5830:( 5824:{ 5821:) 5815:: 5809:( 5800:} 5797:} 5794:} 5791:} 5785:: 5779:{ 5776:: 5764:: 5758:{ 5755:: 5749:, 5746:4 5743:: 5737:, 5731:: 5725:{ 5722:: 5710:: 5704:{ 5701:: 5695:, 5692:3 5689:: 5683:, 5677:: 5671:{ 5668:: 5659:} 5653:: 5647:{ 5644:: 5632:: 5626:{ 5623:: 5617:, 5614:1 5611:: 5605:, 5599:: 5593:{ 5590:: 5584:, 5581:5 5578:: 5572:, 5566:: 5560:{ 5557:= 5551:: 5539:| 5533:= 5524:} 5521:; 5515:: 5509:; 5503:: 5497:; 5491:: 5485:; 5479:: 5473:{ 5464:} 5461:; 5455:: 5449:{ 5429:) 5426:9 5420:) 5414:( 5408:( 5402:} 5399:} 5396:0 5390:: 5384:. 5378:) 5375:b 5372:( 5366:+ 5363:) 5360:a 5357:( 5351:+ 5348:v 5339:b 5336:, 5333:a 5330:, 5327:v 5324:( 5318:. 5309:{ 5300:{ 5291:) 5285:: 5279:_ 5276:( 5267:) 5258:. 5255:, 5249:. 5246:, 5243:4 5240:( 5234:. 5231:, 5225:. 5222:, 5219:3 5216:( 5210:. 5201:. 5198:, 5192:. 5189:, 5186:0 5183:( 5177:. 5174:, 5171:2 5168:( 5162:. 5156:= 5147:} 5144:) 5138:, 5132:, 5126:( 5108:{ 5059:9 5050:( 5044:( 5038:} 5035:} 5032:0 5016:b 5013:* 5010:( 5004:+ 5001:) 4998:a 4995:* 4992:( 4986:+ 4983:v 4977:) 4974:b 4971:, 4968:a 4965:, 4962:v 4959:( 4949:{ 4940:{ 4933:) 4923:( 4901:( 4881:( 4871:, 4868:4 4865:( 4855:( 4835:( 4825:, 4822:3 4819:( 4809:( 4789:( 4769:( 4759:, 4756:0 4753:( 4743:( 4733:, 4730:2 4727:( 4717:= 4701:} 4698:) 4683:, 4668:, 4662:( 4656:, 4650:{ 4630:) 4624:, 4618:( 4609:) 4603:: 4597:, 4591:: 4585:, 4579:: 4573:( 4564:) 4558:, 4552:( 4543:) 4537:: 4531:, 4525:: 4519:, 4513:: 4507:, 4501:: 4495:( 4486:) 4480:, 4474:( 4465:) 4459:: 4453:, 4447:: 4441:, 4435:: 4429:( 4414:: 4408:, 4402:: 4396:( 4387:) 4381:: 4375:, 4369:: 4363:, 4357:: 4354:x 4351:( 4336:: 4312:5 4309:, 4306:4 4303:, 4300:3 4297:, 4294:2 4291:, 4288:1 4285:( 4279:( 4270:) 4267:) 4261:( 4255:+ 4252:y 4243:, 4240:y 4237:( 4231:0 4228:: 4222:: 4213:: 4207:( 4204:= 4192:: 4186:( 4177:) 4171:@ 4168:( 4162:= 4150:: 4144:( 4129:( 4123:~ 4120:, 4114:( 4108:: 4096:: 4093:0 4084:. 4075:= 4063:: 4057:( 4048:) 4039:: 4033:, 4030:A 4027:: 4024:x 4021:( 4012:: 4003:a 4000:= 3994:) 3988:( 3982:= 3979:A 3970:A 3967:: 3964:a 3961:( 3944:: 3929:: 3923:: 3911:: 3905:, 3899:: 3887:: 3881:: 3869:: 3857:: 3851:, 3842:= 3833:, 3827:, 3818:= 3799:} 3793:r 3790:+ 3784:( 3775:b 3772:, 3769:g 3766:, 3763:r 3760:( 3745:( 3739:: 3724:( 3718:: 3703:( 3697:: 3688:{ 3685:) 3679:( 3666:} 3657:: 3654:b 3651:, 3645:: 3642:g 3639:, 3633:: 3630:r 3627:( 3621:; 3615:; 3609:; 3603:{ 3572:| 3569:x 3551:, 3548:x 3545:( 3539:| 3514:, 3508:, 3505:4 3502:( 3496:, 3490:, 3487:3 3484:( 3472:, 3466:, 3463:1 3460:( 3454:, 3451:5 3448:( 3442:= 3430:: 3424:* 3418:: 3412:* 3406:: 3394:| 3388:| 3385:= 3366:) 3360:, 3354:( 3345:) 3339:: 3333:, 3327:: 3321:, 3315:: 3309:( 3297:) 3291:, 3285:( 3276:) 3270:: 3264:, 3258:: 3252:, 3246:: 3240:, 3234:: 3228:( 3216:) 3210:, 3204:( 3195:) 3189:: 3183:, 3177:: 3171:, 3165:: 3159:( 3147:) 3141:: 3135:, 3129:: 3123:( 3101:} 3098:) 3092:( 3077:) 3074:x 3071:+ 3065:( 3056:) 3053:_ 3050:, 3047:_ 3044:, 3041:x 3038:( 3029:{ 3007:, 3001:, 2998:4 2995:( 2989:, 2983:, 2980:3 2977:( 2965:, 2959:, 2956:1 2953:( 2947:, 2944:5 2941:( 2935:= 2920:) 2914:: 2908:, 2902:: 2896:, 2890:: 2884:( 2832:v 2823:( 2811:; 2805:= 2802:v 2787:, 2766:v 2757:( 2745:; 2739:= 2736:v 2721:, 2700:} 2697:; 2682:s 2661:{ 2658:) 2655:s 2628:} 2625:; 2610:i 2589:{ 2586:) 2583:i 2568:{ 2547:: 2455:} 2452:; 2446:= 2437:s 2434:; 2428:= 2419:s 2416:{ 2413:) 2404:, 2401:s 2398:* 2389:( 2380:} 2377:; 2368:s 2347:s 2344:( 2338:{ 2335:) 2332:s 2329:* 2320:( 2299:; 2290:{ 2278:; 2272:, 2263:{ 2251:; 2242:{ 2236:{ 2230:; 2218:; 2209:; 2200:{ 2185:, 2179:, 2173:{ 2156:C 2140:; 2134:; 2125:; 2119:: 2104:; 2098:: 2092:, 2077:; 2071:: 2047:; 2041:: 2035:; 2029:: 2017:) 2005:( 1990:, 1984:, 1978:( 1959:; 1953:; 1950:) 1944:: 1938:( 1935:: 1929:; 1926:) 1920:: 1914:, 1908:( 1905:: 1899:; 1896:) 1890:: 1884:( 1881:: 1869:: 1860:; 1854:: 1848:; 1842:: 1833:= 1827:; 1824:) 1818:, 1812:, 1806:( 1803:= 1728:( 1677:( 1634:) 1628:( 1622:+ 1619:) 1613:( 1607:+ 1604:1 1601:= 1592:, 1586:, 1580:( 1574:( 1568:| 1565:0 1562:= 1559:) 1553:( 1520:, 1514:, 1511:4 1508:( 1502:, 1496:, 1493:3 1490:( 1478:, 1472:, 1469:1 1466:( 1460:, 1457:5 1454:( 1440:) 1434:* 1428:* 1422:( 1413:| 1407:= 1364:) 1355:a 1339:= 1336:a 1319:a 1304:) 1299:e 1284:= 1281:a 1268:e 1255:e 1246:= 1243:a 1228:e 1216:{ 1208:a 1205:= 1202:) 1199:E 1196:+ 1193:A 1190:( 1184:) 1181:E 1178:+ 1175:) 1172:E 1169:+ 1166:A 1163:( 1160:( 1120:a 1110:= 1107:a 1093:) 1084:a 1079:f 1074:( 1060:e 1051:= 1048:a 1035:e 1023:{ 1015:a 1009:f 1006:= 1002:) 997:) 993:E 990:+ 987:B 983:( 975:) 971:E 968:+ 965:A 961:( 956:( 949:) 946:B 940:A 937:( 904:E 900:B 896:A 868:a 858:= 855:a 838:a 833:f 826:e 817:= 814:a 801:e 789:{ 781:f 775:a 772:= 768:) 764:E 761:+ 758:B 754:( 746:) 741:) 737:E 734:+ 731:B 727:( 720:A 716:( 708:) 704:E 701:+ 698:A 694:( 664:a 652:a 649:= 645:) 641:E 638:+ 635:A 631:( 624:A 421:2 417:e 410:y 402:1 398:e 391:x 383:f 380:o 372:e 364:e 361:s 358:a 355:c 342:B 338:y 332:A 328:x 302:2 299:e 293:1 290:e 284:B 280:A 275:e 263:. 260:B 256:A 252:B 248:2 240:B 236:A 232:A 228:1 217:B 213:A 189:B 185:A 181:B 177:A 173:B 169:A 165:B 161:A 20:)

Index

Variant type
computer science
disjoint union
coproduct
data structure
trees
unions
functional programming
ML
Haskell
algebraic data type
compiler
Rust
programming language
constructor
constructor
class
disjoint
type theory
dual
product types
injections
pattern matching
ML-style
intuitionistic
logical disjunction
Curry–Howard correspondence
enumerated type
unit types
rope

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

↑