We've inherited Agda's documentation in the repo. I haven't stripped it of the branding yet. However, we could also take this as an opportunity to rewrite the documentation to be actual reference documentation, instead of the half-tutorial half-reference docs we have now.
amyliao
commented 2026年04月20日 14:24:22 +02:00
We've inherited Agda's documentation in the repo. I haven't stripped it of the branding yet. However, we could also take this as an opportunity to rewrite the documentation to be actual *reference* documentation, instead of the half-tutorial half-reference docs we have now.
amyliao
added this to the Initial release milestone 2026年04月20日 14:25:05 +02:00
amyliao
commented 2026年05月07日 23:56:45 +02:00
- In general I think there is very little purpose to tutorial-style content in the language reference (e.g. most of the module on records). A couple examples are fine, but the bulk of the content should be to the point, tuned for someone that wants to quickly clear something up. Tutorials can be in another section (or website...).
- Each section in the new docs should completely describe a feature, be it a part of the core type system or a form of top-level declaration. To an approximation, the following sections should be merged:
Function Types,Lambda Abstractions, andTelescopesUniverse Levels,Two-Level Type Theory,Prop, andSort SystemFunction Definitions,Coverage Checking,Termination Checking, andCopatternsAbstract definitionsandOpaque definitionsData TypesandPositivity Checking
- The
Cubical,Cubical compatibleandWithout Ksections all need to be rewritten to stop sounding like they're describing optional additions and not parts of the core language. In particular:Cubical compatiblecan just go entirely- The sections in
Without Kshould be moved to their respective pages:Restrictions on pattern matchingandRestrictions on termination checking→Function DefinitionsRestrictions on universe levels→Data Types
I also think that the docs should get a new top-level structure, but I'm unclear on what exactly it should look like. Maybe something like:
- Types and terms
- Function types
- Universes
- Built-in data types (
Nat,String, etc) - Syntactic sugar
- Implicit and instance arguments
- Metaprogramming???
- Declarations and definitions
- Function definitions
withabstraction
- Data types
- Record types
- Operator parsing,
syntaxdeclarations - Pattern synonyms
- Postulates
- Abstract and opaque definitions
- Modules
- Function definitions
Reorganizing like this would mean moving all of the command line options next to the things they control. I think the added locality is a good thing... Sphinx can still generate an index of all the options for quickly searching for one.
* In general I think there is very little purpose to tutorial-style content in the language reference (e.g. most of the module on records). A couple examples are fine, but the bulk of the content should be to the point, tuned for someone that wants to quickly clear something up. Tutorials can be in another section (or website...).
* Each section in the new docs should completely describe a feature, be it a part of the core type system or a form of top-level declaration. To an approximation, the following sections should be merged:
* `Function Types`, `Lambda Abstractions`, and `Telescopes`
* `Universe Levels`, `Two-Level Type Theory`, `Prop`, and `Sort System`
* `Function Definitions`, `Coverage Checking`, `Termination Checking`, and `Copatterns`
* `Abstract definitions` and `Opaque definitions`
* `Data Types` and `Positivity Checking`
* The `Cubical`, `Cubical compatible` and `Without K` sections all need to be rewritten to stop sounding like they're describing optional additions and not parts of the core language. In particular:
* `Cubical compatible` can just go entirely
* The sections in `Without K` should be moved to their respective pages:
+ `Restrictions on pattern matching` and `Restrictions on termination checking` → `Function Definitions`
+ `Restrictions on universe levels` → `Data Types`
I also think that the docs should get a new top-level structure, but I'm unclear on what exactly it should look like. Maybe something like:
* Types and terms
* Function types
* Universes
* Built-in data types (`Nat`, `String`, etc)
* Syntactic sugar
* Implicit and instance arguments
* Metaprogramming???
* Declarations and definitions
* Function definitions
+ `with` abstraction
* Data types
* Record types
* Operator parsing, `syntax` declarations
* Pattern synonyms
* Postulates
* Abstract and opaque definitions
* Modules
Reorganizing like this would mean moving all of the command line options next to the things they control. I think the added locality is a good thing... Sphinx can still generate an index of all the options for quickly searching for one.
amyliao
added the 2026年05月27日 17:29:38 +02:00
0 - type
discussion
label
Sign in to join this conversation.
No Branch/Tag specified
Labels
Clear labels
1 - scope
language
Backwards-compatible changes to the surface language, such as adding new features.
1 - scope
language change
Breaking changes to a documented part of the surface language. These should be documented and specifically called out in the changelog.
1 - scope
performance
Semantics-preserving performance work.
1 - scope
task
Changes that are not apparent to the user, e.g. developer documentation and refactors, which do not need to be documented.
A: dead-code
Dead code elimination and --save-metas.
A: errors
Reporting of error and warning messages.
A: highlighting
Highlighting during interaction & literate compilation
A: imports
Handling of imports and interface file de/serialization.
A: infra
Iinfrastructure (e.g. CI, developer documentation, the build system, or the repository itself)
A: instance
Instance declarations, arguments, and resolution
A: lhs
LHS checking, coverage checking, and clause compilation
A: modules
Declaration and instantiation of parametrised modules.
A: parallel
Parallel typechecking.
A: positivity
Positivity checking
A: printing
Pretty-printing, display forms, and the wording of diagnostic messages
A: records
Record declarations, record expressions and copattern matching
A: scoping
Scope checking (ConcreteToAbstract)
A: termination
Termination checking
0 - type
bug
Issues describing an incorrect behaviour in the project, typos in the documentation, etc.
0 - type
discussion
An issue raised to gather opinions on a proposed change, or a suggested language change.
0 - type
question
An issue raised to ask a question.
9 - status
duplicate
This issue or pull request already exists.
9 - status
info needed
More information is needed from the submitter to decide how to proceed with the issue report.
9 - status
invalid
The issue report or pull request does not describe an actual bug, or does otherwise does not meet the contributing guidelines.
good first issue
Interested in contributing? Get started here.
upstream
Related to an upstream repository, already reported there
No labels
1 - scope
language
1 - scope
language change
1 - scope
performance
1 - scope
task
A: dead-code
A: errors
A: highlighting
A: imports
A: infra
A: instance
A: lhs
A: modules
A: parallel
A: positivity
A: printing
A: records
A: scoping
A: termination
0 - type
bug
0 - type
discussion
0 - type
question
9 - status
duplicate
9 - status
info needed
9 - status
invalid
good first issue
upstream
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
1lab/mikan#3
Loading...
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?