Using understanding and unraveling the ocaml language (chapter from applied semantics,lncs 2395) 2002

124 37 0
Using understanding and unraveling the ocaml language (chapter from  applied semantics,lncs 2395) 2002

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Using, Understanding, and Unraveling the OCaml Language From Practice to Theory and Vice Versa Didier R´emy INRIA-Rocquencourt http://cristal.inria.fr/∼remy Abstract These course notes are addressed to a wide audience of people interested in modern programming languages in general, ML-like languages in particular, or simply in OCaml, whether they are programmers or language designers, beginners or knowledgeable readers —little prerequiresite is actually assumed They provide a formal description of the operational semantics (evaluation) and statics semantics (type checking) of core ML and of several extensions starting from small variations on the core language to end up with the OCaml language —one of the most popular incarnation of ML— including its object-oriented layer The tight connection between theory and practice is a constant goal: formal definitions are often accompanied by OCaml programs: an interpreter for the operational semantics and an algorithm for type reconstruction are included Conversely, some practical programming situations taken from modular or object-oriented programming patterns are considered, compared with one another, and explained in terms of typechecking problems Many exercises with different level of difficulties are proposed all along the way, so that the reader can continuously checks his understanding and trains his skills manipulating the new concepts; soon, he will feel invited to select more advanced exercises and pursue the exploration deeper so as to reach a stage where he can be left on his own G Barthe et al (Eds.): Applied Semantics, LNCS 2395, pp 413–536, 2002 c Springer-Verlag Berlin Heidelberg 2002 414 Didier R´emy Table of Contents Introduction 417 Core ML 421 2.1 2.2 2.3 Discovering Core ML The Syntax of Core ML The Dynamic Semantics of Core ML 2.3.1 Reduction Semantics 2.3.2 Properties of the Reduction 2.3.3 Big-Step Operational Semantics The Static Semantics of Core ML 2.4.1 Types and Programs 2.4.2 Type Inference 2.4.3 Unification for Simple Types 2.4.4 Polymorphism Recursion 2.5.1 Fix-Point Combinator 2.5.2 Recursive Types 2.5.3 Type Inference v.s Type Checking 2.4 2.5 421 423 424 425 431 434 437 437 439 442 446 449 449 451 452 The Core of OCaml 454 3.1 3.3 Data Types and Pattern Matching 3.1.1 Examples in OCaml 3.1.2 Formalization of Superficial Pattern Matching 3.1.3 Recursive Datatype Definitions 3.1.4 Type Abbreviations 3.1.5 Record Types Mutable Storage and Side Effects 3.2.1 Formalization of the Store 3.2.2 Type Soundness 3.2.3 Store and Polymorphism 3.2.4 Multiple-Field Mutable Records Exceptions The Object Layer 465 4.1 Discovering Objects and Classes 4.1.1 Basic Examples 4.1.2 Polymorphism, Subtyping, and Parametric Classes Understanding Objects and Classes 4.2.1 Type-Checking Objects 4.2.2 Typing Classes Advanced Uses of Objects 3.2 4.2 4.3 454 454 455 456 457 458 459 459 461 462 462 462 465 465 468 472 474 478 482 Using, Understanding, and Unraveling the OCaml Language 415 The Module Language 487 5.1 5.2 5.3 Using Modules 5.1.1 Basic Modules 5.1.2 Parameterized Modules Understanding Modules Advanced Uses of Modules Mixing Modules and Objects 495 6.1 6.2 Overlapping Combining Modules and Classes 6.2.1 Classes as Module Components 6.2.2 Classes as Pre-modules 487 487 491 491 491 495 496 497 498 Further Reading 503 A First Steps in OCaml 505 B Variant Types and Labeled Arguments 510 B.1 B.2 B.3 Variant Types 510 Labeled Arguments 512 Optional Arguments 513 C Answers to Exercises 515 References 530 List of All Exercises 534 416 Didier Remy ẵ ấể ẹễ ệìỉ ìỉ ễì ề ầ ẹé ắ ểệ ẻ ệ é ềỉì é ề ệ ẹ ềỉì ẹễé ẹ ềạ ỉ ỉ ểề ềểỉ ì ầ ểệ ể ầ Ø× º ÅĨ ÙÐ × º ÅĨ ÙÐ × Ä ề ể ệệểì ệểẹ ìỉệểề éí ậểẹ ò Ê Ơ Ừ Ĩ × Ư Ø Ị ÙÐ Ư ềể ề ể ỉì ỉể ễ ề ì ểề ề ể ềể ì ò ầ é ềể ẹé Ơ Ý× × ÐÝ Ơ Ị × ĨỊ ×ĨĐ Ð ề ỉì ệ ệểììạì ỉ ểề ỉểễ ì ễ ệỉ Ĩ Using, Understanding, and Unraveling the OCaml Language 417 ÁỊØƯĨ ỉ ểề ầ ẹé ì é ề ể Ø ÅÄ Đ ÐÝ Ø Ø Ị Ư Ø× ÐĨØ ƯĨĐ × Ú Ư Ð × Ĩ Ư × Ư ề ỉíễ ỉ ểệíá é ề ì ềá ề ĐƠÐ Đ ỊØ Ø ĨỊ Ĩ ÙỊ Ø ĨỊ Ð é ề ì ểệ ể ệá ỉ é ề ì ế ỉ ẹ ỉệ ỉì ểẹễ é ệ ễệể ì ặ ềỉ ể ề ểẹ ì Û Ø Ð Ư × Ø Ĩ Ị Ư Ð ễệễểì ì éé ì ểẹ ềạìễ é ệ ệ ì è ìá ầ ẹé ì ééạì ỉ ểệ ỉ ề ề ẹ ễệể ỉìá ề ì ì ẹéỉ ề ểìéí ì ề ỉ ề ìỉệíá ề ễ ệỉ é ệ ề ì ệ é ạỉ ìể ØÛ Ư ĨĐƠ Ị ׺ Ì × Ĩ ÙĐ ỊØ × ĐÙÐØ ¹ Đ Ị× ĨỊ Ð ƠƯ × ỊØ Ø ĨỊ Ĩ Ø Ç ĐÐ Ð Ị Ù Ø Ø ĨĐ Ị × Ị Ị ĨƯĐ Ð Ị ỊØÙ Ø Ú ƠƠƯĨ ØĨ Ø Ð Ị Ù Û Ø ệ ểệểì ơề ỉ ểề ề ểệẹ é ì ẹ ỊØ × Ĩ Ð Ư ×Ù × Ø Ĩ Ø Ð Ị Ù ¸ Ị ÐÙ Ị Åĺ ÐÐ ÐĨỊ ỉ ì ễệ ì ềỉ ỉ ểềá ĩễé ề ỉ ề ệéí ề ì ề ễệ ề ễé ìá Ð Ø Ø ỊÙĐ ƯĨÙ× ỊØ Ư Ø ĨỊ× ØÛ Ị Ú Ư ĨÙ× Ø× Ĩ Ø Ð Ị Ù ề ẹễ ì ị ỉ éểì ệ é ỉ ĨỊ× Ơ ØÛ Ị Ø ĨƯÝ Ị ƠƯ Ø º ề ỉ ểệí ề ễệ ỉ ì ểé ể Ø Ị ƯĨ×× Ø Ư Ơ Ø ×º ËĨĐ Ø ẹ ìá ỉ ỉ ểệí ì é ệ ỉ éí Û Ị ØĨ Ơ Ø ƠƯ Ø × ĐƠÐ º ểề ệì éíá ì ệ é ệéỉ ỉệ ì ẹ í ì ìỉ ề ệ é ị ỉ ểề ề ẹ ệ é ề ỉể ẹểệ ĩễệ ìì Ú Ị Ư ÙÐ Ư × Ịº Ï ĨƠ Ø Ø Ø Ư Ư Û ÐÐ ĨÐÐĨÛ Ù× Ị Ø × ØØ ĐỜ Ĩ ỚØØ Ị Ð ØØÐ Ø ĨƯÝ ềỉể ễệ ỉ ểệá ểề ệì éíá ể ệ Ð Ị Ø× Ĩ Ø ĨƯÝ ƯĨĐ ƠƯ Ø Ð ĩ ẹễé ì ề ềỉ ỉ ểềì ể ệá Û Đ ỊØ Ị Ø Ø Ø ÙỊ ƯÐÝ Ị Đ Ø Đ Ø × × ĨÙÐ ÐÛ Ý× Ư Đ Ị × ĐƠÐ º Ì ỊØƯĨ×Ơ Ø ĨỊ Ĩ Ç ĐÐ × Đ Ú Ị ĐĨƯ Đ Ị Ị ÙÐ Ý Ø ØØ Ø Ø Ð Ị Ù × ểểỉạìỉệ ễễ ỉ ỉ ìá ỉì ểẹễ é ỉ ểề ề ì ệ ỉỉ ề ề ầ ẹé ỉì é ề ểềéí ễ ệỉì ể ỉ ệềỉ ẹ ệ ệ ỉỉ ề ề ề ìểẹ ể ỉ ẹễé ẹ ềỉ ỉ ểề ềểỉ ìá Ị Ơ Ừ ÙÐ Ư Ø Ĩ× ĨỊ ØÝƠ Ị ¸ ĨÙÐ × Ð ÙƠ ØĨ ØÙ ÐÐÝ Ú ƯÝ éểì ỉể ỉ ỉíễ ệ ể ầ ẹé ỉì é º Ì Đ Ø Ư Ð ƠƯ × ỊØ Ư × Ú ỊØĨ Ø Ư Ø ĨƯ ׺ ÇỊ Ø ễệ ỉ é ì ỉ ểệì ểềỉ ềì × ĨỪ ƠƯ × ỊØ Ø ĨỊ Ĩ Ç Đк ÐØ ĨÙ Ø × ƠƯ × ỊØ Ø ĨỊ × ỊĨØ Ø ÐÐ Ü Ù×Ø Ú Ị Ừ ỊÐÝ ỊĨØ Ư Ư Ị Đ ỊÙ Ð ĨƯ Ø Ð Ị ỉ ì ì é ểềỉ ề ềỉệể Ù Ø ĨỊ ØĨ Ø Ð Ị Ù ÐÐ Ø× ể ỉ éề ệ ể ệ ể ệá ẹểìỉ Ĩ Ø Ø Ð× Ư ĨĐ ØØ º × ĐƠÐ Ĩ ƠƯĨ Ư ĐĐ Ị Ü Ư × × Û ỉ ô ệ ềỉ é éì ể ặ éỉí ề ề é ề ểệ ẹểìỉ ể ỉ ẹá ìểéỉ ểềì ề ểề ề ễễ ề ĩ Ì ỊĨÛÐ Ị Ø ƠƯ Ø Ĩ Ø Ð ×Ø ĨỊ Ð Ø Ĩ ÅÄ Đ Ý ÐƠ ØØ Ị Ø ĐĨ×Ø ƯĨĐ Ø ĨØ Ư ×Ơ Ø׺ Ì × × ỊĨØ Đ Ị ØĨƯÝ Ø ĨÙ ¸ Ị ỊỊ ệì ề é ệề ỉ ệ ơệìỉ ìỉ ễì ề Ç ĐÐ Ý ×Ø Ừ Ị Û Ø ƠƠ Ị ĩ ểề ệì éíá ề ầ ẹé ễệể Ư ĐĐ Ư× Ị Ð ƯỊ ƯĨĐ Ø ỊÐ Ị Ç ĐÐ ĐƠÐ Đ ỊØ Ø ĨỊ× Ĩ ×ĨĐ Ĩ Ø Ð ĨƯ Ø Đ׺ ÁĐƠÐ Đ ỊØ Ø ĨỊ ềểỉ ì ề é íì ì ễễ ỉ é ìỉ ề ơệìỉ ệ ề ề ỉ ểệ ể ầ ẹé ì ềểỉ ẹ ìỉ ệ í ỉ ĨØ Ư Ơ Ừ× Ị Ú Ư Ơ Ị ĨỊ Ø Đº ÀĨÛ Ú Ư¸ Û Ð Ø ĐƠÐ Đ ỊØ Ø ĨỊ ỊĨØ × × Û ÐÐ × ×ĨĐ ĐĨƯ Ú Ị Ü Ư × × ỊÐ Ị Ị ỉ ỉ ĩỉ ỉể ẹễ ì ị ỉ éểì ề ×× Ĩ Ø ĐƠÐ Đ ỊØ Ø ĨỊ ØĨ Ø ểệẹ é ị ỉ ểề ểệ ể ệá ỉ ì Ơ ƯĐ Ø× ØĨ Ơ ĨƠÐ Û Ĩ ÐƯ Ý ỊĨÛ Ø 418 Didier R´emy Ç ĐÐ Ð Ị Ù ¸ ØĨ Ư ÐÐ Đ Ø Ư Ð ĨỊØ ỊÙĨÙ×Ðݸ Đ Ị Ø ÐØĨ Ø Ư ĐĨƯ Ú Ị ĨÙƯ× ầề ỉ ỉ ểệ ỉ é ì ỉ ẹ Ø Đ Ø × Ư Đ Ị Ư Ø Ư é ẹ ềỉ ệíá ểệẹ é ơề ỉ ểề ể é ệ ì ì ỉ ể ỉ ầ ẹé é ề ề é ề ỉì íề ẹ ề ìỉ ỉ ì ẹ ềỉ ìá ề ìểề Ị ×× Ư ×ÙÐØ× Ư Ð Ø Ị Ø Đº è ễệểể ìá ể ệá ệ ểẹ ỉỉ Ï Ð×Ĩ × Ư ØÝƠ Ị Ư Ị Ị Ø é ề ỉ ì ì ểề ể ỉ ẹểìỉ ×Ơ ¬ Ø× Ĩ Åĺ ÐĨØ Ĩ Ø Đ Ø Ư Ð ØÙ ÐÐÝ Ð × Ị ØÛ Ị Ø ĨƯÝ Ị ƠƯ Ø Û ỚØ Ị ĐƠ × × ểề ỉ ì ề ễệ ề ễé ìá ỉ ẹể ÙÐ Ư ØÝ Ĩ Ø Ð Ị Ù ĨỊ×ØỨ Ø× ´Ø Ư ƠƯ × ỊØ Ø ĨỊ × Ĩ Ø ề ề ệ ẹ ềỉ éàá ì éé ì Ø Ư Ơ Ị Ị ׺ ËĨĐ ĨỊ×ØỨ Ø ĨỊ× Ø Ø Ư Ø ĨƯ Ø ÐÐÝ Ị Ơ Ị ỊØ Ị ÙƠ Ị ĨĐƠÐ Đ ỊØ ƯÝ Ị ƠƯ ỉ ìể ỉ ỉ ểề ề ệ éí ể Û Ø ĨÙØ Ø ĨØ Ư Ø × Ĩ Ø Ị Ø Ư ĨĐ Ị Ø ĨỊ Ø Ø ƠƯĨÚ × ĨØ ­ Ü Ð ØÝ Ị ÜƠƯ ×× Ú ễể ệ è ể ẹ ềỉ ì ểệ ề ị Ị ĨÙƯ Ơ Ừ× ´× Ø ƯĨ Đ Ơ× Ị ệ ẵà ể ỉ ơệìỉ ỉ ệ ễ ệỉì ệ ìì ì ô ệ ềỉ é í ệ ể Ç ĐÐ Ø ĨƯ Ð Ị Ù ´× Ø ĨỊ× ắ ề àá ể ỉì ề é ìì ì ậ ỉ ểề àá ề ẹể é ì ậ ỉ ểề µ Ø Ð ×Ø Ơ Ừ ´Ë Ø ĨỊ µ Ĩ Ù× × ĨỊ Ø ĨĐ Ị Ø ĨỊ Ĩ ể ỉì ề ẹể é ìá ề ì ìì ì Û Ơ Ư×Ơ Ø Ú ×º Ì ×ØÝÐ Ĩ ƠƯ × ỊØ Ø ĨỊ × « Ư ỊØ ĨƯ Ơ Ừº Ï Ð Ø ỊØƯĨ Ù Ø ĨỊ Ĩ Ø ĨƯ Ð Ị Ù × ĐĨƯ ĨƯĐ Ð Ị ĐĨƯ ểẹạ ễé ỉ ỉ ẹễ ì ì ì ễỉ ĨỊ ØÝƠ Ị ĨƯ Ø × Ø ĨỊ ĨỊ Ĩ ỉì ề é ìì ìá ỉ ễệ ì ềỉ ỉ ĨỊ Ĩ Ø ĐĨ ÙÐ × ×Ý×Ø Đ Ư Đ ềì ề ểệẹ éá ề ỉ é ìỉ ễ ệỉ × ĐĨ×ØÐÝ × ĨỊ Ü ĐƠР׺ Ì × × Ð Ư Ø Ĩ ¸ Ù ØĨ Ø Ð Đ ỉ ìễ ỉ éìể ì ểề ỉ ệ é Ø Ú ĐƠĨỪ Ị Ĩ Ø « Ư ỊØ Ơ Ừ× Ị ỊØ Ư ×Ø Ĩ Ø Ư ĨƯĐ Ð Þ Ø ĨỊº Ï Ø Ị Ư Ư ØĨ ĨØ Ư ÛĨƯ × ĨƯ ĐĨƯ ĨƯĐ Ð ƠƯ × ỊØ Ø ĨỊ ĨƯ × ĐƠÐÝ ĨƯ ÙỪ Ư Ư Ị ¸ ĨØ Ø Ø Ị Ĩ × Ø ĨỊ ĨƯ Ư Ø Ư Ø Ị ¹ Ð Ư Ư Ị ׸ Ị Ø Ø Ị Ĩ Ø Đ ỊÙ× Ư ễỉá ẩ ẳ ểệ ẹểệ ề ệ é ể ệ Û Ĩ Ư Ð Ø ÛĨƯ º Ì × Ĩ ÙĐ ỊØ × Ø Ù× Ư ×× ØĨ Û Ù Ị º Ï Ø × Ú Ư Ð ỊØƯÝ ƠĨ ềỉìá ỉ ề ệ ề ễ ệỉì ểệ ểééể ề « Ư ỊØ Ư Ø ĨỊ× ´× Ø ƯĨ Đ ễì ề ệ ẵà ẩ ểễé ềỉ ệ ìỉ Ị Ø × Đ ỊØ × Ĩ ƠƯĨ Ư ĐĐ Ị Ð Ị Ù × Đ Ý Ư × Ø ểềì ắ ề ểềéí ểề ệì éíá ễ ểễé ềỉ ệ ìỉ ề ỉ ể ỉạểệ ềỉ é í ệ ể ầ ẹé ẹ í ì ễ ỉ ì × Ø ĨỊ× Ị ×Ø Ừ Ø Ë Ø ĨỊ º ỊỊ Ư× ĨƯ Ơ ĨƠÐ ỊØ Ư ×Ø ĐĨ×ØÐÝ Ị Ð ƯỊ Ị Ø ƠƯĨ Ư ĐĐ Ị Ð Ị Ù Đ Ý ×Ø Ừ Û Ø ƠƠ Ị ĩ ỉ ề ệ ĩ ẹễé ì ề ĩ ệ ì ì ề ỉ ơệìỉ ì ỉ ểềìá ề Ị Û Ø Ø × Ø ĨỊ× ĨỊ Ĩ Ø× Ị ĐĨ ÙÐ × Ø Ý Ị ÐÛ Ý× ĨĐ ỉể ỉ ơệìỉ ì ỉ ểềì ỉ ệ ẹ ìỉ ệ ề ễệể ệ ẹẹ ề ề ầ ẹéá ề ØØ Ø ĐƠÐ Đ Ị¹ Ø Ø ĨỊ Ĩ ØÝƠ ệ ì ễệể ỉá ỉ ệ ểééể ề ểệ ềểệ Ị Ø Ư Ð Ú ỊØ ĐƠÐ Đ ỊØ Ø ĨỊ ỊĨØ ×º ÈƯĨ Ư ĐĐ Ị Ð Ị Ù Ù × Ư Ư ĨƯĨÙ× ÙØ Ị ĨĐƠÐ Ø ƠƠƯĨÜ ẹ ỉ ểềì ể ỉ é ềạ ể ẹ ỉ Đ Ø ×º Ø Ý ÐÐĨÛ ØĨ ÛƯ Ø ÐÐ ƠƯĨƠ Ừ × Ĩ ƠƯĨ Ư Đ× ỊĨØ ÐÐ ÕÙ é ềỉá ì ề ề ệ é ễệễểì é Ị Ù × Ư ÌÙƯ Ị ĨĐƠÐ Ø º Ì ỉ ìá é ểệ ỉ ẹì è ìá ỉ ệẹ Ị Ø ĨỊ Ị Đ ỊÝ ĨØ Ư Ù× ÙÐ ệ ề é ể ệá ễệể ệ ẹẹ ề é ề ì ệ ỉ í ô ệ Ý Ø Ư Ð ØÝ ØĨ × Ư Ừ Ị Ị × Ĩ Using, Understanding, and Unraveling the OCaml Language 419 Ð ĨƯ Ø Đ× ×Ù Ị ØÐݺ Ì × Ð × ØĨ Ị Ị Ð ×× Ư × Ư ểệ ề ễệể ệ ẹạ ẹ ề ìỉệ ỉệ × Ø Ø Ư ĐĨƯ ÜƠƯ ×× Ú Ị ÐÐĨÛ × ĨỪ Ư Ị × Ư × Ư Ờ ĨỊ× ể é ểệ ỉ ẹì ầ ểệì ĩễệ ìì Ú Ị ×× × ỊĨØ Ø ÙÐØ Đ Ø Ĩ é ề ễ ệỉ é ệá ỉ ì ỉí ể ƠƯĨ Ư Đ Ü ÙØ ĨỊ × ĨÙÐ ỊĨØ Ú Ị ÙƠ ĨƯ ÜƠƯ ×× Ú Ị ×׺ Ï Ù×Ù ÐÐÝ Ð Đ Ø ĨÙƯ× ÐÚ × ØĨ Ư Ð Ø Ú ÐÝ ×Đ ÐÐ ×Ù × Ø Ĩ ƠƯĨ ệ ẹì ỉ ỉ ệ ééạ ỉíễ ề Ư ỊØ ØĨ ỨỊ × Ðݺ Ï Ð×Ĩ × Ư ểệ ìẹ éé ì ỉ ể ì ẹễé ìì ềỉ éá ề ểệỉ ể ểề é ểềìỉệ ỉì ƯỊ Ị ƠƯĨ Ư ĐĐ Ị Ð Ị Ù × Ä ƯỊ Ị ƠƯĨ Ư ĐĐ Ị Ð Ị Ù × ĨĐ¹ Ị Ø ĨỊ Ĩ ÙỊ Ư×Ø Ị Ị Ø Ð Ị Ù ĨỊ×ØỨ Ø× Ị ƠƯ Ø Ị º Ừ ỊÐݸ ƠƯĨ Ư ĐĐ Ị Ð Ị Ù × ĨÙÐ Ú Ð Ư × Đ ỊØ ×¸ Û ỉ ệ ỉ ì ề ểệạ ẹ ééíá º Ù× Ị Đ Ø Đ Ø Ð ỊĨØ Ø ểềá ì ểệ ậỉ ề ệ ểệ ề ểệẹ ééíá ì ề ểệ ìá ì ểệ ầ ẹé ÍỊ Ư×Ø Ị Ị Ø × Đ ỊØ × Ị × Ị ƠƯ Ị ƠР׸ × ƠƯ Ư ÕÙ × Ø ØĨ ĨĨ ƠƯĨ Ư ĐĐ Ị Ø׸ ÙØ ĨĨ ƠƯĨ Ư ĐĐ Ị × Ð×Ĩ Ø Ư ×ÙÐØ ể ễệ ỉ ề è ìá ì ề ỉ ẹ ề éá ỉ ỉỉểệ éìá ề ểềạé ề éễì × ỊĨƯĐ Ð ƠƯ Ø º ÇỊ Đ Ý ÕÙ ÐÝ Ð ƯỊ ÐÐ ÙỊ Ø ĨỊ× Ĩ Ø ĨƯ Ð Ư Ưݸ ÙØ Ú Ị ­Ù ỊØ ƠƯĨ Ư ĐĐ Ư× Đ Ý ×ĨĐ Ø Đ × Ú ØĨ ìễ ỉ ểềì ể ìểẹ ìỉ ề ệ ạé Ư ƯÝ ÙỊ Ø ĨỊ× Ø Ø Ư ỊĨØ ×Ĩ ệ ế ềỉéí ì ểễí ề ểể Ü ĐƠÐ × Đ Ý × Ú Ø Đ Ø ỊÝ ×Ø Ĩ ƠƯĨ Ư ĐĐ Ị º Ì × Ị ÐÙ × ÙØ Ị Ơ ×Ø ƯĨĐ ×ĨÐÙØ ĨỊ× ỉể ĩ ệ ì ìá ìễ ééí ỉ ỉ ềề Ị º Ë Ư Ị ÜƠ Ư Ị Û Ø ểỉ ệì ẹ í éìể éễ é ỉ ơệìỉ ễệể Ð Đ× ÝĨÙ Ư Ð ÐÝ ØĨ Ư ÕÙ ỊØÐÝ × ÉÙ ×Ø ĨỊ× Ị Ø Ð Ư Ư × ÝĨÙ Đ ×× Đ Ý ÐƯ Ý Ú Ð Ð Ð ØƯĨỊ ÐÐÝ Ị Ø Ç ĐÐ ÙĐƠ º ĨƯ ểể ì ểề ì ệỉ ệ ệ ề áẩ ẳ ệ ìỉểệí ể ầ ẹé è ệệ ềỉ ơề Ø ĨỊ Ị ĐƠÐ Đ ỊØ Ø ĨỊ Ĩ Ø Ç ĐÐ Ð Ị Ù × Ø Ư ×ÙÐØ Ĩ ĨỊØ ỊÙĨÙ× Ị ×Ø ÐÐ ĨỊ Ĩ Ị Ư × ệ ể ệ ỉ é ìỉ ỉể ì è ầ ĐÐ Ð Ị Ù ÐĨỊ × ØĨ Ø ÅÄ Đ Ðݺ Ì Ð Ị Ù ÅÄ Û × ỊÚ ỊØ ềẵ í ấể ề éề ệ ỉể ì ệ ì ẹ ỉ ạé ề ểềỉệểé Ð Ị Ù ĨƯ × Ư Ờ Ị Ð Ị ểệ ễệể ệ ẹẹ ề ễệểể ạì ệ ×ØƯ Ø × ỊØ Ä ƠƯĨĨ ×× ×Ø Ịغ Ì Ð Ị Ù ÕÙ ÐÝ ƠƠ Ư ØĨ ÙÐй­ ƠƯĨ ệ ẹẹ ề é ề è ơệìỉ ẹễé Đ ỊØ Ø ĨỊ× Ĩ ÅÄ Û Ư Ư Ð ị ệểề ẵ ẵ ề ìễ ậểểềá ì Ư Ð Ð Ø× Ĩ ÅÄ ƠƠ Ư ËØ Ị ệ ỉ ề ệ ẹé ỉ ặấ ậỉ ề ệ ể ặ ệì íá ịí éểễ ỉ éẹ ệìá ểệ ì ÐÐ Ø Ð × ĨÛº Ì ØÛĨ Ð ×Ø Ð ỉì ìé ỉéí ô ệ ệểẹ ỉ ễệ ểì ểề ì í ệ éí ề ểề é ịí ÐÙ Ø ĨỊ ×ØƯ Ø Ý ´Ø Ý Ư ÐÐ é ịí é ề ìà é éé ểỉ Ư× Ú ×ØƯ Ø Ú ÐÙ Ø ĨỊ ×ØƯ Ø Ý ´ Ị Ư ÐÐ ×ØƯ Ø Ð Ị Ù ìà èệ ỉ ểề é é ề ìá ×Ù × ¸ È × Ð¸ Ư Ð×Ĩ ×ØƯ Ø Ð Ị ٠׺ ËØ Ị Ư ÅÄ Ị ĐÐ Ư Ư Ð Ø Ú ÐÝ ÐĨ× ØĨ ĨỊ ỊĨØ ệ è ẹ ề ô ệ ề ì ệ ỉ Ư ĐƠÐ Đ ỊØ Ø ĨỊ× Ị Ø Ư ×ÙƠ ệơ é ìểẹ ỉ ẹ ì ềềểí ề ìíềỉ ỉ ô ệạ ề ì ềểỉ ệ ẹ ềểệ ô ệ Ị × Ø Ư ĐĨ ÙÐ ×Ý×Ø Đ׺ ÀĨÛ Ú ệá ậ ể ì ềểỉ ề ể ỉ é í ệ ểềỉ ề ề ỉ ìỉểệí ể ẹéá ệ ệểí ề ẹ ề ểé ị ì ề ề ẹễé ẹ ềỉ ỉ ểề ề ẵ ẳ éé ẹéạ ỉá ệ ề ỉ ễệ ểì ẹễé Đ Ị¹ Ø Ø ĨỊ ƯĨĐ ØĨĨ Đ ỊÝ ÜƠ ệ ẹ ềỉ é ạé é ỉệ ìá ề ẹểệ ẹễểệỉ ềỉéíá ệểẹ ỉ ểé ìễ Ị º 420 Didier R´emy Ì Ø ĨỊ Ĩ Ị Ø Ú ¹ Ĩ ĨĐƠ Ð Ư Ị ƠĨÛ Ư é ẹể é ìíìỉ ẹ ề ẵ ề ể ỉ ể ỉ ề é ìì é í ệ ề ẵ ẹ ầ ẹé ệí ẹ ỉệ ề ỉạ ỉệ Ø Ú ƠƯĨ Ư ĐĐ Ị Ð Ị Ù º Ì Ð Ị Ù × ×Ø ÐÐ ÙỊ Ư Ú éểễẹ ềỉ ểệ ềạ ìỉ ề ề ắẳẳẳá é Ð Ị ĨỜ ĨỊ Ð Ư ÙĐ ỊØ× ĨỊ Ø ĨỊ Ị Ị ỊĨỊÝĐĨÙ× Ú Ư ỊØ× ĨỊ Ø ĨØ Ư Ị Û Ư ØĨ Ø Ð Ị Ù Ý Â ÕÙ × ƯƯ Ù º ÁỊ Ø Ð ×Ø ¸ ĨØ Ư Ð Ø× Ĩ ÅÄ Ú Ð×Ĩ ÚĨÐÚ ề ễ ề ềỉéí ệ ỉ ệá ì Ø Ị Đ ÅÄ ØĨ Ư Ư ØĨ ØÙƯ × Ĩ Ø ĨƯ Ð Ị Ù Ø Ø Ư ĨĐĐĨỊ ỉể ẹểìỉ é ỉì ề ìễ ể ầ ẹéá ẹểìỉéí ề ỉ ĩ ẹễé ìá ỉể ệ ệ ỉể Ø × Ơ Ừ ÙÐ Ư ĐƠÐ Đ ỊØ Ø ểề ểìỉ ể ỉ ĩ ẹễé ìá ĩ ễỉ ỉ ểì ỉ ể ỉ ề é ìì ìá ểé × ÐÝ ØƯ Ị×Ð Ø ØĨ ËØ Ị Ư Åĺ ể ệá ểềéí ể ỉ ẹ ểé ìỉệ Ø ĨỬ Ư ÐÝ ØƯ Ị×Ð Ø ØĨ À × ééá ẹ ềéí ì ể ểỉ é ề ì ô ệ ềỉ é ỉ ểề ìỉệ ỉ íá ỉ éìể ỉể ẹ ềí ểỉ ệ ô Ư Ị × Ị Ø Ư × Ị׺ Ê × ẹ é ề ì ề ô ệ ề ì ề Û Ý ÛĨƯ × ÐÐ Ð Ø× Ĩ ÅÄ Ư ề ỉ ểề é è ỉ ìá ề ỉ ĨỊ× Ư Ø Ị × Ư ĨÙ×Ðݺ ÁỊ Ơ Ừ é ệá ỉ í ệ ơệìỉạ é ìì é × Ø Ý Ị Ư ÙĐ ỊØ× ØĨ ĨØ Ư ÙỊ Ø ĨỊ× Ị Ư ØÙƯỊ × Ư ×ÙÐØ׺ ÐÐ Ð Ø× Ĩ ÅÄ Ư Ð×Ĩ ×ØƯĨỊ ÐÝ ØÝƠ º è ì ẹễé ì ỉ ỉ ééạỉíễ ễệể ệ ẹì ềềểỉ ể ệểề í ỉ ìá ẹ Ị Ø Ø ××ÙĐ Ị ỊĨ ĨĐƠ Ð Ư ٠׸ ƠƯĨ Ư Đ× Û ÐÐ Ị Ú Ư Ü ÙØ ƯƯĨỊ ĨÙ× ×× ØĨ Đ ĐĨƯÝ ỊĨƯ ĨØ Ư ề ể ềểệẹ é ĩạ ỉ ểề ìỉ ễ ề ƠƯĨ Ư Đ× Ø Ø Ĩ ỊĨØ ÐĨĨƠ Û ÐÐ é íì ỉ ệẹ ề ỉ ềểệẹ ééí ầ ểệì ¸ Ø × Ĩ × ỊĨØ Ị×ÙƯ Ø Ø Ø ƠƯĨ Ư Đ Ü ÙØ × Û Ø Ø ƠƯĨ Ư ĐĐ Ư ỊĐỊ ỊĨØ Ư ĨĐĐĨỊ ƠƯĨƠ ỪÝ ØĨ ÐÐ Ð Ø× Ĩ ÅÄ × ØÝƠ Ị Ư Ị ¸ Ø Ø ×¸ ØÝƠ × Ĩ ÜƠƯ ×× ĨỊ× Ư ĨỜ ĨỊ Ð Ị Ư Ị ƯƯ Ý Ø ×Ý×Ø Đº × ĐĨ×Ø ĐĨ ƯỊ Ð Ị ٠׸ ì ỉểẹ ỉ ẹ ẹểệí ẹ ề ẹ ềỉá × Û Ðк Ø ĨỊ ÐÐݸ Ø Ð Ị Ù Ç ĐÐ × ỊĨØ ỚƯ ÐÝ ÙỊ Ø ĨỊ Ð ĐƠ Ư Ø Ú ƠƯĨ¹ Ư ĐĐ Ị Û Ø ẹỉ é é ì ề ì ô ỉì ì éìể ễểìì é ầ ẹé ì éìể ể ỉạểệ ềỉ ì ệểẹ ễệểỉểỉíễ ì ềìá ầ ẹé ì ×Ø ÐÐ Ø ĨỊÐÝ Ĩ ع ĨƯ ỊØ Ð Ø ể ầ ẹé éìể ỉệ ì ễể ệ é ĐĨ ÙÐ ×Ý×Ø Đ Ị×Ơ Ư Ý Ø ĨỊ Ĩ ËØ Ị Ư Åĺ ỊĨÛÐ Đ ỊØ× Å ỊÝ Ø ề ì ỉể ế ì ệệ ấể Ĩ« ĨƯ Ø Ư Ư ÙÐ Ư Ị Ĩ Ơ ệỉì ể ỉ ềểỉ ì ệ ệểíá ề Ö Ò Using, Understanding, and Unraveling the OCaml Language 421 ậ ỉ ểề ắ ểệ ẽ ơệìỉ ễệ ì ềỉ ĩ ẹễé ìá ềì ìỉ ề ểề ỉ ề ỉ ểề é ìễ ỉ ể ỉ é ềạ è ềá ểệẹ é ị ề ĩỉệ Đ ÐÝ ×Đ ÐÐ ×Ù × Ø Ĩ Ø Ð ề ìệễệ ì ề éíá ểềỉ Ị× Ị Ø× Ð Ø ×× Ị Ĩ Åĺ Ä ×ظ Û × ĨÛ ĨÛ ØĨ Ư Ú ĨØ Ư ĨỊ×ØỨ Ø× Ư Đ Ị Ị Ị ĨƯ ÅÄ Û ề ệ ễểìì é ểệ ẹ ề ìẹ éé ĩạ ỉ ềì ểềì ề ề ìì ệí ắẵ ì ể ệ ề ểệ ểệ ì ×Đ ÐÐ Ð Ị Ù º Ì × Đ Ị× Ø Ø ÙỊ Ø ĨỊ× Ư Ø Ị × Ư ểìéíá ỉ í ề ễ ìì ì ệ ẹ ềỉì ØĨ ĨØ Ư ÙỊ Ø ĨỊ× ĨƯ Ư ØÙƯỊ × Ư ×ÙÐØ׺ Ï Ð×Ĩ × Ý Ø Ø ÙỊ Ø ểềì ệ é ì ề ễệ ề ễé Ø ỊĨØ ĨỊ Ĩ ÙỊ Ø ĨỊ Ư Ð Ø × × ÐĨ× ÐÝ × ƠĨ×× Ð ØĨ Ø ĨỊ Ø Ø Ị ĨÙỊ Ị Đ Ø Đ Ø ×º ể ệá ỉ ệ ệ éìể ẹễểệỉ ềỉ ô ệ ề ìá ì ể ỉì ẹ ề ễé ỉ Ý ƠƯĨ Ư Đ× Ư ÐÛ Ý× ĨÙỊØ Ð ´ ề ơề ỉ ề ễệ ỉ ề ỉá ểệ ì ì ểề ỉ é ẹ é éìá Û × Ị ỊÚ ỊØ Ý ÙƯ ØĨ ĐĨ Ð ểẹễỉ ỉ ểề ậíềỉ ỉ ééíá ĩễệ ìì ểềì ể ỉ é ẹ é éì ệ ỉỉ ề ỉ é ỉỉ ệ ệ ể ỉ ệ ễểìì é ểệẹì ệ é ì ĩá ệ ề ì é ẹ ềỉì ể ểềỉ é ì ỉá ề ỉ ểềì ĩ ểệ ễễé ỉ ểềì ề ỉ ểềá ểệ ì ìỉ ề ì ĨỊ×ØỨ Ø ĨỊ Ü Ù× ØĨ Ị Ị ÜƠƯ ×× ĨỊ ØĨ Ú Ư Ð Ü Û Ø Ị Ị ÜƠƯ ×× ĨỊ ´Ø × ĨỊ×ØỨ Ø ĨỊ × Ð×Ĩ ì ỉể ềỉệể ễểéíẹểệễ ìẹá ì éé ì éểà ệỉ ệẹểệ ỉ é ề ĨĐ × Û Ø ƠƯ Đ Ø Ú Ú Ð٠׸ ×Ù × ỊØ Ư׸ ­Ĩ Ø׸ ×ØƯ Ị ׸ ´ÛƯ ØØ Ị Û Ø Ð ØØ Ư µ Ị ÙỊ Ø ĨỊ× ĨÚ Ư Ø × Ú Ð٠׺ ề ééíá ễệể ệ ẹ ì ểẹễểì ể ì ế Ị Ĩ × ỊØ Ị × Ø Ø Ị ĨỜ ĨỊ ÐÐÝ × Ơ Ư Ø Ý ĨÙ Ð × ẹ ểéểề ì ềỉ ề ì ì ề é ĩễệ ìì ểề ểệ ỉ ề ề ệ ỉỉ ề ĩ ể ề ĩễệ ìì ểề ỉể Ú Ư Рܺ ÁỊ ỊĨƯĐ Ð ĐĨ ¸ ƠƯĨ Ư Đ× Ị ÛƯ ØØ Ị Ị ĨỊ ĨƯ ĐĨƯ ơé ìá ì ễ ệ ỉ éí ểẹễ é Ị Ð Ị ØĨ Ø Ư ØĨ ĨƯĐ Ị Ü ỉ é ẹ ề ể ì ậ ỉ ểề ẵẵà ể ệá ề ỉ ểệ é ề ¸ Û Đ Ý ××ÙĐ Ø Ø ÐÐ × ỊØ Ị × Ư ÛƯ ØØ Ị Ị × Ị Ð ¬Ð ÙỪ ƯĐĨƯ ¸ Û Đ Ý Ư ƠÐ Ý Ị ØÙƯỊ Ị Ø × ÕÙ Ị Ĩ × ỊØ Ị × ỊØĨ × Ị Ð ÜƠƯ ×× ĨỊº Ì é ề ầ ẹé éìể ểô ệì ề ềỉ Ư Ø Ú ÐĨĨƠ Ị Û × ỊØ Ị × ỊØ Ư Ý Ø Ù× Ư Ư ĨĐƠ Ð Ị Ü ÙØ ĐĐ Ø ÐÝ Ø Ị¸ Ø Ư Ư ×ÙÐØ× Ư ƠƯ ỊØ ĨỊ Ø Ø ƯĐ Ị к ề ỉ ểề é ơệìỉạ é ìì ẵ é ỉ ẵ ề ắ ắ ẵ ắ ỉ é ỉ ặểỉ ẽ ì ềỉ ề ì ểềéí ì × Ư ×ƠÐ Ý Ø ỊØ Ư ÐĨ× Û Û Ø Ị Ù× Ø Ú ĐĨ ĨÙ Ð Ùк Ì ØĨ ÐÐÙ×ØƯ Ø ĐĨ×Ø Ĩ Ø Ü ĐƠР׺ Ì ì ẹ ểéểềì è ềá ỉ ìẹ éé Ư ĨỊØ ƠƠ Ư× Ị ĨÙØỚØ Ĩ Ø Ị ỊỚØ ỊØ ƯƠƯ Ø Ư ƠƯ Ý 422 Didier R´emy ĨÙ Ð Ú Ừ Ð Ư º ƯƯĨƯ Đ ×× × ẹ í ìểẹ ỉ ẹ ì ệ ểì Ø Ù× Û ÛĨỊ³Ø ØĨ Đ Ư Ị ỊỚØ × ỊØ Ị Ø Ø ÐÛ Ý× ×ƠÐ Ý Ø Đ ề éé ềìỉ ì éé ệ ỉ Ý Ø ĨĐƠ Ð Ưº ËĨĐ Ð Ư Ư Ü ẹễé ìá éé ẹễé ẹ ềỉ ỉ ểề ềểỉ ìá ệ éẹỉ í ểệ ịểềỉ é ệ ì ì ééìỉệ Ø Ư Ø ÐĨÛ Ê ÁĐƠÐ Đ ỊØ Ø ĨỊ ềểỉ ìá ơé ẹễé ẹ ềỉ ỉ ểề ềểỉ × Ư ÐĐØ × Ø × ĨỊ º Ì Ý ĨỊØ Ị ÜƠÐ Ị Ø ĨỊ× Ị Ị Ð × ềểỉ ề ầ ẹé ểẹẹ ềỉìà ề ì ệ é ầ ẹé ễ ệ ì ì ệ é ỉ é ì ịẹể ẹ éểề ỉể ấ éé ễ ệ × × Ĩ ỊĨØ ÐĨỊ ØĨ Ø × Đ ¬Ð ´Ø × ĨỊ Đ ỊØ ØĨ ĨĐƠ Ð ´Ư Ø ệ ỉ ề ềỉ ệễệ ỉ ì ề ĩ ĐƠÐ ¸ Ư À ÐÐĨ   ÙỊ Ø ÐĨ Ø ×ÕÙ Ư Ü Ú Ð ×ÕÙ Ư Ì Ü Ì Ị Ú ÐÙ Ø ĨỊ Ĩ Ø Ø Ì Ü Ø Ø ØÝƠ Ø Ị × Ĩ Ø ÐĨ غ ỉ ề ễ ẳ ả ỉ ễ ề ỉ ểề ĩ ỉ ỉ é ỉ ệ é ẵẳ ềỉ Ú ÐÙ Ø Ị Ø Ø Ú ÐÙ Ø ĨỊ ỊØ ƯĐ × Ø ĨƠ Ư Ø ĨỊ Ü Ị ỉ ề ỉíễ ìá ỉể ễ ễệể ảá Ø Ø ­Ĩ Ø ỊÝ ĨÙØỚØ ĨÙỊ À ÐÐĨ Ị ×ØƯ Ị Ø × Ø Ư ØÙƯỊ× Ø ĨØ ØÛ Ù Ø × Ị ỊØ Ư Ø Ú ÐĨĨƠº Ø × Ĩ ØĨ Ø Ø ƯĐ Ị к ÙỊ غ ỉíễ ệ ìéỉ ể ỉ ẵ ỉể ỉ Ư ×Ý×Ø Đ ĨỊÐÝ ƠƯ ỊØ× Ø º Ì Ð ×Ø Ơ Ù Ø Ĩ × Ư ×ÙÐØ Ư × è é ỉ ểề ơề ì é ễ ì ØÝƠ ×ØƯ Ị ÙỊ Ø ĨỊ Ü Ị Ø× Ð ì ể ỉ éể ỉ éể ỉ éể ỉá ìế ệ ĩ ẹìỉ ể ỉíễ ể ỉ Ị Ư Ú Ư Ư Ị Ị ỊØ ¹ ỊØ ắ ỉ ỉ ì ệì ễệể ề ề ½ Ð× Ư Ù× Ø Ð× ƠƯĨ Ư ĐĐ Ư³× ỉ ỉíễ ì ì ệ ế ìỉ ềẵà à ỉíễ ệệểệá ệ ễểệỉ ơề ỉ ểềì ẹ í íểệ ề ỉ ề ẵẳá ỉ é ệì ỉ ƠƯ ỊØ× Ø Ư ×ÙÐØ Ĩ Ư × Ĩ × ềểỉ ễệể ệ ỉ ệì ẵẵ ì ĩễệ ìì ểề Ì   ĨỊ Đ ×Đ Ø Ø Ư × Ø Ø Ị ƯÝ ƠƯ Đ Ø Ú Ị ×ÕÙ Ư Ø × Ơ Ư Đ Ø Ư ×Ý×Ø Đ Ư × × ÙỊ ÐĨ Ø ¬Ư×Ø Ơ Ø × Ø ÙØ ĨỊ Ị ĨƯĐ Ø ĨỊ Ø Ơ ¿ Ü Ê ĩ ỉ ĩễệ ìì ểề ì ẵ ẵ éể ỉ ỉ ểề ể ìíìỉ ẹ ể ể ẳ Ê ỉ ề ẵẳ éễ é ỉ ểễé ệ ễ é ỉ ệ ééểềề ễệ ềỉ ìỉệ ề ề ềắà éể ỉ ĩễé ỉéíá ì Ị × 522 Didier R´emy Ơ Ư ỊƠ Ơ Ø ề ìỉệ ề ỉ ỉ ệ ễệ ỉ Ị غ Đ Ư Ị Đ Ø Ị ×ØƯ Ị ³ ± Ð Ø Ð Ơ Ø Ị ´Øº Đ ệ ìỉệ ề ề ẹ ề éì ề ẹ ỉ ì ỉỉ è ệ ề ỉ ẹ ệ ẹ ệ ệà ìỉệ ề ỉẹ ệ ề ẹ è ểề è ềỉá ìỉệ ề ềỉ è ểề è ệệểá ỉẵ ỉắ Û Ị ØºĐ Ư Ý Ð ¹ غ Đ Ư ẹ ệ ệà ìỉệ ề ì ễệ ềỉ ẵà ỉẵ ễệ ềỉ ẵà ỉắ ỉẹ ệ ề ẹ è ểề è ệệểá ỉẵ ỉắ ễ ệ ề ẳ ềà ìỉệ ề ễệ ềỉ ẵà ỉẵ ễệ ềỉ ẵà ỉắà è ểề éà ệ ì ệ ỉí ỉá ỉàà ề ề ễệ ềỉ ẳ ìỉ ểỉ ỉ ĩ ệ ì ẵắá ễ ắ è ểềéí í ỉ ỉíễ ệ ì í ơề ề ề ểề ệ é ìá ểệ í ề ỉ ểề ệệểệì è ĨƯĐ Ư ỊỊĨØ Ĩ ÙƯ Û Ø ÐĨ× Ø ƯĐ׺ ề ỉệềá ề ỉ ểề ề é ỉ ệ Û Ø Ĩ ÙƯ ĨƯ Û Ø Ð × × Û Ị ØØ ĐỜ Ị ØĨ ÙỊ Ý ØÛĨ Ø ệẹì ỉ ô ệ ềỉ ỉểễ ìíẹ ểéì ấ ệì ỉíễ ì ệ ẹể ì ể ệạ ÁỊ Ø ×Ị Ĩ ƠƯ Đ Ø Ú ĨƠ Ư ỉ ểềìá ỉíễ ì ệ ỉ ệ ệ é × ĨƯ ƯƯĨÛ ØÝƠ ׺ Ì ĨỊÐÝ ØÝƠ ĨỊ×ØỨ ØĨƯ × ¸ ×Ĩ Ø Ø Ø Ư Û ÐÐ Ị ệ ềí é ì ệ ề ề ỉ ểề ĩ ệ ì ẵá ễ è ểềéí ặ éỉí ểẹ ì ệểẹ ỉ ể ệ ệ ề Ù× Ị ƠÐ Ĩ ỊÝ ĨØ Ư Ư º × ệ ìéỉá ềềểỉ ì ềểỉ ểề ể ề ệí ế é ề ể ỉể ệ ìá ểé ềểỉ ỉệ ềì ỉ ềìỉ ơề Ị ×ÝĐĐ ØƯ Ư Ð Ø ĨỊ Ư × Û ỉ ểệ ềìỉ ề ỉ ệ ể ệ ệ × Û Ø Ã Ị ¸ ÙØ ỊĨØ Ø ĨỊÚ ệì ểệ ểề ề ề éìể ơề ỉ ệ é ỉ ểề ì ệ ỉ Û × Ø Ị Ø ĨỊ Ĩ Ø ×ÝĐĐ ØƯ Ư Ð Ø ĨỊ Ư × Û Ø º Ð ỉ ệ ì ỉ ĩí ĩá í ỉ ệ ệ ề ẹ ề ẹ ể ệ ỉệ ể ệá ệ éì × Ư × Û Ø Ü Ý ỊĨØ ´ Ư × Û Ø Ý Üµ Đ Ø Ð Ø Ï ØÙ ÐÐÝ ƠƯĨÚ ĐĨƯ Ị Ư Ð ×ĨÐÙØ ĨỊ Ị × Đ Ð Ư Ø Ø × Ư × × Ø× Ĩ × Đ Ð Ư Ư × ĐĨỊ Ị è ì ề ỉ ểề ì ơề í ề ỉ ểề ỉ ề ì ẹễỉíá ỉ ệ × ỊĨ ×ĨÐÙØ ĨỊº Á Ø ¬Ư×Ø Ð Đ ỊØ ể ỉ ề ì ể ệá Using, Understanding, and Unraveling the OCaml Language 523 Û × Ư ĨƯ × Ø× ể ạẵ ì ẹ é ệ é ẹ ềỉì ề Ø Ư ×Ø Ĩ Ø Ị Ị Ø ÂĨ Ư ề ệểềỉ ể ì ỉ ầỉ ệ ì ỉ ¬Ư×Ø Ð Đ ỊØ Ĩ Ị × Ư ÙÐ Ư ệ ơệìỉ ì ệ ểệ ỉ ì ỉ ể ÐÐ Ð Đ ỊØ× Đ Ø Ị Ø Ư Ị Ø Ư ×Ø Ĩ Ø Ị Ø × × Ø ểềìỉ ỉỉ ì ìểéỉ ểề ỉì ì ị ỉ é ×Ø Ø Ị¸ Û ÐÐ ĨØ Ư ×ĨÐÙØ ĨỊ× ĐĨỊ Ø Ư ×Ø Ĩ Ø Ị Ø Ø × Ư ỉ ầỉ ệ ì ỉ ìểéỉ ểềì Ư ĨỊÐÝ Ø Ĩ× Ø Ø × Ư Û Ø º Ị Ð Ø Ư Đ Ø Ị × Đ Ð Ư Ị Û Ø ¹ ÂĨ Ư Ø ¹ ìỉẹ ễ ề ễ ể ệ ễà ề ì ẹ é ệ ẵà ỉà ỉạ é ỉ ì ẹ é ệ ỉể ìỉ ề éé ệ ì ỉ ỉ ề Ð Ø ĨØ Ư× Ị × Đ Ð Ư ´Ä ×غ Ị ÐÐ ´ × Ư × Û Ø µ ỉà ề ìỉé ề ỉ ì ẹ é ệ ØĨ Ø Ị × Đ Ð Ư ØĨ ĨØ Ð× ĨØ Ư× Ị ƯƯ Ị × Đ Ð Ư Ð Ø Ư× À Ư × Ị Ü ĐƠÐ Ĩ × Ư Ị   ƯƯ Ị ËƠ Ị ÐÙ ÂĨ Ư Ư ÉÙ Ị Ị ËƠ ĐĨỊ Ư Ð ×Ø Ð ×Ø ×Ù Ø ËƠ Ị Đ Ã Ị ÂĨ Ư Ư ×Ù Ø À Ừ Ị Đ ÂĨ Ư ÂĨ Ư Ư ×Ù Ø ËƠ Ư ×Ù Ø ÐÙ Ị Đ ÉÙ Ị Ư ÂĨ Ư Ị À Ừ Ư ÉÙ Ị ÐÙ ÐÙ ÂĨ Ư Ư ×Ù Ø Ã Ị Ư ×Ù Ø Ị Đ ÉÙ Ị ÐÙ ĐĨỊ Ị Đ Ã Ị Ị Đ Ã Ị Ü Ư ì ẵ áễ ỉ ểé ìỉ éé ểệệ ỉ ểềỉ Ị× Ú Ư Ð Ø Ø Ĩ × ỊĨØ ÐĨỊ ỉể ôá ì ề ỉ ì ệ é ểé ềểỉ ề ệ é ị ề ỉ ỉíễ ì ể ểềìỉệ ỉểệì ề ìỉệ ỉểệì ầ ểệì ỉ ểé ềì ỉể ề ệ é ị ì ệ é ểệ ềìỉ ề ểề ểé ỉ ề ơề ỉíễ ể ô ỉ ô ô ề ô ô ơ ề ìì ề ềí ỉíễ ỉể ỉ ĩễệ ìì ểề ẹ ỉ ẵ ỉ íàí ẵà í íàá ệ ì ỉể ỉ ềỉ ệ ẵà ểề ệì éíá ỉ ì ì éỉ ể ìỉệ ề ề ì é ììá ỉ ỉ ô ểềỉ ềì ìễ ệưạ ểì ệ é ì ểềì ệ ểệ ềìỉ ề ỉ ơề ỉ ểề ỉíễ ôà ể ềỉ è ề ẵ ểé ỉíễ ôà ểệ ềí ỉíễ ô ặểỉ ỉ ỉ ỉ é ỉỉ ệ ì ééể ề ầ ẹéá é ỉ ểệẹ ệ ì ệ ỉ ĩ ệ ì ẵ áễ ẽ ẹ í ì ỉ ểééể ề ỉíễ ơề ỉ ểề ỉíễ ÙỊ Ø Ị × Ø ÜƠƯ ×× ĨỊ Ø Ị ½ Đ Ø ĨĨÐ Û Ø ÌỨ Ü µ ½ éì ĩ ắ ểểé éì èệ ể ề ỉ ắ éì ể ì ìíềỉ ỉ ì ệ ểệ 524 Didier Remy ĩ ệ ì ẵ áễ è ề ệ é ị ỉ ểề ì ỉể ééể ểềìỉệ ỉểệì Ĩ ỊÝ Ư Øݺ ØÝƠ ´µ Ĩ Ĩ Ị Ì × × Ư Ø Ư ×Ý Ị Ð Ø × ề ĩ ệ ì è ềá ểề ểé ỉíễ ôẵ ìỉ ìề Ê ể ô ẵ ị Ê ị ĩ í ĩàà ị Ê ị ĩ í í àà ôắ ơề ôắ ĩ ệ ì ẵ áễ ỉíễ é ẻ é ể é é Ð Ø ĨÐ Ỵ ÐÙ Ð Ø ÙỊ ĨÐ ´Ỵ é ĩ ệ ì ẵ ểềỉ ề ĩ ẵ ĩ ắ ĩ ểé ĩ ề ểé ĩ ệ ì ẵ ểềỉ ề ệ é ỉ ì ì ỉ ệ ỉ ểé ề ề ểé ẵ ắ ểẹễ é ệ ểệ ì é ỉ ểé ề ẵ ắ ề ểé ẵ ắ é ỉ Ü ´ ÙỊ ³ ¹ ´ ÙỊ ¹ ´ ÙỊ ĩ ĩàà ề ề ĩ ĩàà ĩ ệ ì ẵ áễ ỉíễ ỉíễ ỉíễ àà ẵ ôà àà ẳ ô ô ắ ẵ ôắ ắ ô ẵ ẳ ắ ô ắ ẵ ô ắ ô ẳ ô ẵ ô ắ ô ẵ ểệ é ỉíá Using, Understanding, and Unraveling the OCaml Language ĩ ệ ì ắẳá ễ 525 ắ è ề ỉ ểề ĩ ì ểé Ø × Ư ÙĐ ỊØ ÙỊ Ø ĨỊ ³ Ị Ư ØÙƯỊ ÙỊ Ø ĨỊ ×Ĩ Ø Ø Ü × ÕÙ Ð ØĨ ³ ܺ Ì ×ĨÐÙØ ĨỊ × ØĨ ×ØĨƯ Ị Ư Ư Ị Ưº Ï Ø ĐƠĨƯ Ư ÐÝ Ư Ø Ø Ư Ư Ị Ư Û Ø ÙĐĐÝ ÙỊ Ø ĨỊ ´Ø Ø × ỊĨØ Đ ỊØ ỉể ì ììẹ ề ỉ ỉ ỉ ệ ệ Ị Û ÐÐ Ð Ø Ư ĨỊØ Ị Ø ĨƯƯ ỉ ệì ểề ể ề ơề ì ề ĩ ệ ĩ ề ỉ ĨÐÐĨÛ Ị ×ĨÐÙØ ĨỊ Ð Ø Ð Ø Ð Ø Ö Ú Ð Ü ³ Ö Ö ´ ÙÒ Ü ³ ƯÜ Ư Ü ´´ ³ ¹ ³ ¹ Ư ì éệ ơĩ àà ề ề ề ặểỉ ỉ Ø Ø Ü Ờ ĨỊ × ĨÙÐ Ị Ú Ư ệ ì ì ỉ ểềỉ ềỉ ể ỉ ệ ệạ Ị × ĨÚ ƯƯ Ị Ý ĨƯ Ị Ư Ư Ị × Ù× º Ï ĨÙÐ Ð×Ĩ Ù× Ø ĨỜ ĨỊ ØÝƠ ØĨ Ị Ø Ð Þ Ø ĨỊØ ỊØ Ĩ Ø Ư Ư Ị ØĨ ỈĨỊ Ị Ư ƠÐ Ø Ð Ø Ư Û Ø ËĨĐ º ÀĨÛ Ú ệá ểé ềểỉ ể ệ ì ề ề ĩ ễỉ ĨỊ Ø Ú ÐÙ Ĩ Ø Ư Ư Ị Û ệ ỉể ặểề ề ề ệ ề Ø ĨÙ Ø × × ØÙ Ø ĨỊ × ĨÙÐ Ị Ú Ư Ĩ ÙƯ ÝỊ Đ ÐÐÝ Ị ĨƯƯ ỉ ẹễé ẹ ềỉ ỉ ểề ì ề ĩ ẹễé ơề ỉ ỉểệ é ề ỉ ểề ỉ ỉề ề ẳ ềÊ ỉ ềẵà ẵ é ỉ ĩ ỉ ề éì ề ỉ ềỉ ắẳ ĩ ệ ì ắắá ễ è ềì ệ ì ễểì Ø Ú º Ì Ư ×ĨỊ × Ø Ø Ü Ờ ĨỊ× Ø ØÝƠ × Ĩ Ú ÐÙ × Ø Ø Ø Ý ĨĐĐÙỊ Ø ¸ Û Đ Ý Ư ệì ỉíễ ì ẽ ơệìỉ ỉể ơề ỉể ề ệì ề ỉ ểềì ểé ề ề ểé ì Ị Ø ĨÐÐĨÛ Ị Ü Ờ ĨỊ ØĨ Đ × ỉíễ ì ể é ì ề ỉ ề ỉà ề ỉ ề ỉàà ểé ĩ ề ỉà àà ề ểé ề ỉà ĩạ ĩ íạ í ĩ ễỉ ÓÒ Ð Ø Ó ÙÒ Ð Ø Ú Ð ÓÐ é ề ểé ệ ỉệí ì ề ỉ ề ỉà ề ỉ ề ỉà ề ỉ ề ỉ ề ỉ ề ỉà ề ỉ ề ỉà ề ỉ ề Ø Ì ØÛĨ ÙỊ Ø ĨỊ× ĨÐ Ị ÙỊ ĨÐ Ư Ị Í Û Ư Í × ÙỊ Ø ÙỊ Ø Ì Ý ÙỊØÝƠ Ð Đ Ð ÙÐÙ× ỊØĨ Û ééạỉíễ ềể ề ĩ ĩ ĩ ểé ẵ ề ễ ệỉ é ệá ỉ ề ĩ ắ ì ééạỉíễ ề ề ề ệì ể ệ ểềì ØÛ Ị ØÝƠ Í Í Ị Ù× ØĨ Đ ỊÝ ỉ ệẹ ể ỉ ỉ ệẹá ì ề ỉ ểééể ề ééạ ềểề ĩ ẵ ắà ề ểé 526 Didier Remy ĩ ệ ì ắá ễ ẵ è í ô ệ ề é ìì ẹẵ é ìì Đ¾ Ì ĐØĨ ÐĨÛ Ị Ị Ừ Ĩ Ĩ Ĩ é ìì ỉ ề ỉ ề ẹắ ệ ề ẹẵà ẹẵà ề ẹắà ẹắà éìểá é ỉ ỉíễ ì ĩ ệ ì ắ áễ é ×× ÙƠ Ĩ Ø ´× Ð Ú Ð ĐÙØ Đ Ø Ĩ × Đ Ø Ĩ Ư Đ Ø Ị ĩ ệ ì ắ áễ ẵ ề ệỉ ẵẹ ỉ ể ẹ ệỉ ắẹ ỉ ể ẹ ỉệềì ề ể ắ ề ề ỉ ể ỉíễ ắ ềìỉ ể ẹắá ì ệ ế éá ỉ ỉíễ ẹẵ ì ểềéí ì ỉíễ ể ẹắ ẵ é ễ ặểề ễ ậểẹ ầể ểễí ì é ìỉểệ ễ ỉ ặểề ì é ậểẹ ĩ ĩ ắ è ểềéí ễệể é ẹ ì ỉ ẹ ỉ ể ểề ỉ ỉ ỉ ì ễì ểạ Ị ƯÝ Đ Ø Ĩ º Ì Ư Ư ØÛĨ ễểìì é ìểéỉ ểềì è ơệìỉ ì ềểỉ ỉể ẹ Ø Ị ƯÝ Đ Ø Ĩ ¸ Ị Ð Ø Ø Ð ×× Ơ Ư Đ ØƯ Ð ×× ³ Ĩ×ØƯ Ị × Ĩ Ú Ð× × Đ Ø Ĩ Ư ƠƯ × Đ Ø Ĩ ĨỊ Ø ´Ø ³ µ Ị Ø ´× Ð µ × Ì × ĨỊ ¸ ĐĨƯ Ị ØÙƯ Ð ×ĨÐÙØ ĨỊ × ØĨ Đ ỉ ễ ệ ẹ ỉ ệ ỉ ì é ạỉíễ º × Ø Ư ƠƯ ĨỊ Ø Ð ×× Ĩ×ØƯ ề ì ể ỉ ì é éì × Đ Ø Ĩ Ư ƠƯ × Đ Ø Ĩ ểề ỉ ỉ ì ì ỉ ề ệ ƠƯ Ị ƯÝ Đ Ø Ĩ Ý Đ Ị Using, Understanding, and Unraveling the OCaml Language 527 Ü Ư × ắ áễ ểệ ì ể ệ ôễ ế ễ ôễ ế ễ ế é ỉíá ểềéí ẵ ế ệ ễ ệ ẵ Ă ễ ễẳ ễ ôễ ẳ Ă Ă ễ ệ ìệ ẵ ệ Ă ôễ ễ ôễ ẳ ôễ Ă Ă ì ẹễé ễ Ă Ă ệé ì ể ệ ề ễ ễ ễ ế ẵ ễ ẳ ế Ă ế éé ì ì ễ ôễ ế ế ẳ ôễ ế ẳ Ă Ă ệ ệ ¡ ¼ ¡ Ơ ¡ Ơ Ì Ị Ư Ð Þ Ø ĨỊ × Ĩ Ú ĨÙ× Ø Ĩ ÙƯƯ ề ì ể ễ ôễ ễ ễ ế Õ ¸ Ị Ư Ư ¸ Ị Ư ƠÐ Ý ¬Ị Ø Đ ƠƠ Ị × ƯĨĐ Ð Ð× ØĨ ỉíễ ì ẩ ẩ ẫá ề ấ ể × Ĩ ỊØ ĨĐ Ị Ü Ờ ĨƯ È Ị È Ĩ ỊØ Ð ĨĐ Ịº Ì × ´ Ị ệ é ị ệé ì ì ểé ỉể ỉ ểì ểệ ì ẹễé ỉíễ ìá ệ ệé é Ị ĨĐƠĨ× Ư ỊĨØ ÜØ Ị ØĨ Ø Ĩ Ø ỉíễ ểềìỉệ ỉểệá ềểệ ỉ ệể ểềìỉệ ỉểệì ẳ ẳ ĩ ệ ì ễ ẳ ẳ ỉẵ ĩ ỉ ĩ ĩ ệ ì áễ ẳ ẵ ỉể ệệ ݺРỊ Ø ËÝ׺ Ư Ú   ƠƯ ỊØ ×ØƯ ề ậíì ệ ễệ ềỉ ễệ ềỉ ề é ề ểệ ể ĩ ệ ì áễ Ĩ Ð Ø ØƯÝ Û Û Ø Ị Ð ĨƯ ể ề ỉệ ể ễệ ềỉ ể é é ỉ ể éểì ểề ẵ ỉể ề ề ề ệ ểề ẳ ệệ íé ề ỉ ậíì ệ éì ẵ ề é ề ẵỉ ề ề ậíì Ư Úº´ Ĩ ×Ø Ị ƯƯ ݺРỊ Ø ËÝ׺ ệ ểễ ề ềễỉ é ề ẵ ề Ị Ịµ ĨỊ 528 Didier R´emy Ơ ØØ ƯỊ ƯƯ íé ề ỉ ậíì ệ é ỉ ắ ỉ ề ề ễệ ềỉ ề é ề ĩ ỉẵ ì ệễấ ẩ ơé ẵ ơé ắ ề éì ậỉệệ ễệể é ỉ ĩễ ậíì ệ ẵà ìì é ề é ậỉệì ệ ặểỉ ểề ểệ ệ ễ ØØ ƯỊ Ð ¼ ØƯÝ Ð Ø Û Ø ƠƯĨ Ð Ø ×× ØƯÝ Û Ị Û Ø ƠƯĨ Ð Ø Ð Ø Ð Ø Ð Ị Ị ØỨ Ĩ ƠƯĨ ×× Ð Ị ´ ỊỚØ Ð Ị Ĩ Ð ìì é ểễ ề ề ề ễệể ìì ề éểì ễệ ềỉ ểề ề ệệ íé ề ỉ ậíì ệ ắ ỉ ề ắ ỉể ƯƯ ݺРỊ Ø ËÝ׺ Ư Ú Ĩ ƠƯĨ ×× é ậíì ệ ểề ểệ ẵ éì ễệể ×× Ị ×Ø Ü Ư × ¿ ¸Ơ ĨÙỊØ ØÝƠ ÑÙØ Ð ÑÙØ Ð ÑÙØ Ð Ð Ø Ð Ø ệì é ề ì ểệ ì ề ểềỉà ỉểỉ é ề ề ẳ ềỉ ềỉ ềỉ ệì ểềỉà ¼ Ð Ị × ¼ ÛĨƯ × ÙĐÙÐ Ø Û ỉểỉ é ệì ỉểỉ é ệì à ệì ỉểỉ éé ề ì ỉểỉ éé ề ì à é ề ì ỉểỉ éểệ ì ỉểỉ кÛĨƯ × · Û ºÛĨƯ × Ð Ø Ð Ø Ư Ð Ø Û º Đ Ø ³³ ĨÙỊØ Ư ềễỉ ệì ệ ề ệì à ½ Û Ø ³Ịس ¹ Û Ø Ị Û ºÛĨƯ ì ểệ ì à ẵ éì ẳ Ò Ð Ò Ð Using, Understanding, and Unraveling the OCaml Language ểềỉ ệ éì ềề é ề ì é ề ì à ẵ ỉ ề ểệ ì ểệ ì ểềỉ ệ éì ểềỉ ệ ỉệ ểềỉ ềề Ð Û ĨÙỊØ Ư Ð× Û Û Ø Ị Ĩ é ẹé ỉ é ỉ Ãẵ éì ØƯÝ ĨÙØỚØ Ư ×ÙÐØ× × Û ÈƯ ỊØ ºƠƯ ỊØ ± ± Ð Ø ĨÙỊØ Ð Ø Ð Ð ÐĨ× Ị ±×ỊỊ Û ºÐ Ị × Û ºÛĨƯ × Û ệì ì ĩ ỉ ắ ề ẹ ỉệí ĨƠ Ị Ị Ð Ị Đ Ị Û Ị Û ểềỉà ề ểềỉ ềề é ểỉễỉ ệ ìéỉì é ề ẹ ỉ ậíì ệệểệ ì ễệ ỊØ ×ØƯ Ị × ƠƯ ỊØ Ị ÛÐ Ị Ð Ø Ð Ø Ð Ø Đ Ð Ø Ị Ị ề é ì é ì ề ểệ ểềỉ ệệ íé ề ỉ ậíì ệ ẳỉ é ì ể é ậíì ệ é ì ẵỉ ề ĨÙØỚØ Ư ×ÙÐØ× ØĨØ Ð ØĨØ Ð Ị Ð× Ị ề ểềỉà ề ểềỉ ềề é ìỉ ề Û ĨÙØỚØ Ư ×ÙÐØ× Û Ð Ø Ị Ü Ø ẹ ềà ẳ ề ề ẵ ỉể ề ểề ề ẵ 529 530 Didier Remy ấ ệề ì ẵ Å Ừ Ị Ị ÄÙ Ư ÐÐ º Ø ĨƯÝ ể ể ỉì ậễệ ề ệá ẵ ắ Ừ Ị ¸ ÄÙ Ư ÐÐ ¸ Ị ĐỊ º È Ư ¸ Ị Ư Ê Đݺ ÝỊ Đ ØÝƠ Ị Ị ƠĨÐÝĐĨƯƠ Ð Ị ٠׺ ÂĨÙƯỊ Ð Ĩ ề ỉ ểề é ẩệể ệ ẹẹ ề ẵà ẵẵẵò ẵẳá ề ệí ẵ é ĩ Ị Ư Ị Ị Û Ư ĺ Ï ĐĐ Ư׺ ÌÝƠ Ị ÐÙ× ĨỊ ĨỊ×ØƯ ỊØ× Ị ØÝƠ Ị Ư Ị º ÁỊ ĨỊ Ư Ị ĨỊ ÙỊ Ø ĨỊ Ð ÈƯĨ Ư ĐĐ Ị Ä Ị Ù × Ị ểẹễỉ ệ ệ ỉ ỉệ ễ ì ẵò ẵ ễệ ììá ẵ ề ểề ề Ð Ị Ù º Ø ĨƯÝ Ĩ Đ Ü Ị ĐĨ ÙÐ × × Ị ƯÚ ĨƠ Ư ØĨƯ׺ Å Ø Đ Ø Ð ËØỨ ØÙƯ × Ị ĨĐỚØ Ư ậ ề ẳẵò ìỉ ẵ º º Ú Ị ĨỊ Ị Ð Ị Ù º ƠƯ Đ Ø Ú Ð ÙÐÙ× ĨƯ ĐĨ ÙÐ ×Ý×Ø ẹì ề ểễ é ề ặ ỉ ệá ỉểệá ẩẩ ȳ ¹ ÁỊØ ƯỊ Ø ĨỊ Ð ĨỊ Ư Ị ĨỊ ÈƯ Ị ƠÐ × Ị ÈƯ Ø Ĩ Ð ệ ỉ ẩệể ệ ẹẹ ề ểéẹ ẵ ẳắ ể ỉệ ặểỉ ì ề ểẹễỉ ệ ậ ề ễ ì ắò ậễệ ề ệạẻ ệé ẵ ềì ẩ ệ ề ệ ỉ è ẹ ééì ỉì ậíềỉ ĩ ề ậ ẹ ềỉ ìá ểéẹ ẵẳ ể ậỉ ì ề ÄĨ Ị Ì ĨÙỊ Ø ĨỊ× Ĩ Å Ø Đ ỉ ì ặểệỉ ạểéé ề ẵ ậíé ề ểéẹ è ệ ì ệ ềá ề ấ ề ấ ể ểể ể é ìá ể Ø× Ø Ð ÙÐ ĨƯĐ Ðº ÁỊ Ø × × ÂĨÙƯỊ × Ư Ị ĨƠ ĨỊ × × Ä Ị ì ễễé ỉ ì ặấ ẵ ệ Ị Ĩ × ĨÙƯ ĨỊ Ð Ị ËØ Ơ Ị ệị èíễ ề ệạểệ ệ ễểéíẹểệễ ẹéỉ ạẹ ỉ ể ì ề ẩệể ềìể ỉ ắ ỉ ểề ệ ề ểề ẩệ ề ễé ì ể ẩệểạ ệ ẹẹ ề ề ìá ễ ì ẳắòẵ éí ẵ ẹ ệ ệ éé ì ễễ ìỉ ề ỉ ểễ ềì ầ ỉì ệểễ ểề ỉ ề ệ ậ ểỉỉ ậẹ ỉ ẻ é ệí èệ ểềểàá ệí è ềìá ề ề ẹ ề ẩ ệ ÇỊ Ị ƯÝ Đ Ø Ĩ ׺ Ì ĨƯÝ Ị ẩệ ỉ ể ầ ỉ ậíìỉ ẹìá ẵà ắắẵòắ ắá ẵ ẵẳ ẹ ệ ệỉ ề ầ ệì íá ề ẩ é ễ ẽ é Ưº ×Ø Ø ÐÐÝ × ÐØ ƯỊ Ø Ú ØĨ Ú ỪÙ Ð ØÝƠ ׺ ÁỊ ÙƯĨƠ Ị ĨỊ Ư ề ểề ầ ỉạầệ ềỉ ẩệể ệ ẹẹ ề ầầẩàá ệìì éìá éí ẵ ẵẵ ệ éé ề ẩ ỉ ệ ẽ ề ệ ầề ề ệìỉ ề ề ỉíễ ìá ỉ ìỉệ ỉ ểềá ề ễểéíẹểệễ ìẹ ểẹễỉ ề ìệ íìá ẵ ẵò ắắá ẵ ẵắ ẹẹ ề é ééểĩá ẩ ì é Å ỊĨÙƯݸ Ị ỨỊĨ È ỊĨº Ú ÐĨƠƠ Đ ỊØ ễễé ỉ ểềì ầ ỉ ẹé ầấ ééíá ắẳẳẳ ẵ ệ ẹ ệì è é ề ËƠ ¬ Ø ĨỊ ² Ê Ø ĨỊ Ð º è ề é ấ ễểệỉ ạẳạẳ ề ệì ỉí ể ẽ ì ề ỉểềá ẵ ẵ ểẹ ề ế é ẹ ềỉá ể éé ìễ íệểĩá è ệệí ìễ íệểĩá ề éé ì ề ì ĐƠÐ ƠƠÐ Ø Ú Ð Ị Ù Å Ị ¹Åĺ ÁỊ ƠƯĨ Ị × Ĩ Ø ĨỊ Ư Ị Ä ×Ơ Ị ÙỊ Ø ĨỊ Ð ÈƯĨ Ư ĐĐ Ị ẩ ẩệ ììá ìỉ ẵ éìể ễễ ệì ì ặấ ấ ì ệ ấ ễểệỉ ấấạ ắ í ẵ ẵ ÙÝ ĨÙ× Ị Ù Ị Å Ð Å ÙỊݺ ƠƠƯĨ ĨỊ Ø ĨỊỊ ÐÐ Ð ƠƯĨ Ư ĐĐ Ø ĨỊº ì ề áẵ ẵ ì ẹ ì Ị ÊĨ Ị Å ÐỊ Ưº ÈƯ Ị Ơ Ð ỉíễ ạì ẹ ì ểệ ề ỉ ểề é ễệể Ư Đ׺ ÁỊ Å ËÝĐƠĨ× ÙĐ ĨỊ ÈƯ Ị ƠÐ × Ĩ ÈƯĨ Ư ĐĐ Ị Ä Ị ٠׸ ễ ì ắẳ òắẵắ ẩệ ììá ẵ ắ ẵ ỉ ệề ể ìá ệ ề ể ì ấể ĩá ề ẩ ệệ ẽ ì ĩỉ ềì ểề é ễểéíẹểệễ ìẹ ề ẩệể ề ì ể ỉ ắắỉ Å ĨỊ Ư Ị ĨỊ ÈƯ Ị ƠÐ × Ĩ ẩệể ệ ẹẹ ề ềạ ìá ề ÖÝ ½ º Using, Understanding, and Unraveling the OCaml Language ½ º ĨĐ Ị 531 ĨỊ×Ø ỊØ ỊĨ× ËĨÙƯ Р׺ Å Ü Ị ĐĨ ÙР׺ ÁỊ ÁỊØ ƯỊ ỉ ểề é ễ ì ắ ắòắ ẩệ ììá ẵ ẵ ệ ậ ậẹ ỉ ề ẻ èệ ểềể èíễ ề ệ Ị ĨƯ Ư ÙƯ× Ú ÐÝ ĨỊ×ØƯ Ị ØÝƠ × ề ỉì ễễé ỉ ểề ỉể ầầẩ ề ỉ Đ Ø Ð ĨÙỊ Ø ĨỊ× Ĩ ÈƯĨ Ư ĐĐ ề ậ ẹ ềỉ ìá ẵ ắẳ ỉ Ð Ị × Ư Ị ÂĨ Ị Ê ƠƠݺ Ì × Ị Ĩ Ð ×× Đ Ị ×Đ ĨƯ ÅĨ ݺ ÁỊ ĨỊ Ư Ị ÈƯĨ × Ị Ù Ị Ị ĨỊ Ị × Ĩ Ø Ị ÙỊ Ø ĨỊ Ð ÈƯĨ Ư ĐĐ Ị Å ËÁ ÈÄ Ỉ ³ ĨỊ Ư Ị ĨỊ ÈƯĨ Ư ĐĐ Ị ¸ Ơ ì ò ỉé ềỉ í ẵ ẹễé ẹ ềỉ ỉ ểềì ề ìá ậ ẩ ặá ẹ ễệ ìì ắẵ ỉ Ð Ị × Ư Ị ÂĨ Ị Ê ƠƠݺ ÜØ Ị Ị ÅĨ Ý Û Ø Ị Ư Ø Ị ¹ × ×Ù ¹ ØÝƠ Ị º ÁỊ ÈƯĨ Ị × Ĩ Ø ½ Ø ÙƯĨƠ Ị ĨỊ Ư Ị ểề ầ ỉạầệ ềỉ ẩệểạ ệ ẹẹ ề ắẳẳẳ ¾¾º Ð Ü Ị Ư Ư Ý Ị Ư Ị ể ì ểệ ểề é è ịị ểẹ Ơ º Ư ×Ĩ ØÛ Ư Ú Ð Ð Ø ỉỉễ ằằ ẹ ềìẹễ ệằ ịịằ ề ĩ ỉẹé ¾¿º  ÕÙ × ƯƯ Ù º ÈƯĨ Ư ĐĐ Ị Û Ø ƠĨÐÝĐĨƯƠ Ú Ư ỊØ׺ ÁỊ ÅÄ ÏĨƯ ì ểễá ậ ễỉ ẹ ệ ẵ ắ  ÕÙ × ƯƯ Ù Ị Ư Ê Đݺ ÜØ ề ề ỉ ì ẹ ĩễé ỉ ệạ ểệ ệ ễểéíẹểệễ ìẹ ề ềỉ ệề ỉ ểề Ð ËÝĐƠĨ× ÙĐ ĨỊ Ì ĨƯ Ø Ð ×Ơ Ø× ể ểẹạ ễỉ ệ ậể ỉ ệ ểéẹ ẵắ ẵ ể ỉệ ặểỉ ì ề ểẹễỉ ệ ậ ề ễ ì ắẳò ậễệ ề ệá ậ ễỉ ẹ ệ ẵ ắ ệé ềỉ Ưº Ë Đ ỊØ × Ĩ ÈƯĨ Ư ĐĐ Ị Ä Ị Ù × ËØỨ ØÙƯ × Ị Ì Ị Õ٠׺ ĨÙỊ Ø ĨỊ× Ĩ ĨĐỚØ Ị º ÅÁÌ ẩệ ììá ẵ ắ ắè ệì ệỉ ệ ề ề ẻ ệểề ế ểềị ể ẻ ĨỊ Ờ× Ø ĨÙØ Ð× ƠƯĨ Ư ĐĐ Ø ĨỊ ìỉíé ểề ỉ ểềề éá é ìỉíé ẹễ ệ ỉ ỉ ềỉ ệ ỉ ểềìá ẵ ¾º ¾ º ÊĨ Ừ À ƯƠ Ư Ị Å Ư Ä ÐÐ Ư º ØÝƠ ¹Ø ĨƯ Ø ƠƠƯĨ ỉể ệạểệ ệ ẹể é ì ỉ ì ệ Ị º ÁỊ Å ËÝĐƠĨ× ÙĐ ĨỊ ÈƯ Ị ƠÐ ì ể ẩệể ệ ẹẹ ề ềạ ìá ễ ì ẵắòẵ ẩệ ììá ẵ ắ º º À Ị Ð Ịº ÈĨÐÝĐĨƯƠ ÌÝƠ ÁỊ Ư ề ề ậ ẹ ạề ỉ ểề ẩ ỉ × ×¸ ĨÙƯ ỊØ ÁỊ×Ø ØÙØ Ĩ Å Ø Đ ỉ é ậ ề ìá ặ ểệ ề ệì ỉíá ẵ ắ ấể ệ Ò Ð Ý Ò ÂÓÒ Ø Ò Èº Ë Ð Ịº ÁỊØƯĨ Ù Ø ĨỊ ØĨ ĨĐ Ị ØĨƯ× Ị é éì ẻểéẹ ẵ ể ểề ểề ỉ Đ Ø Ð ËĨ ØÝ ËØÙ ỊØ Ø ÜØ׺ Đ ệ ề ệì ỉí ẩệ ììá ẵ ẳ È ÙÐ ÀÙ º Ì À × ÐÐ Ë ĨĨÐ Ĩ ÜƠƯ ×× ĨỊ Ä ƯỊ Ị ÙỊ Ø ĨỊ Ð ÈƯĨ Ư ĐĐ Ị Ø ƯĨÙ ÅÙÐØ Đ º ẹ ệ ề ệì ỉí ẩệ ììá ắẳẳẳ ẵ Ư Ư À٠غ Ê ×ĨÐÙØ ĨỊ ³ ÕÙ Ø ểềì ềì é ì é ề ì ểệ ệ ẵ ắ è ì ể ỉểệ ỉ ỉ ỉá ề ệì ỉ ẩ ệ ì ẵ ắ Ư Ư À٠غ Ì Þ ƠƠ Ưº ÂĨÙƯỊ Ð Ĩ ÙỊ Ø ĨỊ Ð ÈƯĨ Ư ĐĐ Ị ¸ ò ẵ é ỉ º Â Ø ĨỊ Ư Ị ÂĨ Ị º Å Ø Ðк ÅÄ Û Ø ÜØ Ị Ơ ØØ ƯỊ Đ Ø Ị Ị ×Ù ØÝƠ × ´ƠƯ Ð Đ ề ệí ệì ểềà ề ẩệể ề ì ể Ø Å ĨỊ Ư Ị ĨỊ Ä ×Ơ Ị ÙỊ ỉ ểề é ẩệể ệ ẹẹ ề ễ ì ẵ òắẵẵá ậềể ệ ỉ éí ẵ ệ ẩ ểề ì ẫ é ÌÝƠ × Ì ĨƯÝ Ị ÈƯ Ø º Đ Ư ề ệì ỉí ẩệ ììá ặể ẹ ệ ẵ º ¿ º Å Ư Ⱥ ÂĨỊ × Ị Ë ĐĨỊ È ÝØĨỊ ÂĨỊ ׺ Ä ØÛ Ø ÜØ Ị× Ð Ư ĨƯ × ĨƯ × Ðк ÁỊ ÈƯĨ Ị ì ể ỉ ẵ ì éé ẽểệ ì ểễá ềẹ ệ ậạẵ ạắ ề è ề é ệ ễểệỉá ẵ ậ ẹểề ẩ íỉểề ểề × Ị ÂĨ Ị À٠׺ Ê ƠĨỪ ĨỊ Ø ƠƯĨ Ư ĐĐ Ị Ð Ị Ù À × ÐÐ è ề é ệ ễểệỉá ỉỉễ ằằ ì ééểệ ẵ éé ì ề ặ ØÙƯ Ð × Đ ỊØ ×º ÁỊ ËÝĐƠĨ× ÙĐ ĨỊ Ì ĨƯ Ø Ð ×Ơ Ø× Ĩ ĨĐỚØ Ư Ë ề ễ ì ắắò ẵ 532 ẳ ẵ ắ ẳ ẵ ắ º º Didier R´emy Ð Ù Ã Ư Ị Ư Ị  Ị¹È ƯƯ ÂĨÙ ỊỊ Ù º ËĨÐÚ Ị ế ỉ ểềì ề ìỉệ ỉ é ệ ì ệé ì ìệ í ể ề ỉ ểề ấ ì ệ ấ ễểệỉ ẵá ề ệì ỉ ẩ ệì ậ ầệì íá ệ ề ễệ é ẵ ẳ ểềìỉ ềỉ ề ệ ề ệỉ ề ầ ệì í ẩểéíẹểệễ ỉíễ ề ệ ề ề ìỉệ ỉ ỉ ỉíễ ì èệ Ị× Ø ĨỊ× ĨỊ ÈƯĨ Ư ĐĐ Ị Ä Ị ì ề ậíìỉ ẹìá ẵ ẵ ẵẵòẵ ẳá ậ ễỉ ẹ ệ ẵ ệ ƯĨݺ ÈĨÐÝĐĨƯƠ ØÝƠ Ị Ĩ Ị Ð ĨƯ Ø Đ é ề ấ ì ệ ệ ễểệỉ ẵ ặấ ẵ ắ ệ ệểí èíễ ƠĨÐÝĐĨƯƠ ³ÙỊ Ð Ị Ð ĨƯ Ø Đ ÕÙ º è ì ể ỉểệ ỉá ề ệì ỉ ẩ ệ ì ẵ ắ ệ ệểí ễễé Ø Ú ÙỊ ØĨƯ× Ị ÙÐÐÝ ØƯ Ị×Ơ Ư ỊØ ệạểệ ệ ẹể é ì ề ậíẹễểì ẹ ểề ÈƯ Ị ƠÐ × Ĩ ÈƯĨ Ư ĐĐ Ị Ä ề ìá ễ ì ẵ ắòẵ ẩệ ììá ẵ ệ ệểí ìíềỉ ỉ ỉ ĨƯÝ Ĩ ØÝƠ Ị Ư Ø Ú ØÝ Ị × Ư Ị º ÂĨÙƯỊ Ð Ĩ ÙỊ Ø ĨỊ Ð ẩệể ệ ẹẹ ề ò ẵ º Ú Ư Ä ƯĨݺ ĐĨ ÙÐ Ư ĐĨ ÙÐ ×Ý×Ø Đº ÂĨÙƯỊ Ð Ĩ ÙỊ Ø ĨỊ Ð ÈƯĨ ệ ẹẹ ề ẵẳà ắ òẳá ắẳẳẳ ệ Ä ƯĨÝ Ị Å Ð Å ÙỊݺ ÝỊ Đ × Ị Åĺ ÂĨÙƯỊ Ð Ĩ ÙỊ Ø ĨỊ Ð ÈƯĨ¹ ệ ẹẹ ề ẵò ẵ Ú º Å ÉÙ Ị Ị Å × ÌĨ Ø ì ẹ ềỉ ì ểệ ệạểệ ệ ề ỉểệì ÁỊ º Ë ỊỊ ÐÐ ¸ ØĨƯ¸ ÈƯĨ Ư ĐĐ ề é ề ì ề ìíìỉ ẹì ò ậầẩ ểéẹ ể ỉệ ặểỉ ì ề ểẹễỉ ệ ậ ề ễ ì ẳ ò ắ ậễệ ề ệạẻ ệé ẵ é ệỉể ệỉ ÐÐ Ị Í Ĩ ÅĨỊØ Ị Ư º Ị Ỉ ỊØ ÙỊ ¬ Ø ĨỊ Ð ĨƯ Ø Đº Å ÌƯ Ị× Ø ĨỊ× ĨỊ ÈƯĨ Ư ĐĐ Ị Ä ề ì ề ậíìỉ ẹìá ắà ắ òắ ắá ẵ ắ ấể ề éề ệ ề ì ÌĨ Ø º ĨĐĐ ỊØ ƯÝ ĨỊ ËØ Ị Ư è è ẩệ ììá ẵ ẵ ấể ề éề ệá ì èể ỉ ấể ệỉ ệễ ệá ề ẫ ề è ơề ỉ ểề ể ậỉ ề ệ ệ ì è è ẩệ ììá ẵ ể ề Ø Ðк ĨÙỊ Ø ĨỊ× ĨƯ ÈƯĨ Ư ĐĐ Ị ề ì è ẩệ ììá ẵ ệỉ ề ầ ệì í ề ểềìỉ ềỉ ề Ù Ưº ÈÙØØ Ị ØÝƠ ỊỊĨØ Ø ĨỊ× ØĨ ÛĨƯ ề ẩệể ề ì ể ỉ ắỉ ểề Ư Ị ĨỊ ÈƯ Ị ƠÐ × Ĩ ÈƯĨ Ư ẹẹ ề ề ìá ễ ì ò ề ệí ẵ ệỉ ề ầ ệì íá ệỉ ề ậéịẹ ềềá ề ệỉ ề ẽ ệ èíễ ề ệ ề ỉ ểềạ ìỉệ ề ỉíễ ì è ẩầậá ẵàá ẵ ệỉ ề ầ ệì íá ẩ é ễ ẽ é ệá Ị Å Ừ Ị Ï Ưº × ĨỊ ÐĨĨ Ø ĨÚ ƯÐĨ Ị º ÁỊ ÈƯĨ º Å ĨỊ º ĨỊ ÙỊ Ø ĨỊ Ð ÈƯĨ Ư ĐĐ Ị Ị ểẹễỉ ệ ệ ỉ ỉệ ễ ì ẵ òẵ ề ẵ ệỉ ề ầ ệì íá ệ ìỉểễ ề ệá ề ỉỉ ì ề ệ ĨÐĨƯ ÐĨ Ð ØÝƠ Ị¹ Ư Ị º ÁỊ Å ËÝĐƠĨ× ÙĐ ĨỊ ÈƯ Ị ƠÐ × Ĩ ÈƯĨ Ư ẹẹ ề ề ìá ắẳẳẵ ỉìì ầ ểệ º ƠĨÐÝĐĨƯƠ Ư ĨƯ Ð ÙÐÙ× Ị Ø× ĨĐƠ Ð ỉ ểề èệ ềìạ ỉ ểềì ểề ẩệể ệ ẹẹ ề ề ì ề ậíìỉ ẹìá ẵ ò ẵ ệ ề È ÙÐ×ĨỊº ÅÄ ĨƯ Ø ÛĨƯ Ị ƠƯĨ Ư ĐĐ ệ ẹ ệ ề ệì ỉí ẩệ ììá ẵ ½º Ị ĐỊ º È Ư º ĨÙỊ ÕÙ ỊØ ¬ Ø ĨỊ × ÙỊ Ð º ÁỊ ĨƯĐ Ø ểề ề ểẹễỉ ỉ ểềá ẵẵắẵà ẵẵòẵ éí ẵ º Ð×Ĩ Ị ƯÐ º ÙỊØ Ư Ị ÂĨ Ị ỉ ééá ỉểệìá è ểệ ỉ é ìễ ỉì ể ầ ỉạầệ ềỉ ẩệể ệ ẹẹ ề èíễ ìá ậ ẹ ềỉ ìá ề ề ì ề è ẩệ ììá ẵ ậẹẹ ệí ề Å ËÝĐƠĨ× ÙĐ ĨỊ ÈƯ Ị ƠÐ × Ĩ ÈƯĨ ệ ẹẹ ề ề ìá é ế ệế ¸ Ỉ Û Å Ü Ĩº Ị ĐỊ º È Ư Ị Ú Ỉº ÌÙƯỊ Ưº ÄĨ Ð ØÝƠ Ị ệ ề ề ẩệể ềì ể ỉ ắỉ ĨỊ Ư Ị ĨỊ ÈƯ Ị ƠÐ × Ĩ ÈƯĨ ệ ẹẹ ề ề ìá ẵ éé Ú Ư× ĨỊ Ú Ð Ð × ÁỊ Ị ÍỊ Ú Ư× ØÝ Ë Á Ì Ị Ð Ê ƠĨỪ ¿º Using, Understanding, and Unraveling the OCaml Language 533 º º º ÈÐĨØ Ịº ËØỨ ØÙƯ Ð ƠƠƯĨ ØĨ ÇƠ Ư Ø ĨỊ Ð Ë Đ ỊØ ×º Ì Ị é ấ ễểệỉ ặạẵ ề ệì ỉí ể ệ ìá ẵ ẵ ẳ ệ ề ể ì ÈĨØØ Ưº Ë ĐƠÐ Ý Ị ×Ù ØÝƠ Ị ĨỊ×ØƯ ềỉì ỉ ểệí èể ễễ ệ ề ề ểệạ ẹ ỉ ểề ểẹễỉ ỉ ểềá ìỉ ắẳẳẳ ẵ Ư Ê Đݺ ÜØ Ị Ị ÅÄ ØÝƠ ×Ý×Ø Đ Û Ø ×ĨỪ ÕÙ Ø ĨỊ Ð Ø ĨƯݺ Ê ì ệ ấ ễểệỉ ẵ ềìỉ ỉỉ ặ ỉ ĨỊ Ð Ê Ư Ị ÁỊ ĨƯĐ Ø ÕÙ Ø ỉểẹ ỉ ìẹ ấể ế ề ểệỉá ẩ ẵẳ ẵ ìề í ĩá ệ ề ½ ¾º ¾º Ư Ê Đݺ ÈƯĨ Ư ĐĐ Ị ể ỉì ỉ ấè ề ĩỉ ềì ểề ØĨ ÅÄ Û Ø ×ØƯ Ø Ị Ư ĨƯ ØÝƠ ׺ ÁỊ Å × Đ À Ý Ị ÂĨ Ị ỉ ééá ỉểệìá ềạ ỉ ệề ỉ ểề Ð ËÝĐƠĨ× ÙĐ ĨỊ Ì ĨƯ Ø Ð ×Ơ Ø× Ĩ ĨĐỚØ Ư ËĨ ØÛ Ư ¸ ỊÙĐ Ư Ị ỉệ ặểỉ ì ề ểẹễỉ ệ ậ ề ễ ì ắẵò ậ ề ễ ềá ễệ é ẵ ậễệ ề ệạẻ ệé Ư Ê Đݺ ÌÝƠ Ị Ư Ị ĨƯ Ư ĨƯ × Ị Ị ØÙƯ Ð ÜØ Ị× ĨỊ Ĩ Åĺ ÁỊ ƯÐ º ÙỊØ Ư Ị ÂĨ Ị º Å ỉ ééá ỉểệìá è ểệ ỉ é ìễ ỉì ầ ầ ỉạầệ ềỉ ẩệểạ ệ ẹẹ ề èíễ ìá Ë Đ ỊØ × Ị Ä Ị Ù × Ịº è ẩệ ììá ẵ ệ ấ ẹí ề ệểẹ ẻể ééểề ầ ỉ ề ô ỉ ể ỉạểệ ềỉ ĩỉ ềì ểề ỉể è ểệí ề ẩệ ỉ ể ầ ỉ ậíìỉ ẹìá ẵà ắ ò ẳá ẵ ễệ é ẹ ề ƯÝ Ú Ư× ĨỊ ƠƠ Ư Ị Ø ƠƯĨ Ị × Ĩ Ø ¾ Ø Å ĨỊ Ư Ị ĨỊ ÈƯ Ị ƠÐ × Ĩ ÈƯĨ Ư ĐĐ Ị Ä ề ìá ẵ ể ề ấ ÝỊĨР׺ Ì ĨƯ × Ĩ ÈƯĨ Ư ĐĐ Ị Ä Ị ٠׺ Đ Ư ÍỊ Ú Ư× ØÝ ẩệ ììá ẵ ểề ấ ề ệ ×ØĨƠ Ư º ËØĨỊ º ÈƯ Ú Ý Ú ×Ù ×ÙĐỜ ĨỊº Ì ĨƯÝ Ị ÈƯ Ø Ĩ Ç Ø ậíìỉ ẹìá ẵ é ể ẻ ấììể èíễ ì ểệ ẹể é ì ẩ ỉ ì ìá ề ệì ỉí ể ề ệ ẵ º Ë ĐĨỊ Ì ĨĐƠ×ĨỊº À × ÐÐ Ø Ư Ø Ĩ ÙỊ Ø ĨỊ Ð ƠƯĨ Ư ĐĐ Ị ìểềạẽ ìé íá ẵ ệểẹ ẻể ÐÐĨỊº ĨĐ Ị Ị ×Ù ×ÙĐỜ ĨỊ Ị Ị ƯÝ Đ Ø Ĩ × Ị Ĩ Ø Ð ÙÐÙ× Û Ø Ú Û׺ ÁỊ Å ËÝĐƠĨ× ÙĐ ĨỊ ÈƯ Ị ƠÐ × Ĩ ÈƯĨ Ư ĐĐ Ị Ä Ị Ù ì ẩệ ììá ắẳẳẳ ẳ ệểẹ ẻể ééểề ĨỊ Ờ ĨỊ Ø Ư Ð × Ø ĨỊ ³ÙỊ ÜØ Ị× ĨỊ Ù Ð Ị ÅÄ Ú × Ĩ ỉì è ể ỉểệ ỉá ề ệì ỉ ẩ ệ ì ầ ỉể ệ ắẳẳẳ ẵ ỉ ÐÐ Ï Ị º ĨĐƠÐ Ø ØÝƠ Ị Ư Ị ểệ ì ẹễé ể ỉì ề ệ ìá ỉểệá Ë ĨỊ ËÝĐƠĨ× ÙĐ ĨỊ ÄĨ ÁỊ ĨĐỚØ Ư Ë ề ễ ì ắẳ òắ ỉ ặ ểệ ề ẵ ểẹễỉ ệ ậể ỉí ẩệ ìì ắ ẩ ệệ ẽ ì ề ệ ệểí é ề ẹé ềể ẵ º ¿º ÂĨ º Ï ÐÐ׺ ÌÝƠ Ð ØÝ Ị ØÝƠ Ị Ị ×Ý×Ø Đ Ư ÕÙ Ú Ð ỊØ ề ề é ềề éì ể ẩệ ề ễễé ể ẵòà ẵẵẵòẵ ẵ ề Ư Û Ãº ÏƯ Ø Ị Å ØØ × ÐÐ × Ịº ×ÝỊØ Ø ƠƠƯĨ ØĨ ØÝƠ ×ĨÙỊ Ị ×׺ ề ểệẹ ỉ ểề ề ểẹễỉ ỉ ểềá ẵẵ ẵà ò ẵ 534 Didier Remy List of All Exercises ậ ỉ ểề ắ ẵá ẵ ắá ắẵ ẳ ẳ ắ á á ẵẳá ẵẵá ẵắá ảả ả ả ả ¶¶ ¶ ¶ ¶¶ ¶ ¶ ¶¶ ¶¶ Ê ƠƯ × ỊØ Ị Ú ÐÙ Ø ĨỊ ĨỊØ ÜØ× ÈƯĨ ệ ìì ề é ẹ é éì ẩệ ềỉ Ư ĨƯ Ý Ð ØÝƠ × Ư ØÝƠ Ú Ư Ð × ĨƯ Ư ÙƯ× Ú ØÝƠ × Ị Ư éị é ệ é ì ặểề ỉíễ é ỉí ể ơĩạễể ềỉ ì ề ỉ ơĩ ễể ềỉ ểẹ ề ỉểệ èíễ ìểề ề ìì ể ỉ ơĩạễể ềỉ ểẹ ề ỉểệ éỉ ễé ệ ệì ơề ỉ ểềì ĩạễể ềỉ ỉ ệ ệì ỉíễ ì ÈƯ ỊØ Ị Ư ÙƯ× Ú ØÝƠ × Ä Đ ¹ Ð ÙÐÙ× Û Ø Ư ÙƯ× Ú ØÝƠ × ¶¶ ¶¶¶ ¶¶ ¶ ¶¶¶ ¶¶ ¶ ¶¶ ¶¶ ¶¶ Å Ø Ị Ư × ÌÝƠ ×ĨÙỊ Ị ×× ĨƯ ỉ ạỉíễ ì ỉ ạỉíễ ơề ỉ ểềì ểểé ềì × Ø ØÝƠ ¬Ị Ø ĨỊ× È Ư× × Ø ỉíễ ơề ỉ ểềì ấ ệì ểề ỉ ỉ ỉíễ ì ỉ ééí ệ ệì ơề ỉ ểềì Ĩ Ê ÙƯ× ĨỊ Û Ø Ư Ư Ị × ÌÝƠ ×ĨÙỊ Ị ×× Ĩ Ü Ờ ĨỊ× Ê ÙƯ× ểề ỉ ĩ ễỉ ểềì ả ảả ảảả ảả ¶¶ ¶¶ Ë Ð ØÝƠ × ÙƠ× ÄĨ Ư Ø ẹ ễì ầ ỉạểệ ềỉ ìỉệ ề ì ầ ỉ ỉíễ ì ề ỉ ểề ểệ ể ỉ ỉíễ × ÈƯĨ Ø ØÝƠ Ị Ư Ị ĨƯ Ĩ ÈƯĨ ỉ ỉ ỉểểé ỉ ậ ỉ ểề ẵá ½ ¸ ½ ¸ ½ ¸ ½ ¸ ½ ¸ ẵ ắẳá ắẵá ắắá ẳ ẳ ẳ ẳ ẵ ắ ệ ỉ ểềì ậ ỉ ểề ắá ¾ ¸ ¾ ¸ ¾ ¸ ¾ ¸ ¾ ¸ ẳ ắ ẳá ậ ỉ ểề ẵá ẩểéíềểẹ éì Û Ø ĨỊ Ú Ư Ð Ø× Using, Understanding, and Unraveling the OCaml Language ậ ỉ ểề ắá ẩệể ỉ ×Đ ÐÐ ×Ù × Ø Ĩ Ø ƠƠ Ị Ü ắ ¶ ¶ ¶¶ ¶¶ ÍỊ Ü ĨĐĐ Ị × ØỨ Ị Ð× ÍỊ Ü ĨĐĐ Ị Ĩ ÍỊ Ü Ø Ị Ư Ơ ĨĐĐ Ị × ÍỊ Ü Û ĨĐĐ Ị Ç Ð Ư ƯÝ 535 536 Didier R´emy ÁỊ ề ệí ẹ ỉ ể ìá ẵ ẵ éểề ề ẵ ẳ éểìệ ìá ẵắ é ỉ ểề ééạ íạề ẹ ẵắẵ ééạ íạ é ẵẵ ểềỉ ĩỉá ẵẵ ẹễé ẹ ềỉ ỉ ểềá ẵẵ ơĩạễể ềỉá ì ệ ệì ểề ề ệ ề ệé ẵắ é ỉ ề ề áẵ ẹ ỉ ỉ ẵ ẹỉ é ééìá ẵ ể ỉơ é áẵ ẳ ệ ểệ é ẵ ề ỉệ é ì ẹ ềỉ ìá ẵắ ềểềạ ỉ ệẹ ề ìẹá ẵắ ểễ ệ ỉ ểề é ì ẹ ềỉ ì ạìỉ ễá ẵắ ể ệệ ề ẵ ẳ ễ ỉỉ ệề ẹ ỉ ề ẵ ễểéíẹểệễ ệ ệì ểềá ẵ ẵ ệ ệì ểềá ẵ ẹỉ éá ẵ ẳ ỉ ĩ ễỉ ểềìá ẵ ĩ ỉ ệ ệì ỉíễ ìá ẵ ẵ ỉ ệ ệ ề ìá ẵ ắ ệ ệì ỉíễ ìá ẵ ệ ĩá ẵẵ ệ ỉ ểềá ẵẵ ì ẹ ềỉ ì ạìỉ ễá ẵẵ ề ề ệ éá ẵẵ ểễ ệ ỉ ểề éá ẵẵ ìẹ ééạìỉ ễá ẵẵ ì ô ỉìá ì ẹỉ é ìỉểệ ì ẹỉ é ỉíễ ệ ỉ ểềìá ẵ ềể ỉ ỉíễ ìá ẵ ẵ ỉíễ ề é ìì ìá ẵ ểệ ẵ ề ệểềẹ ềỉá ẵắ ĩ ễỉ ểềìá ẵ ẹ ềỉìá ẵắ ẹ ìì ìá ẵ ễểéíẹểệễ ìẹá ẵ ệ ệ ề ìá ẵ ắ ì ẹễé ỉíễ ìá ẵắ é ìá ½½ ... 462 465 465 468 472 474 478 482 Using, Understanding, and Unraveling the OCaml Language 415 The Module Language 487 5.1 5.2 5.3 Using Modules ... ỉíễ ề ểệẹ ề ẵ ề ½ Ịغ ÙỪ ƯĐĨƯ ¸ Using, Understanding, and Unraveling the OCaml Language ×ĨĐ ÜƠÐ Û × ÐÐ Ø ØÝƠ Ĩ ỊỊĨØ Ø ĨỊ× Ị Ð×Ĩ Ị Ị Ị Û 453 ĨỊ×Ø ỊØ׺ º º × ÐĨÛº Further Reading Ê Ư Ị ĨØ ĨĨ × ĨỊ... ỉểệì ề ểềìỉ ềỉ ệ ỉíễ ô ô ẵ ô µ Ị « Using, Understanding, and Unraveling the OCaml Language Ị Ì ×ÝỊØ Ø ×Ù Ư × ØĨ ÛƯ Ø ề ẵ ẵ ẵ ề ề ềìỉ 459 ể Ò 3.2 Mutable Storage and Side Effects Ì ÐÒÙ Û Ú ×Ư ×Ĩ

Ngày đăng: 07/09/2020, 15:36

Mục lục

  • 2.2 The Syntax of Core ML

  • 2.3.2 Properties of the reduction

  • 2.4.3 Unification for simple types

  • 3.1.2 Formalization of superficial pattern matching

  • 3.2 Mutable Storage and Side Effects

    • 3.2.1 Formalization of the store

    • 4.1.2 Polymorphism, subtyping, and parametric classes

    • 4.3 Advanced Uses of Objects

    • 5.3 Advanced Uses of Modules

    • 6.2 Combining Modules and Classes

      • 6.2.1 Classes as module components

      • Appendix A

        • First Steps in OCaml

        • Appendix C

          • Answers to Exercises

          • List of All Exercises

Tài liệu cùng người dùng

Tài liệu liên quan