on master help sign in
Merge pull request #4794 from martinbaker/mydoc2

Rearrange Documentation for Elaborator Reflection

commit7690efbe38f0e11e87e46ec6e4a21edf6e566fc5 authorNiklas Larsson <metaniklas@gmail.com> dateSat 21 Dec 2019, 13:36 (7 years ago) parent4d8d85d75e2f82
12 files changed+49−16
docs/proofs/elabReflection.rst → docs/elaboratorReflection/elabReflection.rst docs/reference/elaborator-reflection.rst → docs/elaboratorReflection/elaborator-reflection.rst+11−5 docs/proofs/example1.rst → docs/elaboratorReflection/example1.rst docs/proofs/generatingData.rst → docs/elaboratorReflection/generatingData.rst docs/proofs/holes.rst → docs/elaboratorReflection/holes.rst docs/elaboratorReflection/index.rst+27 docs/proofs/primitive.rst → docs/elaboratorReflection/primitive.rst docs/proofs/tactics.rst → docs/elaboratorReflection/tactics.rst docs/index.rst+1 docs/proofs/index.rst+4−9 docs/reference/index.rst−1 docs/reference/language-extensions.rst+6−1
docs/proofs/elabReflection.rst → docs/elaboratorReflection/elabReflection.rstrenamed

The content is the same.

docs/reference/elaborator-reflection.rst → docs/elaboratorReflection/elaborator-reflection.rstrenamed+11−5
@@ -1,8 +1,8 @@
11.. _elaborator-reflection:
22
3−*********************
4−Elaborator Reflection
5−*********************
3+**********************************
4+Elaborator Reflection Introduction
5+**********************************
66
77The Idris elaborator is responsible for converting high-level Idris code into the core language.
88It is implemented as a kind of embedded tactic language in Haskell, where tactic scripts are written in an *elaboration monad* that provides error handling and a proof state.
@@ -198,6 +198,12 @@ This is primarily useful for code generation, particularly for generating patter
198198
199199Learn More
200200==========
201−While this documentation is still incomplete, elaboration reflection works in Idris today.
202−As you wait for the completion of the documentation, the list of built-in tactics can be obtained using the ``:browse`` command in an Idris REPL or the corresponding feature in one of the graphical IDE clients to explore the ``Language.Reflection.Elab.Tactics`` namespace.
201+
202+Some tactics are introduced in the :ref:`proofs-index` section with further details, of those most relevant to elaborator reflection, on the following pages.
203+
204+The list of built-in tactics can be obtained using the ``:browse`` command in an Idris REPL or the corresponding feature in one of the graphical IDE clients to explore the ``Language.Reflection.Elab.Tactics`` namespace.
203205All of the built-in tactics contain documentation strings.
206+
207+For alternative ways to extend the Idris language see the :ref:`reference-index` section.
208+
209+The following pages explain more about the theory and practice of elaborator reflection.
docs/proofs/example1.rst → docs/elaboratorReflection/example1.rstrenamed

The content is the same.

docs/proofs/generatingData.rst → docs/elaboratorReflection/generatingData.rstrenamed

The content is the same.

docs/proofs/holes.rst → docs/elaboratorReflection/holes.rstrenamed

The content is the same.

docs/elaboratorReflection/index.rstnew file+27
@@ -0,0 +1,27 @@
1+.. _elaborator-index:
2+
3+#####################
4+Elaborator Reflection
5+#####################
6+
7+A tutorial on theorem proving in Idris.
8+
9+.. note::
10+
11+ The documentation for Idris has been published under the Creative
12+ Commons CC0 License. As such to the extent possible under law, *The
13+ Idris Community* has waived all copyright and related or neighboring
14+ rights to Documentation for Idris.
15+
16+ More information concerning the CC0 can be found online at: http://creativecommons.org/publicdomain/zero/1.0/
17+
18+.. toctree::
19+ :maxdepth: 1
20+
21+ elaborator-reflection
22+ elabReflection
23+ tactics
24+ holes
25+ example1
26+ primitive
27+ generatingData
docs/proofs/primitive.rst → docs/elaboratorReflection/primitive.rstrenamed

The content is the same.

docs/proofs/tactics.rst → docs/elaboratorReflection/tactics.rstrenamed

The content is the same.

docs/index.rst+1
@@ -24,5 +24,6 @@ Documentation for the Idris Language
2424 st/index
2525 effects/index
2626 proofs/index
27+ elaboratorReflection/index
2728 reference/index
2829 guides/index
docs/proofs/index.rst+4−9
@@ -1,8 +1,8 @@
11.. _proofs-index:
22
3−#########################################
4−Theorem Proving and Elaborator Reflection
5−#########################################
3+###############
4+Theorem Proving
5+###############
66
77A tutorial on theorem proving in Idris.
88
@@ -25,9 +25,4 @@ A tutorial on theorem proving in Idris.
2525 propositional
2626 interactive
2727 interactiveOld
28− elabReflection
29− tactics
30− holes
31− example1
32− primitive
33− generatingData
28+
docs/reference/index.rst−1
@@ -36,7 +36,6 @@ This will tell you how Idris works, for using it you should read the Idris Tutor
3636 internals
3737 language-features
3838 language-extensions
39− elaborator-reflection
4039 type-directed-search
4140 partial-evaluation
4241 misc
docs/reference/language-extensions.rst+6−1
@@ -3,7 +3,6 @@ Language Extensions
33*******************
44
55
6−
76Type Providers
87===============
98
@@ -34,3 +33,9 @@ repository <https://github.com/david-christiansen/idris-type-providers>`__.
3433More detailed descriptions are available in David Christiansen's `WGP
3534'13 paper <http://dx.doi.org/10.1145/2502488.2502495>`__ and `M.Sc.
3635thesis <http://itu.dk/people/drc/david-christiansen-thesis.pdf>`__.
36+
37+Elaborator Reflection
38+=====================
39+
40+Another way to extend the language is elaborator reflection which is described
41+in the :ref:`elaborator-index` section.