PageIndex/examples/documents/results/four-lectures_structure.json

333 lines
7.5 KiB
JSON
Raw Normal View History

2025-04-04 10:18:20 +08:00
{
"doc_name": "four-lectures.pdf",
"structure": [
{
2025-04-06 19:37:40 +08:00
"title": "Preface",
2025-04-04 10:18:20 +08:00
"start_index": 1,
"end_index": 1,
2025-04-06 19:37:40 +08:00
"node_id": "0000"
},
{
"title": "ML at a Glance",
"start_index": 2,
"end_index": 2,
2025-04-04 10:18:20 +08:00
"nodes": [
{
2025-04-06 19:37:40 +08:00
"title": "An ML session",
2025-04-04 10:18:20 +08:00
"start_index": 2,
2025-04-06 19:37:40 +08:00
"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"
2025-04-04 10:18:20 +08:00
}
],
2025-04-06 19:37:40 +08:00
"node_id": "0001"
2025-04-04 10:18:20 +08:00
},
{
"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,
2025-04-06 19:37:40 +08:00
"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"
}
],
2025-04-04 10:18:20 +08:00
"node_id": "0042"
},
{
"title": "Appendix B: Files",
"start_index": 53,
"end_index": 53,
2025-04-06 19:37:40 +08:00
"node_id": "0052"
2025-04-04 10:18:20 +08:00
}
]
}