1lab/mikan
13
52
Fork
You've already forked mikan
9

Documentation #3

Open
opened 2026年04月20日 14:24:22 +02:00 by amyliao · 1 comment

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.

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.
Author
Owner
Copy link
  • 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 checkingFunction Definitions
      • Restrictions on universe levelsData 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.

* 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.
Sign in to join this conversation.
No Branch/Tag specified
main
aliao/occurs-opt
aliao/rec-con
fix-license
aliao/oopsie
aliao/strengthen-iapply
No results found.
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
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
Reference in a new issue
1lab/mikan
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?