Knowledge

OCaml

Source 📝

5509: 145: 675: 375: 6377: 6044: 6034: 6024: 6014: 6349: 1128: 5894: 36: 612:, because they can be inferred from the operators and other functions that are applied to the variables and other values in the code. Effective use of OCaml's type system can require some sophistication on the part of a programmer, but this discipline is rewarded with reliable, high-performance software. 657:
has stated that "OCaml delivers at least 50% of the performance of a decent C compiler", although a direct comparison is impossible. Some functions in the OCaml standard library are implemented with faster algorithms than equivalent functions in the standard libraries of other languages. For example,
865:
Language improvements have been incrementally added for the last two decades to support the growing commercial and academic codebases in OCaml. The OCaml 4.0 release in 2012 added Generalized Algebraic Data Types (GADTs) and first-class modules to increase the flexibility of the language. The OCaml
852:
for objects and classes, which was integrated within Caml Special Light. This led to the emergence of the Objective Caml language, first released in 1996 and subsequently renamed to OCaml in 2011. This object system notably supported many prevalent object-oriented idioms in a statically type-safe
3918:
during runtime. Under some circumstances, significant speedups are possible using multistage programming, because more detailed information about the data to process is available at runtime than at the regular compile time, so the incremental compiler can optimize away many cases of condition
889:
OCaml's development continued within the Cristal team at INRIA until 2005, when it was succeeded by the Gallium team. Subsequently, Gallium was succeeded by the Cambium team in 2019. As of 2023, there are 23 core developers of the compiler distribution from a variety of organizations and 41
615:
OCaml is perhaps most distinguished from other languages with origins in academia by its emphasis on performance. Its static type system prevents runtime type mismatches and thus obviates runtime type and safety checks that burden the performance of dynamically typed languages, while still
791:
Guy Cousineau is quoted recalling that his experience with programming language implementation was initially very limited, and that there were multiple inadequacies for which he is responsible. Despite this, he believes that "Ascander, Pierre and Michel did quite a nice piece of work.”
658:
the implementation of set union in the OCaml standard library in theory is asymptotically faster than the equivalent function in the standard libraries of imperative languages (e.g., C++, Java) because the OCaml implementation can exploit the
3260:
Far more sophisticated, high-performance 2D and 3D graphical programs can be developed in OCaml. Thanks to the use of OpenGL and OCaml, the resulting programs can be cross-platform, compiling without any changes on many major platforms.
824:, replaced the old Caml implementation and ran on small desktop machines. In the following years, libraries such as Michel Mauny's syntax manipulation tools appeared and helped promote the use of Caml in educational and research teams. 840:. Also, Leroy designed a high-level module system inspired by the module system of Standard ML which provided powerful facilities for abstraction and parameterization and made larger-scale programs easier to build. 750:
to develop a faster implementation of ML, and Robin Milner proposed a new definition of ML to avoid divergence between various implementations. Simultaneously, Pierre-Louis Curien, a senior researcher at
2599:. As the factorial function grows very rapidly, it quickly overflows machine-precision numbers (typically 32- or 64-bits). Thus, factorial is a suitable candidate for arbitrary-precision arithmetic. 781: 785: 735: 539: 107: 1224:. This is an interactive OCaml session that prints the inferred types of resulting or defined expressions. The OCaml top-level is started by simply executing the OCaml program: 596:
languages. Also, OCaml's type-inferring compiler greatly reduces the need for the manual type annotations that are required in most statically typed languages. For example, the
5544: 731:
to simplify using LCF on different machines, and, by the 1980s, was turned into a complete system of its own. ML would eventually serve as a basis for the creation of OCaml.
948:, where object types are compatible if their method signatures are compatible, regardless of their declared inheritance (an unusual feature in statically typed languages). 883: 1114:
style, with preemptive context switching. OCaml threads in the same domain execute by time sharing only. However, an OCaml program can contain several domains.
857:. In 2000, Jacques Garrigue extended Objective Caml with multiple new features such as polymorphic methods, variants, and labeled and optional arguments. 2602:
In OCaml, the Num module (now superseded by the ZArith module) provides arbitrary-precision arithmetic and can be loaded into a running top-level using:
1573:
which denotes that the function is recursive. The function recursively iterates over the given list of integers and provides a sum of the elements. The
5350: 2123:
The following program calculates the smallest number of people in a room for whom the probability of completely unique birthdays is less than 50% (the
443: 1107:
The bytecode compiler supports operation on any 32- or 64-bit architecture when native code generation is not available, requiring only a C compiler.
6411: 679: 6456: 6446: 6081: 6451: 6426: 704: 780:. The first implementation of Caml was created in 1987 and was further developed until 1992. Though it was spearheaded by Ascánder Suárez, 651:
allocation, helping to maximize the performance of the resulting code even if it makes extensive use of functional programming constructs.
836:
compiler was added to the bytecode compiler, which greatly increased performance to comparable levels with mainstream languages such as
6436: 6365: 6038: 4284: 6401: 4373: 581:
under an ML-like type system. Thus, programmers need not be highly familiar with the pure functional language paradigm to use OCaml.
2127:, where for 1 person the probability is 365/365 (or 100%), for 2 it is 364/365, for 3 it is 364/365 × 363/365, etc.) (answer = 23). 765:(CAM). Guy Cousineau, a researcher at Paris Diderot University, recognized that this could be applied as a compiling method for ML. 6461: 6416: 5551: 1325:
The first argument to ocamlc, "hello.ml", specifies the source file to compile and the "-o hello" flag specifies the output file.
6431: 6370: 6028: 1138: 1884:
OCaml lends itself to concisely expressing recursive algorithms. The following code example implements an algorithm similar to
727:, a language that would only allow the writer to construct valid proofs with its polymorphic type system. ML was turned into a 6406: 6360: 938: 817: 1423:
This is an example of a function that either extracts an int from an option, if there is one inside, and converts it into a
975:
program in C, so that an OCaml library can be distributed to C programmers who have no knowledge or installation of OCaml.
899: 435: 6101: 6074: 5578: 5423: 5354: 2358:
times. To convert a Church numeral from a functional value to a string, we pass it a function that prepends the string
944:
OCaml is notable for extending ML-style type inference to an object system in a general-purpose language. This permits
4324:, a high-level, multi-paradigm, functional and object-oriented programming language intended for program verification. 6106: 879: 421: 268: 1196: 6111: 1168: 439: 631:
languages are, in general, challenging to compile to efficient machine language code, due to issues such as the
6380: 6312: 6185: 6067: 5856: 5709: 5617: 4248: 4228: 2596: 1153: 724: 609: 543: 344: 6421: 6355: 6333: 6287: 6260: 6235: 6195: 5629: 5397: 4581: 4484: 4244: 1175: 535: 316: 6327: 6230: 6200: 5651: 1558: 1269: 1220: 761: 547: 364: 20: 48: 6302: 6297: 6240: 6220: 5317: 4823: 4594:
firm, which adopted OCaml as its preferred language in its early days and continues to use it as of 2023.
4490: 4422: 4398: 2595:
A variety of libraries are directly accessible from OCaml. For example, OCaml has a built-in library for
1010: 854: 712: 605: 578: 458: 360: 136: 64: 5749: 4278: 832:
In 1995, Xavier Leroy released Caml Special Light, which was an improved version of Caml. An optimizing
6245: 6141: 6124: 5985: 5844: 5695: 5606: 4478: 4438: 4335: 1272: 1182: 1039: 952: 922: 853:
way, while those same idioms caused unsoundness or required runtime checks in languages such as C++ or
648: 356: 340: 332: 5196: 6255: 6210: 5811: 5725: 5674: 5611: 5560: 5273: 4487:, a general-purpose, high-level, multi-paradigm, functional and object-oriented programming language. 4468: 4321: 1424: 1111: 720: 708: 663: 644: 589: 558: 500: 454: 348: 74: 4571: 6292: 6175: 5975: 4651: 4379: 4302: 1578: 960: 809: 752: 304: 196: 5221: 1164: 144: 6441: 6048: 5715: 5537: 4355: 3911: 1005: 910: 875: 867: 700: 640: 504: 477: 240: 926: 6161: 5850: 5129: 4865: 4493:, a general-purpose programming language emphasizing performance, type safety, and concurrency. 4294: 3236:
The LablGL bindings to OpenGL are required. The program may then be compiled to bytecode with:
628: 574: 570: 181: 56: 52: 4363: 5902: 5830: 5460: 5346:
Using functional programming within an industrial product group: perspectives and perceptions
4290: 2325: 617: 6013: 4794: 3407:
Functions may take functions as input and return functions as result. For example, applying
378: 6090: 6007: 4506: 2651:
The factorial function may then be written using the arbitrary-precision numeric operators
964: 945: 805: 743: 446: 43: 1557:
Lists are one of the fundamental datatypes in OCaml. The following code example defines a
8: 6166: 5583: 5442: 4591: 4587: 4331: 1845: 1017: 715:. Milner repeatedly ran into the issue that the theorem provers would attempt to claim a 636: 542:(Inria). In the early 2000s, elements from OCaml were adopted by many languages, notably 512: 60: 5115: 5916: 5508: 4527: 4448: 4348: 1804: 956: 930: 275: 203: 102: 5080:
A domain is a unit of parallelism in OCaml, a domain usually corresponds to a CPU core
4686: 6146: 5970: 5456: 4597: 4553:
At least several dozen companies use OCaml to some degree. Notable examples include:
4502: 1100: 1028: 256: 185: 5270:"WebAssembly/spec: WebAssembly specification, reference interpreter, and test suite" 5056: 4658: 971:. OCaml also supports creating libraries of OCaml functions that can be linked to a 5736: 5358: 3270: 2124: 1582: 1189: 1076: 982: 918: 604:
of functions usually need not be declared explicitly, as they do in languages like
531: 395: 263: 235: 224: 866:
5.0.0 release in 2022 is a complete rewrite of the language runtime, removing the
624:
are used. These are rare enough that avoiding them is quite possible in practice.
5965: 5816: 5419: 5344: 4626: 4472: 2311: 756: 719:
was valid by putting non-proofs together. As a result, he went on to develop the
516: 496: 85: 4088:
is known at runtime, a specialized and very fast power function can be created:
5980: 5922: 5824: 4567: 4557: 4534: 4308: 3949:
is known only at runtime, a two-stage power function can be used in MetaOCaml:
3923: 3278: 2315: 1149: 914: 906: 813: 674: 632: 601: 566: 508: 466: 336: 173: 94: 5928: 777: 6395: 6265: 5658: 5343:
Scott, David; Sharp, Richard; Gazagnaire, Thomas; Madhavapeddy, Anil (2010).
1708: 1241:
Code can then be entered at the "#" prompt. For example, to calculate 1+2*3:
934: 871: 739: 716: 635:. Along with standard loop, register, and instruction optimizations, OCaml's 621: 374: 177: 5461:"Improving Docker with Unikernels: Introducing HyperKit, VPNKit and DataKit" 5362: 4241:
integrates constructions for developing concurrent and distributed programs.
2825:"6689502913449127057588118054090372586752746333138029810295671352301633 6317: 6156: 5946: 5940: 5934: 5802: 5686: 5464: 4647: 4312: 3915: 963:
primitives is provided, including language support for efficient numerical
801: 696: 692: 659: 654: 462: 90: 6018: 4903: 5663: 5642: 5295: 5173: 5155: 5090: 4521: 4513: 4499:, a self-amending smart contract platform using XTZ as a native currency. 4430: 4298: 1217:
Snippets of OCaml code are most easily studied by entering them into the
902: 849: 833: 593: 585: 584:
By requiring the programmer to work within the constraints of its static
562: 488: 320: 168: 6059: 5028: 6225: 4541: 4444: 4367: 2828:
55724496298936687416527198498130815763789321409055253440858940812185989
1807:
is simply the application of the + operator, this can be shortened to:
1032: 821: 5269: 4761: 776:
was initially designed and developed by INRIA's Formel team headed by
6322: 5836: 5778: 4458: 4415: 4252: 3245:$ ocamlopt -I +lablGL lablglut.cmxa lablgl.cmxa simple.ml -o simple 2590: 1885: 1353:. This is used to express that a value might or might not be present. 1088: 1066: 597: 519:, and specific financial utilities, among other application domains. 473: 216: 1127: 1023:
The native code compiler is available for many platforms, including
5952: 5743: 5569: 5376: 5130:"3.7. Options — OCaml Programming: Correct + Efficient + Beautiful" 4928: 4736: 4665: 4577: 4517: 4464: 4454: 4359: 4338:. Several C routines have been generated by an OCaml program named 4272: 4256: 3251:$ ocamlfind opt simple.ml -package lablgl.glut -linkpkg -o simple 999: 755:, developed a calculus of categorical combinators and linked it to 728: 492: 484: 481: 312: 5524: 4781: 4561: 4481:, a free and open-source programming language for web development. 890:
developers for the broader OCaml tooling and packaging ecosystem.
6215: 6205: 5882: 5796: 5766: 5720: 5529: 5477: 4711: 4605: 4531: 4391: 4385: 3239:$ ocamlc -I +lablGL lablglut.cma lablgl.cma simple.ml -o simple 1342: 986: 968: 5438: 5342: 5318:"BuckleScript: The 1.0 release has arrived! | Tech at Bloomberg" 2831:
8481114389650005964960521256960000000000000000000000000000"
2784:
This function can compute much larger factorials, such as 120!:
540:
French Institute for Research in Computer Science and Automation
6282: 6250: 6134: 5862: 5790: 5754: 5623: 5514: 5482: 5381: 5042: 4238: 2842: 1844:
Furthermore, one can omit the list argument by making use of a
1569:, which is supposed to be a list of integers. Note the keyword 1050: 1046: 734:
In the early 1980s, there were some developments that prompted
228: 212: 4401:
programming language compiler, created at Facebook, extending
4382:, a dedicated system for scientific and engineering computing. 2841:
The following program renders a rotating triangle in 2D using
413: 6190: 6180: 6151: 6129: 5893: 5868: 5784: 5668: 4601: 4496: 4426: 2318:, with successor (succ) and addition (add). A Church numeral 1082: 1072: 1060: 1054: 1035: 837: 820:, for this implementation. This new implementation, known as 816:
wrote a memory management system, also known as a sequential
252: 244: 220: 208: 35: 1110:
OCaml bytecode and native code programs can be written in a
6272: 5772: 5760: 5592: 5003: 4978: 4953: 4409: 4327: 4232: 1096: 1092: 1024: 773: 450: 398: 352: 308: 248: 78: 5519: 6307: 6277: 4538: 4434: 4402: 4394:, free and open-source multi-platform genealogy software. 3914:
extension of OCaml enabling incremental compiling of new
711:, which were historically developed in languages such as 407: 3922:
As an example: if at compile time it is known that some
1069:(before OCaml 5.0.0, and due to reappear in OCaml 5.2.0) 738:'s Formel team to become interested in the ML language. 662:
of sets to reuse parts of input sets in the output (see
499:(OPAM). OCaml was initially developed in the context of 5251: 5229: 4318:
Easycrypt, a toolset for writing computer-aided proofs.
4259:, which can compile to both native code and JavaScript. 1268:
OCaml infers the type of the expression to be "int" (a
848:
Didier Rémy and Jérôme Vouillon designed an expressive
4376:, a client server Web and mobile development framework 1302:
or compiled into an optimized native-code executable:
1002:
that supports stepping backwards to investigate errors
5502: 4509:
program to synchronize files between two directories.
620:
is turned off or when some type-unsafe features like
422: 404: 289: 5197:"Messenger.com Now 50% Converted to Reason · Reason" 2006:
Or using partial application of the >= operator.
1145: 686: 5420:"Keynote - Observations of a Functional Programmer" 5288: 3700:to indicate that it can be applied to any function 3248:or, more simply, using the ocamlfind build command 788:carried on with development after he left in 1988. 561:-derived languages are best known for their static 410: 401: 5351:International Conference on Functional Programming 2591:Arbitrary-precision factorial function (libraries) 538:project managed and principally maintained by the 511:software. Beyond these areas, it has found use in 5455: 4564:, an OCaml compiler backend targeting JavaScript. 4421:Infer, a static analyzer created at Facebook for 804:designed a new implementation of Caml based on a 678:The OCaml development team receiving an award at 6393: 680:Symposium on Principles of Programming Languages 5057:"ocaml/asmcomp at trunk · ocaml/ocaml · GitHub" 4580:, which developed Flow, Hack, Infer, Pfff, and 4600:, which uses OCaml in the desktop editions on 1345:, augments a given data type to either return 705:Laboratory for Foundations of Computer Science 6075: 5545: 5153: 5091:"OCaml - The toplevel system or REPL (ocaml)" 4824:"1.2. OCaml: Functional Programming in OCaml" 4574:(rebranded as Citrix Hypervisor during 2018). 1552: 1063:(before OCaml 5.0.0, and back in OCaml 5.1.0) 5436: 5417: 5395: 5222:"Flow: A Static Type Checker for JavaScript" 4461:programming framework written in pure OCaml. 4263: 4219:The new function is automatically compiled. 1605:(* Keyword rec means 'recursive'. *) 1296:can be compiled into a bytecode executable: 1154:introducing citations to additional sources 588:, OCaml eliminates many of the type-related 469:, Didier Rémy, Ascánder Suárez, and others. 1349:value of the given data type, or to return 6348: 6082: 6068: 5552: 5538: 5507: 5426:Commercial Uses of Functional Programming. 5029:"OCaml compiler governance and membership" 4222: 1337:type constructor in OCaml, similar to the 143: 6089: 4795:"A J Milner - A.M. Turing Award Laureate" 3402: 1038:. Portability is achieved through native 616:guaranteeing runtime safety, except when 5910: 1585:element, though it is far more general. 1144:Relevant discussion may be found on the 673: 6412:Extensible syntax programming languages 4388:, a framework for analyzing C programs. 1888:that sorts a list in increasing order. 1662:(* Recursive call if integers is a non- 768: 461:features. OCaml was created in 1996 by 6457:Statically typed programming languages 6447:Pattern matching programming languages 6394: 4929:"Release of OCaml 5.0.0 OCaml Package" 2836: 967:in formats compatible with both C and 860: 6452:Programming languages created in 1996 6427:Object-oriented programming languages 6063: 5533: 4898: 4896: 4894: 4892: 4890: 4888: 4886: 4860: 4858: 4856: 4854: 4852: 4850: 4848: 4846: 4844: 4817: 4815: 4646: 3264: 2364:to its input and the constant string 1427:, or if not, returns an empty string: 827: 759:, which led to the definition of the 528:Categorical Abstract Machine Language 5147: 5116:"OCaml - Batch compilation (Ocamlc)" 4821: 3900: 1626:(* Yield 0 if integers is the empty 1121: 707:. Milner and others were working on 5355:Association for Computing Machinery 2118: 1668:element of the list, and rest is a 878:. These changes enable support for 695:, a British computer scientist and 627:Aside from type-checking overhead, 13: 5559: 4883: 4841: 4812: 4775: 4451:for generating multimedia streams. 4235:framework language based on OCaml. 3943:is needed often, but the value of 3269:The following code calculates the 2305: 1671:list of the rest of the elements, 1283:The following program "hello.ml": 1042:support for major architectures: 476:includes an interactive top-level 14: 6473: 6437:OCaml programming language family 5494: 4687:"Influences - The Rust Reference" 978:The OCaml distribution contains: 843: 687:Development of ML (Meta Language) 6402:High-level programming languages 6376: 6375: 6347: 6043: 6042: 6033: 6032: 6023: 6022: 6012: 5892: 5396:Yaron Minsky (1 November 2011). 1137:relies largely or entirely on a 1126: 1117: 394: 373: 34: 6462:Software using the LGPL license 6417:Free compilers and interpreters 5470: 5449: 5430: 5411: 5389: 5369: 5336: 5310: 5262: 5244: 5214: 5189: 5166: 5122: 5108: 5083: 5074: 5049: 5043:"OCaml governance and projects" 5035: 5021: 4996: 4971: 4946: 4921: 4822:Clarkson, Michael; et al. 4269:Ahrefs, an SEO software product 3716:can even be applied to itself. 3708:to itself, rather than only to 3687:"Test Test Test Test" 3415:yields a function that applies 1707:Another way is to use standard 1665:empty list; first is the first 937:, and incremental generational 6432:ML programming language family 5857:Logic for Computable Functions 4787: 4754: 4729: 4704: 4679: 4640: 4619: 4520:intended for execution inside 4512:The reference interpreter for 4412:programming language compiler. 2597:arbitrary-precision arithmetic 1577:statement has similarities to 1305:$ ocamlopt hello.ml -o hello 1278: 725:Logic for Computable Functions 97:, Didier Rémy, Ascánder Suárez 1: 4866:"Prologue - Real World OCaml" 4612: 2310:The following code defines a 1233:Objective Caml version 3.09.0 927:functors (parametric modules) 795: 691:Between the 1970s and 1980s, 553: 536:free and open-source software 6407:Cross-platform free software 4904:"A History of OCaml – OCaml" 3905: 1879: 1299:$ ocamlc hello.ml -o hello 1275:) and gives the result "7". 939:automatic garbage collection 762:categorical abstract machine 21:occam (programming language) 7: 4666:"OCaml 5.2.0 Release Notes" 4418:, a formal proof assistant. 4336:discrete Fourier transforms 3419:two times to its argument. 1565:that accepts one argument, 1057:(in OCaml 5.0.0 and higher) 893: 748:functional abstract machine 579:object-oriented programming 119:; 28 years ago 10: 6478: 3712:functions. In particular, 1553:Summing a list of integers 953:foreign function interface 742:, a research professor at 669: 643:methods to optimize value 18: 6343: 6120: 6097: 5994: 5901: 5890: 5810: 5735: 5684: 5675:Standard ML of New Jersey 5641: 5591: 5577: 5568: 5274:World Wide Web Consortium 4654:. caml-list mailing list. 4471:application based on the 4469:peer-to-peer file sharing 4433:, used to detect bugs in 4339: 4264:Software written in OCaml 4083: 3944: 3926: 2365: 2359: 2353: 2347: 2341: 2335: 2329: 2319: 1328: 880:shared-memory parallelism 664:persistent data structure 592:problems associated with 569:compilers. OCaml unifies 501:automated theorem proving 370: 331: 326: 303: 298: 284: 274: 262: 234: 202: 191: 167: 163: 135: 131: 113: 101: 84: 70: 42: 33: 5976:Christine Paulin-Mohring 5178:, EasyCrypt, 5 July 2024 4548: 4380:Owl Scientific Computing 4247:is an alternative OCaml 4127: 4090: 3951: 3718: 3629: 3421: 3283: 2847: 2786: 2665: 2604: 2372: 2328:that accepts a function 2129: 2008: 1890: 1850: 1809: 1774: 1713: 1678: 1587: 1487: 1429: 1355: 1310: 1291:"Hello World!" 1285: 1243: 1226: 1013:– to measure performance 753:Paris Diderot University 19:Not to be confused with 6049:Category:Software:OCaml 5439:"Signals & Threads" 5363:10.1145/1863543.1863557 5316: 5296:"Companies using OCaml" 5252:"Infer static analyzer" 4362:that infers and checks 4223:Other derived languages 3912:multi-stage programming 3242:or to nativecode with: 2937:"OpenGL Demo" 1711:that works with lists. 1006:Documentation generator 911:parametric polymorphism 884:color-blind concurrency 876:delimited continuations 812:. In addition to this, 800:Between 1990 and 1991, 701:University of Edinburgh 641:static program analysis 530:, but OCaml omits this 491:compiler, a reversible 192:Implementation language 5398:"OCaml for the Masses" 4870:dev.realworldocaml.org 4828:courses.cs.cornell.edu 4570:, which uses OCaml in 3403:Higher-order functions 3281:and pattern matching. 921:, first class lexical 699:winner, worked at the 683: 629:functional programming 150:; 3 months ago 6091:Programming languages 6039:Category:Family:OCaml 5520:OCaml Package Manager 5437:Yaron Minsky (2023). 5418:Yaron Minsky (2016). 4979:"Gallium team - Home" 4652:"Objective Caml 1.00" 4255:for OCaml created at 2326:higher-order function 1103:(before OCaml 4.00.0) 1085:(before OCaml 4.06.0) 1016:Many general-purpose 677: 618:array bounds checking 600:of variables and the 526:originally stood for 6422:Functional languages 6008:Open-source software 4762:"A History of OCaml" 4507:file synchronization 3696:uses a type variable 1150:improve this article 1079:(before OCaml 5.0.0) 946:structural subtyping 806:bytecode interpreter 769:First implementation 744:University of Oxford 447:programming language 16:Programming language 5443:Jane Street Capital 5284:– via GitHub. 5175:EasyCrypt/easycrypt 5154:oleg-at-okmij.org. 4592:proprietary trading 4588:Jane Street Capital 4347:The web version of 4281:, a static analyzer 3704:mapping from a type 2837:Triangle (graphics) 2616:"topfind" 1846:partial application 861:Ongoing development 637:optimizing compiler 513:systems programming 465:, Jérôme Vouillon, 276:Filename extensions 114:First appeared 93:, Jérôme Vouillon, 30: 6029:Category:Family:ML 5917:Lennart Augustsson 5478:"VPNKit on GitHub" 5324:. 8 September 2016 5201:reasonml.github.io 4691:The Rust Reference 4528:Xen Cloud Platform 4449:scripting language 4405:with static types. 4349:Facebook Messenger 4315:management system. 4287:, a social network 3277:inputted. It uses 3271:Fibonacci sequence 3265:Fibonacci sequence 1805:anonymous function 931:exception handling 828:Caml Special Light 684: 449:which extends the 28: 6389: 6388: 6371:Non-English-based 6057: 6056: 5971:Steven G. Johnson 5961: 5960: 5878: 5877: 5737:Programming tools 5705: 5704: 5457:Anil Madhavapeddy 5322:Tech at Bloomberg 5276:. 5 December 2019 4782:Linux Weekly News 4741:pauillac.inria.fr 4712:"Jérôme Vouillon" 4537:solution for the 4485:Reason / ReScript 3901:Derived languages 2237:"answer = %d 1270:machine-precision 1215: 1214: 1200: 1029:Microsoft Windows 898:OCaml features a 818:garbage collector 594:dynamically typed 503:, and is used in 387: 386: 169:Typing discipline 6469: 6379: 6378: 6351: 6350: 6084: 6077: 6070: 6061: 6060: 6046: 6045: 6036: 6035: 6026: 6025: 6016: 5908: 5907: 5896: 5817:proof assistants 5589: 5588: 5575: 5574: 5554: 5547: 5540: 5531: 5530: 5525:Real World OCaml 5511: 5506: 5505: 5503:Official website 5488: 5487: 5474: 5468: 5467: 5453: 5447: 5446: 5434: 5428: 5427: 5415: 5409: 5408: 5406: 5404: 5393: 5387: 5386: 5377:"Flow on GitHub" 5373: 5367: 5366: 5340: 5334: 5333: 5331: 5329: 5314: 5308: 5307: 5305: 5303: 5292: 5286: 5285: 5283: 5281: 5266: 5260: 5259: 5248: 5242: 5241: 5239: 5237: 5228:. Archived from 5218: 5212: 5211: 5209: 5207: 5193: 5187: 5186: 5185: 5183: 5170: 5164: 5163: 5151: 5145: 5144: 5142: 5140: 5134:cs3110.github.io 5126: 5120: 5119: 5112: 5106: 5105: 5103: 5101: 5087: 5081: 5078: 5072: 5071: 5069: 5067: 5053: 5047: 5046: 5039: 5033: 5032: 5025: 5019: 5018: 5016: 5014: 5008:cambium.inria.fr 5000: 4994: 4993: 4991: 4989: 4983:gallium.inria.fr 4975: 4969: 4968: 4966: 4964: 4958:cristal.inria.fr 4954:"Projet Cristal" 4950: 4944: 4943: 4941: 4939: 4925: 4919: 4918: 4916: 4914: 4900: 4881: 4880: 4878: 4876: 4862: 4839: 4838: 4836: 4834: 4819: 4810: 4809: 4807: 4805: 4799:amturing.acm.org 4791: 4785: 4779: 4773: 4772: 4770: 4768: 4758: 4752: 4751: 4749: 4747: 4733: 4727: 4726: 4724: 4722: 4708: 4702: 4701: 4699: 4697: 4683: 4677: 4676: 4674: 4672: 4662: 4656: 4655: 4644: 4638: 4637: 4635: 4633: 4623: 4560:, which created 4343: 4342: 4293:, a utility for 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: 4121: 4118: 4115: 4112: 4109: 4106: 4103: 4100: 4097: 4094: 4087: 4086: 4078: 4075: 4072: 4069: 4066: 4063: 4060: 4057: 4054: 4051: 4048: 4045: 4042: 4039: 4036: 4033: 4030: 4027: 4024: 4021: 4018: 4015: 4012: 4009: 4006: 4003: 4000: 3997: 3994: 3991: 3988: 3985: 3982: 3979: 3976: 3973: 3970: 3967: 3964: 3961: 3958: 3955: 3948: 3947: 3942: 3941: 3938: 3935: 3932: 3929: 3896: 3893: 3890: 3887: 3884: 3881: 3880: 3877: 3874: 3871: 3867: 3864: 3861: 3858: 3855: 3852: 3849: 3846: 3843: 3840: 3837: 3836: 3833: 3830: 3827: 3824: 3821: 3818: 3814: 3811: 3808: 3805: 3802: 3799: 3796: 3793: 3790: 3787: 3784: 3781: 3778: 3775: 3772: 3769: 3766: 3763: 3760: 3757: 3754: 3753: 3750: 3747: 3744: 3741: 3738: 3735: 3732: 3729: 3726: 3723: 3688: 3685: 3682: 3679: 3676: 3673: 3672: 3669: 3668:"Test" 3666: 3663: 3659: 3656: 3653: 3650: 3647: 3644: 3643: 3640: 3637: 3634: 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: 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: 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: 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: 3109: 3106: 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: 3019: 3016: 3013: 3010: 3007: 3004: 3001: 2998: 2995: 2992: 2989: 2986: 2983: 2980: 2977: 2974: 2971: 2968: 2965: 2962: 2959: 2956: 2953: 2950: 2947: 2944: 2941: 2938: 2935: 2932: 2929: 2926: 2923: 2920: 2917: 2914: 2911: 2908: 2905: 2902: 2899: 2896: 2893: 2890: 2887: 2884: 2881: 2878: 2875: 2872: 2869: 2866: 2863: 2860: 2857: 2854: 2851: 2832: 2829: 2826: 2823: 2820: 2817: 2814: 2811: 2808: 2805: 2802: 2799: 2796: 2793: 2790: 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: 2662: 2658: 2654: 2647: 2644: 2641: 2638: 2635: 2632: 2629: 2626: 2623: 2620: 2617: 2614: 2611: 2608: 2586: 2583: 2580: 2577: 2574: 2571: 2568: 2565: 2562: 2559: 2556: 2553: 2550: 2547: 2544: 2541: 2538: 2535: 2532: 2529: 2526: 2523: 2520: 2517: 2514: 2511: 2508: 2505: 2502: 2499: 2496: 2493: 2490: 2487: 2484: 2481: 2478: 2475: 2472: 2469: 2466: 2463: 2460: 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: 2369: 2368: 2363: 2362: 2357: 2356: 2351: 2350: 2345: 2344: 2339: 2338: 2333: 2332: 2323: 2322: 2301: 2298: 2295: 2292: 2289: 2288:birthday_paradox 2286: 2283: 2280: 2277: 2274: 2271: 2268: 2265: 2264:birthday_paradox 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: 2163: 2160: 2157: 2154: 2153:birthday_paradox 2151: 2148: 2145: 2142: 2139: 2136: 2133: 2125:birthday problem 2119:Birthday problem 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: 2002: 1999: 1996: 1993: 1990: 1987: 1984: 1981: 1978: 1975: 1972: 1969: 1966: 1963: 1960: 1957: 1954: 1951: 1948: 1945: 1942: 1939: 1936: 1933: 1930: 1927: 1924: 1921: 1918: 1915: 1912: 1909: 1906: 1903: 1900: 1897: 1894: 1875: 1872: 1869: 1866: 1863: 1860: 1857: 1854: 1840: 1837: 1834: 1831: 1828: 1825: 1822: 1819: 1816: 1813: 1799: 1796: 1793: 1790: 1787: 1784: 1781: 1778: 1771: 1768: 1765: 1762: 1759: 1756: 1753: 1750: 1747: 1744: 1741: 1738: 1735: 1732: 1729: 1726: 1723: 1720: 1717: 1703: 1700: 1697: 1694: 1691: 1688: 1685: 1682: 1675: 1672: 1669: 1666: 1663: 1660: 1657: 1654: 1651: 1648: 1645: 1642: 1639: 1636: 1633: 1630: 1627: 1624: 1621: 1618: 1615: 1612: 1609: 1606: 1603: 1600: 1597: 1594: 1591: 1572: 1548: 1545: 1542: 1539: 1536: 1533: 1530: 1527: 1524: 1521: 1518: 1515: 1512: 1509: 1506: 1503: 1500: 1497: 1494: 1491: 1484: 1481: 1478: 1475: 1472: 1469: 1466: 1463: 1460: 1457: 1454: 1451: 1448: 1445: 1442: 1439: 1436: 1433: 1419: 1416: 1413: 1410: 1407: 1404: 1401: 1398: 1395: 1392: 1389: 1386: 1383: 1380: 1377: 1374: 1371: 1368: 1365: 1362: 1359: 1352: 1348: 1340: 1336: 1321: 1318: 1314: 1292: 1289: 1264: 1263:- : int = 7 1261: 1258: 1254: 1250: 1247: 1237: 1234: 1230: 1210: 1207: 1201: 1199: 1158: 1130: 1122: 983:Lexical analysis 919:pattern matching 886:, respectively. 532:abstract machine 487:, an optimizing 426: 420: 419: 416: 415: 412: 409: 406: 403: 400: 377: 294: 291: 158: 156: 151: 147: 127: 125: 120: 86:Designed by 38: 31: 27: 6477: 6476: 6472: 6471: 6470: 6468: 6467: 6466: 6392: 6391: 6390: 6385: 6339: 6116: 6093: 6088: 6058: 6053: 6011: 5990: 5966:Thierry Coquand 5957: 5897: 5888: 5874: 5815: 5812:Theorem provers 5806: 5731: 5701: 5680: 5637: 5582: 5579:Implementations 5564: 5558: 5501: 5500: 5497: 5492: 5491: 5476: 5475: 5471: 5454: 5450: 5435: 5431: 5416: 5412: 5402: 5400: 5394: 5390: 5375: 5374: 5370: 5341: 5337: 5327: 5325: 5315: 5311: 5301: 5299: 5294: 5293: 5289: 5279: 5277: 5268: 5267: 5263: 5250: 5249: 5245: 5235: 5233: 5232:on 8 April 2022 5220: 5219: 5215: 5205: 5203: 5195: 5194: 5190: 5181: 5179: 5172: 5171: 5167: 5156:"BER MetaOCaml" 5152: 5148: 5138: 5136: 5128: 5127: 5123: 5114: 5113: 5109: 5099: 5097: 5089: 5088: 5084: 5079: 5075: 5065: 5063: 5055: 5054: 5050: 5041: 5040: 5036: 5027: 5026: 5022: 5012: 5010: 5002: 5001: 4997: 4987: 4985: 4977: 4976: 4972: 4962: 4960: 4952: 4951: 4947: 4937: 4935: 4927: 4926: 4922: 4912: 4910: 4902: 4901: 4884: 4874: 4872: 4864: 4863: 4842: 4832: 4830: 4820: 4813: 4803: 4801: 4793: 4792: 4788: 4780: 4776: 4766: 4764: 4760: 4759: 4755: 4745: 4743: 4735: 4734: 4730: 4720: 4718: 4710: 4709: 4705: 4695: 4693: 4685: 4684: 4680: 4670: 4668: 4664: 4663: 4659: 4645: 4641: 4631: 4629: 4625: 4624: 4620: 4615: 4551: 4473:EDonkey network 4356:static analyzer 4340: 4275:, a SMT solver. 4266: 4225: 4217: 4216: 4213: 4210: 4207: 4204: 4201: 4198: 4195: 4192: 4189: 4186: 4183: 4180: 4177: 4174: 4171: 4168: 4165: 4162: 4159: 4156: 4153: 4150: 4147: 4144: 4141: 4138: 4135: 4132: 4129: 4125:The result is: 4123: 4122: 4119: 4116: 4113: 4110: 4107: 4104: 4101: 4098: 4095: 4092: 4084: 4080: 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: 3945: 3939: 3936: 3933: 3930: 3927: 3919:checking, etc. 3910:MetaOCaml is a 3908: 3903: 3898: 3897: 3894: 3891: 3888: 3885: 3882: 3878: 3875: 3872: 3869: 3868: 3865: 3862: 3859: 3856: 3853: 3850: 3847: 3844: 3841: 3838: 3834: 3831: 3828: 3825: 3822: 3819: 3816: 3815: 3812: 3809: 3806: 3803: 3800: 3797: 3794: 3791: 3788: 3785: 3782: 3779: 3776: 3773: 3770: 3767: 3764: 3761: 3758: 3755: 3751: 3748: 3745: 3742: 3739: 3736: 3733: 3730: 3727: 3724: 3721: 3720: 3690: 3689: 3686: 3683: 3680: 3677: 3674: 3670: 3667: 3664: 3661: 3660: 3657: 3654: 3651: 3648: 3645: 3641: 3638: 3635: 3632: 3631: 3628: 3627: 3624: 3621: 3618: 3615: 3612: 3609: 3606: 3603: 3600: 3597: 3594: 3591: 3588: 3585: 3582: 3579: 3576: 3573: 3570: 3567: 3564: 3561: 3558: 3555: 3552: 3549: 3546: 3543: 3540: 3537: 3534: 3531: 3528: 3525: 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: 3405: 3400: 3399: 3396: 3393: 3390: 3387: 3384: 3381: 3378: 3375: 3372: 3369: 3366: 3363: 3360: 3357: 3354: 3351: 3348: 3345: 3342: 3339: 3336: 3333: 3330: 3327: 3324: 3321: 3318: 3315: 3312: 3309: 3306: 3303: 3300: 3297: 3294: 3291: 3288: 3285: 3267: 3258: 3252: 3246: 3240: 3234: 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: 3107: 3104: 3101: 3098: 3095: 3092: 3089: 3086: 3083: 3080: 3077: 3074: 3071: 3068: 3065: 3062: 3059: 3056: 3053: 3050: 3047: 3044: 3041: 3038: 3035: 3032: 3029: 3026: 3023: 3020: 3017: 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: 2892:initDisplayMode 2891: 2888: 2885: 2882: 2879: 2876: 2873: 2870: 2867: 2864: 2861: 2858: 2855: 2852: 2849: 2839: 2834: 2833: 2830: 2827: 2824: 2821: 2818: 2815: 2812: 2809: 2806: 2803: 2800: 2797: 2794: 2791: 2788: 2782: 2781: 2778: 2775: 2772: 2769: 2766: 2763: 2760: 2757: 2754: 2751: 2748: 2745: 2742: 2739: 2736: 2733: 2730: 2727: 2724: 2721: 2718: 2715: 2712: 2709: 2706: 2703: 2700: 2697: 2694: 2691: 2688: 2685: 2682: 2679: 2676: 2673: 2670: 2667: 2660: 2656: 2652: 2649: 2648: 2645: 2642: 2639: 2636: 2633: 2631:"num" 2630: 2627: 2624: 2621: 2618: 2615: 2612: 2609: 2606: 2593: 2588: 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: 2473: 2470: 2467: 2464: 2461: 2458: 2455: 2452: 2449: 2446: 2443: 2440: 2437: 2434: 2431: 2428: 2425: 2422: 2419: 2416: 2413: 2410: 2407: 2404: 2401: 2398: 2395: 2392: 2389: 2386: 2383: 2380: 2377: 2374: 2366: 2360: 2354: 2348: 2342: 2336: 2330: 2320: 2316:natural numbers 2312:Church encoding 2308: 2306:Church numerals 2303: 2302: 2299: 2296: 2293: 2290: 2287: 2284: 2281: 2278: 2275: 2272: 2269: 2266: 2263: 2260: 2257: 2254: 2251: 2248: 2245: 2242: 2239: 2236: 2233: 2230: 2227: 2224: 2221: 2218: 2215: 2212: 2209: 2206: 2203: 2200: 2197: 2194: 2191: 2188: 2185: 2182: 2179: 2176: 2173: 2170: 2167: 2164: 2161: 2158: 2155: 2152: 2149: 2146: 2143: 2140: 2137: 2134: 2131: 2121: 2116: 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: 2004: 2003: 2000: 1997: 1994: 1991: 1988: 1985: 1982: 1979: 1976: 1973: 1970: 1967: 1964: 1961: 1958: 1955: 1952: 1949: 1946: 1943: 1940: 1937: 1934: 1931: 1928: 1925: 1922: 1919: 1916: 1913: 1910: 1907: 1904: 1901: 1898: 1895: 1892: 1882: 1877: 1876: 1873: 1870: 1867: 1864: 1861: 1858: 1855: 1852: 1842: 1841: 1838: 1835: 1832: 1829: 1826: 1823: 1820: 1817: 1814: 1811: 1801: 1800: 1797: 1794: 1791: 1788: 1785: 1782: 1779: 1776: 1773: 1772: 1769: 1766: 1763: 1760: 1757: 1754: 1751: 1748: 1745: 1742: 1739: 1736: 1733: 1730: 1727: 1724: 1721: 1718: 1715: 1705: 1704: 1701: 1698: 1695: 1692: 1689: 1686: 1683: 1680: 1677: 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: 1570: 1555: 1550: 1549: 1546: 1543: 1540: 1537: 1534: 1531: 1528: 1525: 1522: 1519: 1516: 1513: 1510: 1507: 1504: 1501: 1498: 1495: 1492: 1489: 1486: 1485: 1482: 1479: 1476: 1473: 1470: 1467: 1464: 1461: 1458: 1455: 1452: 1449: 1446: 1443: 1440: 1437: 1434: 1431: 1421: 1420: 1417: 1414: 1411: 1408: 1405: 1402: 1399: 1396: 1393: 1390: 1387: 1384: 1381: 1378: 1375: 1372: 1369: 1366: 1363: 1360: 1357: 1350: 1346: 1338: 1334: 1331: 1323: 1322: 1319: 1316: 1312: 1306: 1300: 1294: 1293: 1290: 1287: 1281: 1266: 1265: 1262: 1259: 1256: 1252: 1248: 1245: 1239: 1238: 1235: 1232: 1228: 1211: 1205: 1202: 1159: 1157: 1143: 1131: 1120: 1040:code generation 935:effect handling 896: 872:effect handlers 863: 846: 830: 798: 771: 757:lambda calculus 709:theorem provers 689: 672: 556: 517:web development 505:static analysis 497:package manager 459:object-oriented 436:general-purpose 424: 397: 393: 288: 159: 154: 152: 149: 123: 121: 118: 65:object-oriented 24: 17: 12: 11: 5: 6475: 6465: 6464: 6459: 6454: 6449: 6444: 6442:OCaml software 6439: 6434: 6429: 6424: 6419: 6414: 6409: 6404: 6387: 6386: 6384: 6383: 6373: 6368: 6363: 6358: 6344: 6341: 6340: 6338: 6337: 6330: 6325: 6320: 6315: 6310: 6305: 6300: 6295: 6290: 6285: 6280: 6275: 6270: 6269: 6268: 6258: 6253: 6248: 6243: 6238: 6233: 6228: 6223: 6218: 6213: 6208: 6203: 6198: 6193: 6188: 6183: 6178: 6173: 6172: 6171: 6170: 6169: 6164: 6149: 6144: 6139: 6138: 6137: 6127: 6121: 6118: 6117: 6115: 6114: 6109: 6104: 6098: 6095: 6094: 6087: 6086: 6079: 6072: 6064: 6055: 6054: 6052: 6003: 6001:= discontinued 5995: 5992: 5991: 5989: 5988: 5986:Simon Thompson 5983: 5981:Frank Pfenning 5978: 5973: 5968: 5962: 5959: 5958: 5956: 5950: 5944: 5938: 5932: 5926: 5923:Damien Doligez 5920: 5914: 5912: 5905: 5899: 5898: 5891: 5889: 5887: 5886: 5879: 5876: 5875: 5873: 5872: 5866: 5860: 5853: 5848: 5842: 5841: 5840: 5828: 5821: 5819: 5808: 5807: 5805: 5800: 5794: 5788: 5782: 5776: 5770: 5764: 5758: 5752: 5747: 5741: 5739: 5733: 5732: 5730: 5729: 5723: 5718: 5713: 5706: 5703: 5702: 5700: 5699: 5692: 5690: 5682: 5681: 5679: 5678: 5672: 5666: 5661: 5656: 5647: 5645: 5639: 5638: 5636: 5635: 5634: 5633: 5627: 5621: 5615: 5609: 5597: 5595: 5586: 5572: 5566: 5565: 5557: 5556: 5549: 5542: 5534: 5528: 5527: 5522: 5517: 5512: 5496: 5495:External links 5493: 5490: 5489: 5469: 5448: 5429: 5410: 5388: 5368: 5335: 5309: 5287: 5261: 5243: 5213: 5188: 5165: 5146: 5121: 5107: 5082: 5073: 5048: 5034: 5020: 4995: 4970: 4945: 4920: 4882: 4840: 4811: 4786: 4774: 4753: 4728: 4703: 4678: 4657: 4639: 4617: 4616: 4614: 4611: 4610: 4609: 4595: 4585: 4575: 4568:Citrix Systems 4565: 4558:Bloomberg L.P. 4550: 4547: 4546: 4545: 4535:virtualization 4525: 4516:, a low-level 4510: 4500: 4494: 4488: 4482: 4476: 4462: 4452: 4442: 4419: 4413: 4406: 4395: 4389: 4383: 4377: 4371: 4352: 4345: 4334:for computing 4325: 4319: 4316: 4306: 4288: 4282: 4276: 4270: 4265: 4262: 4261: 4260: 4242: 4236: 4224: 4221: 4128: 4091: 3952: 3924:power function 3907: 3904: 3902: 3899: 3719: 3630: 3422: 3411:to a function 3404: 3401: 3284: 3279:tail recursion 3266: 3263: 3256: 3250: 3244: 3238: 2848: 2838: 2835: 2787: 2666: 2605: 2592: 2589: 2373: 2307: 2304: 2130: 2120: 2117: 2009: 1891: 1881: 1878: 1851: 1810: 1775: 1714: 1679: 1588: 1554: 1551: 1520:"42" 1488: 1430: 1356: 1330: 1327: 1311: 1308:and executed: 1304: 1298: 1286: 1280: 1277: 1244: 1227: 1213: 1212: 1148:. Please help 1134: 1132: 1125: 1119: 1116: 1105: 1104: 1086: 1080: 1070: 1064: 1058: 1021: 1020: 1014: 1008: 1003: 997: 915:tail recursion 907:type inference 895: 892: 868:global GC lock 862: 859: 845: 844:Objective Caml 842: 829: 826: 814:Damien Doligez 797: 794: 770: 767: 688: 685: 671: 668: 633:funarg problem 567:type-inferring 555: 552: 509:formal methods 467:Damien Doligez 444:multi-paradigm 432:Objective Caml 385: 384: 383: 382: 379:Objective Caml 368: 367: 329: 328: 324: 323: 301: 300: 296: 295: 286: 282: 281: 278: 272: 271: 266: 260: 259: 241:Cross-platform 238: 232: 231: 206: 200: 199: 193: 189: 188: 171: 165: 164: 161: 160: 141: 139: 137:Stable release 133: 132: 129: 128: 115: 111: 110: 105: 99: 98: 95:Damien Doligez 88: 82: 81: 72: 68: 67: 49:Multi-paradigm 46: 40: 39: 15: 9: 6: 4: 3: 2: 6474: 6463: 6460: 6458: 6455: 6453: 6450: 6448: 6445: 6443: 6440: 6438: 6435: 6433: 6430: 6428: 6425: 6423: 6420: 6418: 6415: 6413: 6410: 6408: 6405: 6403: 6400: 6399: 6397: 6382: 6374: 6372: 6369: 6367: 6364: 6362: 6359: 6357: 6354: 6346: 6345: 6342: 6336: 6335: 6331: 6329: 6326: 6324: 6321: 6319: 6316: 6314: 6311: 6309: 6306: 6304: 6301: 6299: 6296: 6294: 6291: 6289: 6286: 6284: 6281: 6279: 6276: 6274: 6271: 6267: 6266:Object Pascal 6264: 6263: 6262: 6259: 6257: 6254: 6252: 6249: 6247: 6244: 6242: 6239: 6237: 6234: 6232: 6229: 6227: 6224: 6222: 6219: 6217: 6214: 6212: 6209: 6207: 6204: 6202: 6199: 6197: 6194: 6192: 6189: 6187: 6184: 6182: 6179: 6177: 6174: 6168: 6165: 6163: 6160: 6159: 6158: 6155: 6154: 6153: 6150: 6148: 6145: 6143: 6140: 6136: 6133: 6132: 6131: 6128: 6126: 6123: 6122: 6119: 6113: 6110: 6108: 6105: 6103: 6100: 6099: 6096: 6092: 6085: 6080: 6078: 6073: 6071: 6066: 6065: 6062: 6051: 6050: 6041: 6040: 6031: 6030: 6021: 6020: 6015: 6010: 6009: 6004: 6002: 5999: 5996: 5993: 5987: 5984: 5982: 5979: 5977: 5974: 5972: 5969: 5967: 5964: 5963: 5954: 5951: 5949:(Extended ML) 5948: 5945: 5942: 5939: 5937:(Caml, OCaml) 5936: 5933: 5930: 5927: 5924: 5921: 5918: 5915: 5913: 5909: 5906: 5904: 5900: 5895: 5884: 5881: 5880: 5870: 5867: 5864: 5861: 5859: 5858: 5854: 5852: 5849: 5846: 5843: 5838: 5835: 5834: 5832: 5829: 5826: 5823: 5822: 5820: 5818: 5813: 5809: 5804: 5801: 5798: 5795: 5792: 5789: 5786: 5783: 5780: 5777: 5774: 5771: 5768: 5765: 5762: 5759: 5756: 5753: 5751: 5748: 5745: 5742: 5740: 5738: 5734: 5727: 5724: 5722: 5719: 5717: 5714: 5711: 5708: 5707: 5697: 5694: 5693: 5691: 5689: 5688: 5683: 5676: 5673: 5670: 5667: 5665: 5662: 5660: 5659:Concurrent ML 5657: 5654: 5653: 5649: 5648: 5646: 5644: 5640: 5631: 5628: 5625: 5622: 5619: 5616: 5613: 5610: 5608: 5605: 5604: 5602: 5599: 5598: 5596: 5594: 5590: 5587: 5585: 5580: 5576: 5573: 5571: 5567: 5562: 5555: 5550: 5548: 5543: 5541: 5536: 5535: 5532: 5526: 5523: 5521: 5518: 5516: 5513: 5510: 5504: 5499: 5498: 5485: 5484: 5479: 5473: 5466: 5462: 5458: 5452: 5444: 5440: 5433: 5425: 5421: 5414: 5399: 5392: 5384: 5383: 5378: 5372: 5364: 5360: 5356: 5352: 5348: 5347: 5339: 5323: 5319: 5313: 5297: 5291: 5275: 5271: 5265: 5257: 5253: 5247: 5231: 5227: 5223: 5217: 5202: 5198: 5192: 5177: 5176: 5169: 5161: 5157: 5150: 5135: 5131: 5125: 5117: 5111: 5096: 5092: 5086: 5077: 5062: 5058: 5052: 5044: 5038: 5030: 5024: 5009: 5005: 4999: 4984: 4980: 4974: 4959: 4955: 4949: 4934: 4930: 4924: 4909: 4905: 4899: 4897: 4895: 4893: 4891: 4889: 4887: 4871: 4867: 4861: 4859: 4857: 4855: 4853: 4851: 4849: 4847: 4845: 4829: 4825: 4818: 4816: 4800: 4796: 4790: 4783: 4778: 4763: 4757: 4742: 4738: 4737:"Didier Remy" 4732: 4717: 4713: 4707: 4692: 4688: 4682: 4667: 4661: 4653: 4649: 4648:Leroy, Xavier 4643: 4628: 4622: 4618: 4607: 4603: 4599: 4596: 4593: 4589: 4586: 4583: 4579: 4576: 4573: 4569: 4566: 4563: 4559: 4556: 4555: 4554: 4543: 4540: 4536: 4533: 4529: 4526: 4523: 4519: 4515: 4511: 4508: 4504: 4501: 4498: 4495: 4492: 4489: 4486: 4483: 4480: 4477: 4474: 4470: 4466: 4463: 4460: 4456: 4453: 4450: 4446: 4443: 4440: 4436: 4432: 4428: 4424: 4420: 4417: 4414: 4411: 4407: 4404: 4400: 4396: 4393: 4390: 4387: 4384: 4381: 4378: 4375: 4372: 4369: 4365: 4361: 4357: 4353: 4350: 4346: 4337: 4333: 4329: 4326: 4323: 4320: 4317: 4314: 4310: 4307: 4304: 4300: 4296: 4292: 4289: 4286: 4283: 4280: 4277: 4274: 4271: 4268: 4267: 4258: 4254: 4250: 4246: 4243: 4240: 4237: 4234: 4230: 4227: 4226: 4220: 4126: 4089: 3950: 3925: 3920: 3917: 3913: 3717: 3715: 3711: 3707: 3703: 3699: 3695: 3692:The function 3595:" " 3420: 3418: 3414: 3410: 3282: 3280: 3276: 3272: 3262: 3255: 3249: 3243: 3237: 3216:postRedisplay 3006:load_identity 2898:double_buffer 2846: 2844: 2792:string_of_num 2785: 2664: 2603: 2600: 2598: 2549:"0" 2537:"S" 2371: 2367:"0" 2361:"S" 2327: 2317: 2313: 2128: 2126: 2007: 1889: 1887: 1849: 1847: 1808: 1806: 1712: 1710: 1709:fold function 1674:possibly . *) 1586: 1584: 1580: 1576: 1568: 1564: 1560: 1465:string_of_int 1428: 1426: 1354: 1344: 1326: 1309: 1303: 1297: 1288:print_endline 1284: 1276: 1274: 1271: 1242: 1225: 1223: 1222: 1209: 1198: 1195: 1191: 1188: 1184: 1181: 1177: 1174: 1170: 1167: –  1166: 1162: 1161:Find sources: 1155: 1151: 1147: 1141: 1140: 1139:single source 1135:This article 1133: 1129: 1124: 1123: 1118:Code examples 1115: 1113: 1112:multithreaded 1108: 1102: 1098: 1094: 1090: 1087: 1084: 1081: 1078: 1074: 1071: 1068: 1065: 1062: 1059: 1056: 1052: 1048: 1045: 1044: 1043: 1041: 1037: 1034: 1030: 1026: 1019: 1015: 1012: 1009: 1007: 1004: 1001: 998: 996: 992: 989:tools called 988: 984: 981: 980: 979: 976: 974: 970: 966: 962: 958: 954: 949: 947: 942: 940: 936: 932: 928: 924: 920: 916: 912: 908: 904: 901: 891: 887: 885: 881: 877: 873: 869: 858: 856: 851: 841: 839: 835: 825: 823: 819: 815: 811: 807: 803: 793: 789: 787: 783: 779: 775: 766: 764: 763: 758: 754: 749: 745: 741: 740:Luca Cardelli 737: 732: 730: 726: 722: 721:meta language 718: 714: 710: 706: 702: 698: 694: 681: 676: 667: 665: 661: 656: 652: 650: 646: 642: 638: 634: 630: 625: 623: 622:serialization 619: 613: 611: 607: 603: 599: 595: 591: 587: 582: 580: 576: 572: 568: 564: 560: 551: 549: 545: 541: 537: 534:. OCaml is a 533: 529: 525: 520: 518: 514: 510: 506: 502: 498: 494: 490: 486: 483: 479: 475: 470: 468: 464: 460: 456: 452: 448: 445: 441: 437: 433: 429: 428: 418: 391: 380: 376: 372: 371: 369: 366: 362: 358: 354: 350: 346: 342: 338: 334: 330: 325: 322: 318: 314: 310: 306: 302: 299:Influenced by 297: 293: 287: 283: 279: 277: 273: 270: 267: 265: 261: 258: 254: 250: 246: 242: 239: 237: 233: 230: 226: 222: 218: 214: 210: 207: 205: 201: 198: 194: 190: 187: 183: 179: 175: 172: 170: 166: 162: 148:/ 13 May 2024 146: 140: 138: 134: 130: 116: 112: 109: 106: 104: 100: 96: 92: 89: 87: 83: 80: 76: 73: 69: 66: 62: 58: 54: 50: 47: 45: 41: 37: 32: 26: 22: 6366:Generational 6356:Alphabetical 6352: 6332: 6157:Visual Basic 6047: 6037: 6027: 6017: 6005: 6000: 5997: 5947:Don Sannella 5941:Robin Milner 5935:Xavier Leroy 5855: 5803:SLAM project 5687:Dependent ML 5685: 5650: 5600: 5515:OCaml manual 5481: 5472: 5465:Docker, Inc. 5451: 5432: 5413: 5401:. Retrieved 5391: 5380: 5371: 5345: 5338: 5326:. Retrieved 5321: 5312: 5300:. Retrieved 5290: 5278:. Retrieved 5264: 5255: 5246: 5234:. Retrieved 5230:the original 5225: 5216: 5204:. Retrieved 5200: 5191: 5180:, retrieved 5174: 5168: 5159: 5149: 5137:. Retrieved 5133: 5124: 5110: 5098:. Retrieved 5094: 5085: 5076: 5064:. Retrieved 5060: 5051: 5037: 5023: 5011:. Retrieved 5007: 4998: 4986:. Retrieved 4982: 4973: 4961:. Retrieved 4957: 4948: 4936:. Retrieved 4932: 4923: 4911:. Retrieved 4908:v2.ocaml.org 4907: 4873:. Retrieved 4869: 4831:. Retrieved 4827: 4802:. Retrieved 4798: 4789: 4777: 4765:. Retrieved 4756: 4744:. Retrieved 4740: 4731: 4719:. Retrieved 4715: 4706: 4694:. Retrieved 4690: 4681: 4669:. Retrieved 4660: 4642: 4630:. Retrieved 4621: 4562:BuckleScript 4552: 4522:web browsers 4364:static types 4313:formal proof 4295:transforming 4218: 4124: 4081: 3921: 3916:machine code 3909: 3713: 3709: 3705: 3701: 3697: 3693: 3691: 3416: 3412: 3408: 3406: 3274: 3273:of a number 3268: 3259: 3257:$ ./simple 3253: 3247: 3241: 3235: 2925:createWindow 2840: 2783: 2650: 2601: 2594: 2340:and applies 2334:and a value 2309: 2122: 2005: 1883: 1843: 1802: 1706: 1574: 1566: 1562: 1556: 1547:"" 1480:"" 1422: 1332: 1324: 1317:Hello World! 1307: 1301: 1295: 1282: 1267: 1240: 1218: 1216: 1206:January 2024 1203: 1193: 1186: 1179: 1172: 1160: 1136: 1109: 1106: 1022: 994: 990: 977: 972: 950: 943: 897: 888: 864: 847: 831: 802:Xavier Leroy 799: 790: 786:Michel Mauny 772: 760: 747: 733: 697:Turing Award 693:Robin Milner 690: 660:immutability 655:Xavier Leroy 653: 626: 614: 583: 563:type systems 557: 527: 523: 522:The acronym 521: 471: 463:Xavier Leroy 431: 389: 388: 381:at Wikibooks 91:Xavier Leroy 25: 6361:Categorical 5929:Gérard Huet 5664:Extended ML 5643:Standard ML 5563:programming 5441:(Podcast). 5298:. OCaml.org 5236:10 February 5206:27 February 4938:16 December 4767:24 December 4716:www.irif.fr 4696:31 December 4632:22 February 4514:WebAssembly 4431:Objective-C 4358:created at 4299:source code 4120:>.)>. 4082:As soon as 3710:int->int 3171:displayFunc 3138:swapBuffers 1752:accumulator 1743:accumulator 1279:Hello World 903:type system 870:and adding 850:type system 834:native-code 808:written in 782:Pierre Weis 778:Gérard Huet 746:, used his 682:(POPL) 2024 586:type system 489:native code 478:interpreter 453:dialect of 430:, formerly 321:Standard ML 155:13 May 2024 142:5.2.0  6396:Categories 6226:JavaScript 6102:Comparison 5677:° (SML/NJ) 4613:References 4542:hypervisor 4445:Liquidsoap 4368:JavaScript 4291:Coccinelle 1803:Since the 1219:top-level 1176:newspapers 822:Caml Light 796:Caml Light 602:signatures 598:data types 575:imperative 571:functional 554:Philosophy 472:The OCaml 440:high-level 327:Influenced 186:structural 57:imperative 53:functional 6323:Smalltalk 5919:(Lazy ML) 5911:Designers 5903:Community 5837:HOL Light 5779:Marionnet 5160:okmij.org 5139:7 October 5095:ocaml.org 5013:7 October 4988:7 October 4963:7 October 4913:7 October 4875:6 October 4833:6 October 4804:6 October 4627:"Modules" 4584:in OCaml. 4572:XenServer 4530:(XCP), a 4459:unikernel 4416:HOL Light 4305:programs. 4253:toolchain 3906:MetaOCaml 3829:fourtimes 3759:fourtimes 3728:fourtimes 3254:and run: 3159:modelview 3090:triangles 2561:to_string 2513:to_string 2195:year_size 2177:year_size 2135:year_size 2086:partition 1974:partition 1886:quicksort 1880:Quicksort 1868:fold_left 1830:fold_left 1734:fold_left 1629:list . *) 1561:function 1559:recursive 1146:talk page 1089:DEC Alpha 1049:(AMD64), 1018:libraries 995:ocamlyacc 474:toolchain 280:.ml, .mli 225:ARM 32-64 103:Developer 44:Paradigms 6381:Category 6147:Assembly 6107:Timeline 5953:Don Syme 5845:Isabelle 5744:Alt-Ergo 5584:dialects 5570:Software 5459:(2016). 4650:(1996). 4582:ReasonML 4578:Facebook 4518:bytecode 4465:MLdonkey 4455:MirageOS 4360:Facebook 4354:Flow, a 4285:Be Sport 4273:Alt-Ergo 4257:Facebook 3228:mainLoop 3195:idleFunc 2663: : 2352:exactly 2023:function 1905:function 1839:integers 1818:integers 1767:integers 1722:integers 1611:integers 1599:integers 1567:integers 1341:type in 1315:./hello 1011:Profiler 1000:Debugger 991:ocamllex 923:closures 894:Features 729:compiler 723:for his 639:employs 495:, and a 493:debugger 485:compiler 482:bytecode 313:Modula-3 269:LGPLv2.1 204:Platform 174:Inferred 6334:more... 6313:Scratch 6216:Haskell 6206:Fortran 6162:classic 6112:History 5998:Italics 5925:(OCaml) 5883:GeneWeb 5797:Semgrep 5767:Frama-C 5721:MacroML 5716:Lazy ML 5710:Futhark 5486:. 2023. 5385:. 2023. 5045:. 2023. 5031:. 2023. 4746:14 June 4721:14 June 4606:Windows 4532:turnkey 4439:Android 4392:GeneWeb 4386:Frama-C 4374:Ocsigen 4332:library 4044:.<.~ 3665:add_str 3622:inc_str 3610:add_str 3562:inc_str 3388:fib_aux 3349:fib_aux 3304:fib_aux 3111:vertex2 2988:GlClear 2628:require 2089:is_less 2056:(>=) 2050:is_less 1977:is_less 1932:is_less 1526:extract 1493:extract 1435:extract 1343:Haskell 1273:integer 1190:scholar 1165:"OCaml" 987:parsing 969:Fortran 957:linking 670:History 649:closure 590:runtime 434:) is a 285:Website 264:License 257:Windows 195:OCaml, 153: ( 122: ( 61:modular 6353:Lists: 6288:Python 6283:Prolog 6261:Pascal 6251:MATLAB 6236:Kotlin 6196:Erlang 6135:Simula 5931:(Caml) 5863:Matita 5791:Poplog 5755:Camlp4 5750:Astrée 5630:Reason 5624:JoCaml 5483:GitHub 5382:GitHub 5328:21 May 5302:14 May 5280:14 May 5182:5 July 5100:17 May 5061:GitHub 5004:"Home" 4671:24 May 4598:Docker 4503:Unison 4429:, and 4341:genfft 4279:Astrée 4249:syntax 4245:Reason 4239:JoCaml 4077:)>. 3681:string 3583:string 3574:string 3183:render 3117:GlDraw 3105:GlDraw 3084:begins 3078:GlDraw 3021:rotate 2979:render 2913:ignore 2859:ignore 2843:OpenGL 2819:string 2273:people 2249:people 2243:" 2234:printf 2228:Printf 2186:people 2159:people 1583:switch 1541:string 1514:string 1425:string 1412:option 1379:option 1335:option 1329:Option 1231:ocaml 1192:  1185:  1178:  1171:  1163:  1053:, and 1051:RISC-V 1047:X86-64 1031:, and 965:arrays 900:static 645:boxing 577:, and 317:Pascal 229:RISC-V 213:x86-64 182:strong 178:static 71:Family 6328:Swift 6318:Shell 6231:Julia 6201:Forth 6191:COBOL 6152:BASIC 6130:ALGOL 5869:Twelf 5785:MTASC 5669:MLton 5652:Alice 5601:OCaml 5403:2 May 5256:Infer 5066:2 May 4933:OCaml 4602:macOS 4549:Users 4497:Tezos 4441:apps. 4425:, C, 4231:is a 4136:-> 4114:.< 4108:power 4102:-> 4093:.< 4056:power 4017:power 3993:>. 3987:.< 3960:power 3931:-> 3851:-> 3798:' 3795:-> 3789:' 3786:-> 3777:' 3774:-> 3768:' 3743:twice 3740:twice 3714:twice 3694:twice 3616:twice 3550:twice 3481:-> 3472:' 3448:' 3445:-> 3439:' 3427:twice 3409:twice 3346:-> 3334:-> 3319:match 3147:GlMat 3036:angle 3027:angle 3015:GlMat 3000:GlMat 2994:clear 2946:angle 2931:title 2758:-> 2534:-> 2324:is a 2183:float 2113:right 2110:qsort 2098:qsort 2074:right 2059:pivot 2044:-> 2035:pivot 2029:-> 2017:qsort 2001:right 1998:qsort 1986:qsort 1962:right 1947:pivot 1926:-> 1917:pivot 1911:-> 1899:qsort 1749:-> 1647:first 1644:-> 1635:first 1620:-> 1608:match 1575:match 1477:-> 1462:-> 1444:match 1406:' 1339:Maybe 1197:JSTOR 1183:books 1083:SPARC 1073:IA-32 1067:Power 1061:IBM Z 1055:ARM64 1036:macOS 1033:Apple 736:INRIA 717:proof 548:Scala 457:with 390:OCaml 365:Scala 290:ocaml 253:macOS 245:Linux 221:SPARC 217:Power 209:IA-32 108:Inria 29:OCaml 6303:Rust 6298:Ruby 6273:Perl 6241:Lisp 6221:Java 6167:.NET 6019:Book 6006:° = 5955:(F#) 5943:(ML) 5851:LEGO 5773:Haxe 5761:FFTW 5593:Caml 5405:2015 5330:2017 5304:2021 5282:2021 5238:2019 5226:Flow 5208:2018 5184:2024 5141:2022 5102:2021 5068:2015 5015:2022 4990:2022 4965:2022 4940:2022 4915:2022 4877:2022 4835:2022 4806:2022 4769:2016 4748:2024 4723:2024 4698:2023 4673:2024 4634:2020 4604:and 4590:, a 4505:, a 4491:Rust 4467:, a 4457:, a 4447:, a 4437:and 4423:Java 4410:Haxe 4408:The 4399:Hack 4397:The 4366:for 4330:, a 4328:FFTW 4311:, a 4297:the 4251:and 4233:.NET 4041:else 4008:then 4002:even 3996:else 3984:then 3873:add4 3866:> 3860:< 3842:add4 3823:add4 3813:> 3807:< 3636:add2 3544:add2 3325:with 3222:Glut 3210:Glut 3207:Some 3189:Glut 3165:Glut 3153:mode 3132:Glut 3123:ends 3102:iter 3096:List 3048:time 2919:Glut 2904:true 2886:Glut 2880:argv 2871:init 2865:Glut 2810:));; 2798:fact 2779:> 2773:< 2743:fact 2719:fact 2710:else 2701:then 2677:fact 2659:and 2640:open 2573:succ 2462:zero 2459:succ 2453:succ 2441:zero 2438:succ 2396:succ 2378:zero 2267:prob 2261:else 2225:then 2213:< 2210:prob 2201:prob 2168:prob 2156:prob 2101:left 2092:rest 2080:List 2068:left 2041:rest 1989:left 1980:rest 1968:List 1956:left 1944:< 1923:rest 1862:List 1824:List 1728:List 1656:rest 1641:rest 1614:with 1529:None 1499:Some 1474:None 1456:Some 1450:with 1418:None 1394:None 1385:Some 1361:Some 1351:None 1347:Some 1333:The 1221:REPL 1169:news 1101:MIPS 1099:and 1097:IA64 1093:HPPA 1075:and 1025:Unix 993:and 985:and 973:main 955:for 882:and 874:via 855:Java 784:and 774:Caml 713:Lisp 647:and 608:and 606:Java 565:and 546:and 524:CAML 507:and 480:, a 451:Caml 361:Rust 353:Haxe 309:Caml 292:.org 249:Unix 124:1996 117:1996 79:Caml 6308:SQL 6278:PHP 6246:Lua 6181:C++ 6142:APL 6125:Ada 5831:HOL 5825:Coq 5696:ATS 5607:Eff 5424:ACM 5359:doi 4539:Xen 4479:Opa 4435:iOS 4427:C++ 4403:PHP 4309:Coq 4301:of 4211:y_3 4205:y_3 4193:y_2 4187:y_2 4169:x_1 4160:y_2 4157:let 4151:y_3 4148:let 4142:x_1 4133:x_1 4130:fun 4105:.~( 4096:fun 4053:.~( 4011:sqr 3957:rec 3954:let 3895:102 3889:int 3863:fun 3854:int 3848:int 3839:val 3832:inc 3820:let 3810:fun 3756:val 3725:let 3658:100 3652:int 3625:);; 3607:let 3559:let 3553:inc 3541:let 3523:int 3514:int 3502:inc 3499:let 3496:);; 3460:fun 3424:let 3301:rec 3298:let 3289:fib 3286:let 3042:Sys 2976:let 2943:let 2874:Sys 2850:let 2807:120 2804:Int 2776:fun 2767:num 2761:Num 2755:num 2749:Num 2740:val 2737:);; 2731:Int 2704:Int 2695:Int 2674:rec 2671:let 2643:Num 2613:use 2582:two 2576:two 2567:add 2552:let 2528:fun 2510:let 2471:add 2468:let 2447:two 2444:let 2432:one 2429:let 2393:let 2375:let 2346:to 2314:of 2165:let 2150:rec 2147:let 2141:365 2132:let 2065:let 2047:let 2014:rec 2011:let 1953:let 1929:let 1896:rec 1893:let 1871:(+) 1856:sum 1853:let 1833:(+) 1815:sum 1812:let 1792:int 1780:sum 1740:fun 1719:sum 1716:let 1696:int 1684:sum 1653:sum 1596:sum 1593:rec 1590:let 1581:'s 1571:rec 1563:sum 1505:);; 1432:let 1376:int 1313:$ 1229:$ 1152:by 1077:ARM 959:to 838:C++ 703:'s 666:). 427:-əl 425:KAM 423:oh- 357:Opa 341:Elm 337:Coq 333:ATS 6398:: 6256:ML 6211:Go 6186:C# 5833:° 5726:Ur 5618:F# 5612:F* 5603:° 5561:ML 5480:. 5463:. 5422:. 5379:. 5357:. 5353:. 5349:. 5320:. 5272:. 5254:. 5224:. 5199:. 5158:. 5132:. 5093:. 5059:. 5006:. 4981:. 4956:. 4931:. 4906:. 4885:^ 4868:. 4843:^ 4826:. 4814:^ 4797:. 4739:. 4714:. 4689:. 4322:F* 4229:F# 4214:)) 4199:in 4181:in 4050:*. 3999:if 3972:if 3879:;; 3876:98 3835:;; 3752:;; 3706:'a 3698:'a 3671:;; 3642:;; 3639:98 3604:;; 3556:;; 3538:;; 3385:in 3231:() 3219:); 3204::( 3201:cb 3177:cb 3144:in 3141:() 3126:() 3072:() 3054:)) 3051:() 3009:() 2982:() 2973:in 2967:*. 2961:*. 2955:10 2940:); 2907:() 2883:); 2853:() 2845:: 2728:-/ 2716:*/ 2692:=/ 2686:if 2661:-/ 2657:*/ 2655:, 2653:=/ 2646:;; 2634:;; 2619:;; 2498:n2 2489:n1 2477:n2 2474:n1 2370:. 2285:;; 2240:\n 2207:if 2204:in 2198:*. 2192:/. 2180:-. 2095:in 2062:in 2038::: 1983:in 1950:in 1920::: 1848:: 1798:15 1783:;; 1770:;; 1702:15 1687:;; 1659:;; 1638::: 1532:;; 1502:42 1483:;; 1397:;; 1388:42 1367:;; 1364:42 1320:$ 1260:;; 1246:# 1095:, 1091:, 1027:, 951:A 941:. 933:, 929:, 925:, 917:, 913:, 909:, 905:, 610:C# 573:, 559:ML 550:. 544:F# 515:, 455:ML 442:, 438:, 414:əl 399:oʊ 363:, 359:, 355:, 351:, 349:F* 347:, 345:F# 343:, 339:, 335:, 319:, 315:, 311:, 307:, 255:, 251:, 247:, 243:: 236:OS 227:, 223:, 219:, 215:, 211:, 184:, 180:, 176:, 77:: 75:ML 63:, 59:, 55:, 51:: 6293:R 6176:C 6083:e 6076:t 6069:v 5885:° 5871:° 5865:° 5847:° 5839:° 5827:° 5814:, 5799:° 5793:° 5787:° 5781:° 5775:° 5769:° 5763:° 5757:° 5746:° 5728:° 5712:° 5698:° 5671:° 5655:° 5632:° 5626:° 5620:° 5614:° 5581:, 5553:e 5546:t 5539:v 5445:. 5407:. 5365:. 5361:: 5332:. 5306:. 5258:. 5240:. 5210:. 5162:. 5143:. 5118:. 5104:. 5070:. 5017:. 4992:. 4967:. 4942:. 4917:. 4879:. 4837:. 4808:. 4784:. 4771:. 4750:. 4725:. 4700:. 4675:. 4636:. 4608:. 4544:. 4524:. 4475:. 4370:. 4351:. 4344:. 4303:C 4208:* 4202:( 4196:) 4190:* 4184:( 4178:) 4175:1 4172:* 4166:( 4163:= 4154:= 4145:* 4139:( 4117:x 4111:5 4099:x 4085:n 4074:x 4071:) 4068:1 4065:- 4062:n 4059:( 4047:x 4038:) 4035:x 4032:) 4029:2 4026:/ 4023:n 4020:( 4014:( 4005:n 3990:1 3981:0 3978:= 3975:n 3969:= 3966:x 3963:n 3946:n 3940:n 3937:^ 3934:x 3928:x 3892:= 3886:: 3883:- 3870:# 3857:= 3845:: 3826:= 3817:# 3804:= 3801:a 3792:a 3783:) 3780:a 3771:a 3765:( 3762:: 3749:f 3746:) 3737:( 3734:= 3731:f 3722:# 3702:f 3684:= 3678:: 3675:- 3662:# 3655:= 3649:: 3646:- 3633:# 3619:( 3613:= 3601:x 3598:^ 3592:^ 3589:x 3586:= 3580:: 3577:) 3571:: 3568:x 3565:( 3547:= 3535:1 3532:+ 3529:x 3526:= 3520:: 3517:) 3511:: 3508:x 3505:( 3493:x 3490:f 3487:( 3484:f 3478:) 3475:a 3469:: 3466:x 3463:( 3457:= 3454:) 3451:a 3442:a 3436:: 3433:f 3430:( 3417:f 3413:f 3397:1 3394:0 3391:n 3382:) 3379:b 3376:+ 3373:a 3370:( 3367:b 3364:) 3361:1 3358:- 3355:m 3352:( 3343:_ 3340:| 3337:a 3331:0 3328:| 3322:m 3316:= 3313:b 3310:a 3307:m 3295:= 3292:n 3275:n 3225:. 3213:. 3198:~ 3192:. 3186:; 3180:: 3174:~ 3168:. 3162:; 3156:` 3150:. 3135:. 3129:; 3120:. 3114:; 3108:. 3099:. 3093:; 3087:` 3081:. 3075:; 3069:. 3066:1 3063:: 3060:z 3057:~ 3045:. 3039:( 3033:( 3030:: 3024:~ 3018:. 3012:; 3003:. 2997:; 2991:. 2985:= 2970:t 2964:t 2958:. 2952:= 2949:t 2934:: 2928:~ 2922:. 2916:( 2910:; 2901:: 2895:~ 2889:. 2877:. 2868:. 2862:( 2856:= 2822:= 2816:: 2813:- 2801:( 2795:( 2789:# 2770:= 2764:. 2752:. 2746:: 2734:1 2725:n 2722:( 2713:n 2707:1 2698:0 2689:n 2683:= 2680:n 2668:# 2637:# 2625:# 2622:# 2610:# 2607:# 2585:) 2579:) 2570:( 2564:( 2558:= 2555:_ 2546:) 2543:k 2540:^ 2531:k 2525:( 2522:n 2519:= 2516:n 2507:) 2504:x 2501:f 2495:( 2492:f 2486:= 2483:x 2480:f 2465:) 2456:( 2450:= 2435:= 2426:) 2423:x 2420:f 2417:n 2414:( 2411:f 2408:= 2405:x 2402:f 2399:n 2390:x 2387:= 2384:x 2381:f 2355:n 2349:x 2343:f 2337:x 2331:f 2321:n 2300:1 2297:0 2294:. 2291:1 2282:) 2279:1 2276:+ 2270:( 2258:) 2255:1 2252:+ 2246:( 2231:. 2222:5 2219:. 2216:0 2189:) 2174:( 2171:= 2162:= 2144:. 2138:= 2107:@ 2104:@ 2083:. 2077:= 2071:, 2053:= 2032:| 2026:| 2020:= 1995:@ 1992:@ 1971:. 1965:= 1959:, 1941:x 1938:= 1935:x 1914:| 1908:| 1902:= 1874:0 1865:. 1859:= 1836:0 1827:. 1821:= 1795:= 1789:: 1786:- 1777:# 1764:0 1761:) 1758:x 1755:+ 1746:x 1737:( 1731:. 1725:= 1699:= 1693:: 1690:- 1681:# 1650:+ 1632:| 1623:0 1617:| 1602:= 1579:C 1544:= 1538:: 1535:- 1523:# 1517:= 1511:: 1508:- 1496:( 1490:# 1471:| 1468:i 1459:i 1453:| 1447:o 1441:= 1438:o 1415:= 1409:a 1403:: 1400:- 1391:# 1382:= 1373:: 1370:- 1358:# 1257:3 1255:* 1253:2 1251:+ 1249:1 1236:# 1208:) 1204:( 1194:· 1187:· 1180:· 1173:· 1156:. 1142:. 961:C 810:C 417:/ 411:m 408:æ 405:k 402:ˈ 396:/ 392:( 305:C 197:C 157:) 126:) 23:.

Index

occam (programming language)

Paradigms
Multi-paradigm
functional
imperative
modular
object-oriented
ML
Caml
Designed by
Xavier Leroy
Damien Doligez
Developer
Inria
Stable release
Edit this on Wikidata
Typing discipline
Inferred
static
strong
structural
C
Platform
IA-32
x86-64
Power
SPARC
ARM 32-64
RISC-V

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