Spaces:
Sleeping
Sleeping
| { | |
| "doc_name": "four-lectures.pdf", | |
| "structure": [ | |
| { | |
| "title": "Preface", | |
| "start_index": 1, | |
| "end_index": 1, | |
| "node_id": "0000" | |
| }, | |
| { | |
| "title": "ML at a Glance", | |
| "start_index": 2, | |
| "end_index": 2, | |
| "nodes": [ | |
| { | |
| "title": "An ML session", | |
| "start_index": 2, | |
| "end_index": 3, | |
| "node_id": "0002" | |
| }, | |
| { | |
| "title": "Types and Values", | |
| "start_index": 3, | |
| "end_index": 4, | |
| "node_id": "0003" | |
| }, | |
| { | |
| "title": "Recursive Functions", | |
| "start_index": 4, | |
| "end_index": 4, | |
| "node_id": "0004" | |
| }, | |
| { | |
| "title": "Raising Exceptions", | |
| "start_index": 4, | |
| "end_index": 5, | |
| "node_id": "0005" | |
| }, | |
| { | |
| "title": "Structures", | |
| "start_index": 5, | |
| "end_index": 6, | |
| "node_id": "0006" | |
| }, | |
| { | |
| "title": "Signatures", | |
| "start_index": 6, | |
| "end_index": 7, | |
| "node_id": "0007" | |
| }, | |
| { | |
| "title": "Coercive Signature Matching", | |
| "start_index": 7, | |
| "end_index": 8, | |
| "node_id": "0008" | |
| }, | |
| { | |
| "title": "Functor Declaration", | |
| "start_index": 8, | |
| "end_index": 9, | |
| "node_id": "0009" | |
| }, | |
| { | |
| "title": "Functor Application", | |
| "start_index": 9, | |
| "end_index": 9, | |
| "node_id": "0010" | |
| }, | |
| { | |
| "title": "Summary", | |
| "start_index": 9, | |
| "end_index": 9, | |
| "node_id": "0011" | |
| } | |
| ], | |
| "node_id": "0001" | |
| }, | |
| { | |
| "title": "Programming with ML Modules", | |
| "start_index": 10, | |
| "end_index": 10, | |
| "nodes": [ | |
| { | |
| "title": "Introduction", | |
| "start_index": 10, | |
| "end_index": 11, | |
| "node_id": "0013" | |
| }, | |
| { | |
| "title": "Signatures", | |
| "start_index": 11, | |
| "end_index": 12, | |
| "node_id": "0014" | |
| }, | |
| { | |
| "title": "Structures", | |
| "start_index": 12, | |
| "end_index": 13, | |
| "node_id": "0015" | |
| }, | |
| { | |
| "title": "Functors", | |
| "start_index": 13, | |
| "end_index": 14, | |
| "node_id": "0016" | |
| }, | |
| { | |
| "title": "Substructures", | |
| "start_index": 14, | |
| "end_index": 15, | |
| "node_id": "0017" | |
| }, | |
| { | |
| "title": "Sharing", | |
| "start_index": 15, | |
| "end_index": 16, | |
| "node_id": "0018" | |
| }, | |
| { | |
| "title": "Building the System", | |
| "start_index": 16, | |
| "end_index": 17, | |
| "node_id": "0019" | |
| }, | |
| { | |
| "title": "Separate Compilation", | |
| "start_index": 17, | |
| "end_index": 18, | |
| "node_id": "0020" | |
| }, | |
| { | |
| "title": "Good Style", | |
| "start_index": 18, | |
| "end_index": 18, | |
| "node_id": "0021" | |
| }, | |
| { | |
| "title": "Bad Style", | |
| "start_index": 18, | |
| "end_index": 19, | |
| "node_id": "0022" | |
| } | |
| ], | |
| "node_id": "0012" | |
| }, | |
| { | |
| "title": "The Static Semantics of Modules", | |
| "start_index": 20, | |
| "end_index": 20, | |
| "nodes": [ | |
| { | |
| "title": "Elaboration", | |
| "start_index": 20, | |
| "end_index": 21, | |
| "node_id": "0024" | |
| }, | |
| { | |
| "title": "Names", | |
| "start_index": 21, | |
| "end_index": 21, | |
| "node_id": "0025" | |
| }, | |
| { | |
| "title": "Decorating Structures", | |
| "start_index": 21, | |
| "end_index": 21, | |
| "node_id": "0026" | |
| }, | |
| { | |
| "title": "Decorating Signatures", | |
| "start_index": 22, | |
| "end_index": 23, | |
| "node_id": "0027" | |
| }, | |
| { | |
| "title": "Signature Instantiation", | |
| "start_index": 23, | |
| "end_index": 24, | |
| "node_id": "0028" | |
| }, | |
| { | |
| "title": "Signature Matching", | |
| "start_index": 24, | |
| "end_index": 25, | |
| "node_id": "0029" | |
| }, | |
| { | |
| "title": "Signature Constraints", | |
| "start_index": 25, | |
| "end_index": 25, | |
| "node_id": "0030" | |
| }, | |
| { | |
| "title": "Decorating Functors", | |
| "start_index": 26, | |
| "end_index": 26, | |
| "node_id": "0031" | |
| }, | |
| { | |
| "title": "External Sharing", | |
| "start_index": 26, | |
| "end_index": 27, | |
| "node_id": "0032" | |
| }, | |
| { | |
| "title": "Functors with Arguments", | |
| "start_index": 27, | |
| "end_index": 28, | |
| "node_id": "0033" | |
| }, | |
| { | |
| "title": "Sharing Between Argument and Result", | |
| "start_index": 28, | |
| "end_index": 28, | |
| "node_id": "0034" | |
| }, | |
| { | |
| "title": "Explicit Result Signatures", | |
| "start_index": 28, | |
| "end_index": 29, | |
| "node_id": "0035" | |
| } | |
| ], | |
| "node_id": "0023" | |
| }, | |
| { | |
| "title": "Implementing an Interpreter in ML", | |
| "start_index": 30, | |
| "end_index": 32, | |
| "nodes": [ | |
| { | |
| "title": "Version 1: The Bare Typechecker", | |
| "start_index": 32, | |
| "end_index": 33, | |
| "node_id": "0037" | |
| }, | |
| { | |
| "title": "Version 2: Adding Lists and Polymorphism", | |
| "start_index": 33, | |
| "end_index": 37, | |
| "node_id": "0038" | |
| }, | |
| { | |
| "title": "Version 3: A Different Implementation of Types", | |
| "start_index": 37, | |
| "end_index": 39, | |
| "node_id": "0039" | |
| }, | |
| { | |
| "title": "Version 4: Introducing Variables and Let", | |
| "start_index": 39, | |
| "end_index": 43, | |
| "node_id": "0040" | |
| }, | |
| { | |
| "title": "Acknowledgement", | |
| "start_index": 43, | |
| "end_index": 43, | |
| "node_id": "0041" | |
| } | |
| ], | |
| "node_id": "0036" | |
| }, | |
| { | |
| "title": "Appendix A: The Bare Interpreter", | |
| "start_index": 44, | |
| "end_index": 44, | |
| "nodes": [ | |
| { | |
| "title": "Syntax", | |
| "start_index": 44, | |
| "end_index": 44, | |
| "node_id": "0043" | |
| }, | |
| { | |
| "title": "Parsing", | |
| "start_index": 44, | |
| "end_index": 45, | |
| "node_id": "0044" | |
| }, | |
| { | |
| "title": "Environments", | |
| "start_index": 45, | |
| "end_index": 45, | |
| "node_id": "0045" | |
| }, | |
| { | |
| "title": "Evaluation", | |
| "start_index": 45, | |
| "end_index": 46, | |
| "node_id": "0046" | |
| }, | |
| { | |
| "title": "Type Checking", | |
| "start_index": 46, | |
| "end_index": 46, | |
| "node_id": "0047" | |
| }, | |
| { | |
| "title": "The Interpreter", | |
| "start_index": 46, | |
| "end_index": 47, | |
| "node_id": "0048" | |
| }, | |
| { | |
| "title": "The Evaluator", | |
| "start_index": 47, | |
| "end_index": 48, | |
| "node_id": "0049" | |
| }, | |
| { | |
| "title": "The Typechecker", | |
| "start_index": 48, | |
| "end_index": 49, | |
| "node_id": "0050" | |
| }, | |
| { | |
| "title": "The Basics", | |
| "start_index": 50, | |
| "end_index": 52, | |
| "node_id": "0051" | |
| } | |
| ], | |
| "node_id": "0042" | |
| }, | |
| { | |
| "title": "Appendix B: Files", | |
| "start_index": 53, | |
| "end_index": 53, | |
| "node_id": "0052" | |
| } | |
| ] | |
| } |