Mech Documentation
===============================================================================

1. Getting Started
-------------------------------------------------------------------------------

1. [Introduction](getting-started/introduction.html)
2. [Install Mech](getting-started/install.html)
3. [Build and Run Mech Programs](getting-started/build-and-run.html)
4. [Mech REPL](getting-started/repl.html) 
5. [Your First Mech Program](getting-started/first-program.html) `todo`

2. Platform Reference
-------------------------------------------------------------------------------

(2.1) Data Model

- [Data Types](/reference/data.html)
    - [`atom`](/reference/atom.html) - symbolic constants, often used for tags or enums
    - [`bool`](/reference/bool.html) - logical values for true and false
    - [`empty`](/reference/empty.html) - represents an absence of value
    - [`kind`](/reference/kind.html) - a category of values
    - [`number`](/reference/number.html) - numeric values, including integers and floating-point numbers
    - [`string`](/reference/string.html) - sequence of UTF-8 characters representing text
- Data Structures
    - [`map`](/reference/map.html) - stores key-value pairs for fast lookups
    - [`matrix`](/reference/matrix.html) - 2D array of homogenous values arranged in rows and columns
    - [`record`](/reference/record.html) - groups related fields, usually for representing structured data
    - [`set`](/reference/set.html) - unordered collection of unique values
    - [`table`](/reference/table.html) - collection of heterogeneous data organized into rows and columns
    - [`tuple`](/reference/tuple.html) - fixed-size, ordered grouping of heterogeneous values
- Statements and Expressions
    - [Defining, Assigning, and Accessing Data](/reference/define.html) `todo` - create data and change it
    - [Data Conversion](/reference/convert.html) `todo` - convert data from one kind to another
    - [Expression Broadcasting](/reference/broadcasting.html) - apply operations over data structures
    - [Indexing](/reference/indexing.html) - access elements within data structures

(2.2) Program Model

- [Functions](#) `todo`
- [Error Handling](#) `todo`
- [Comprehensions](#) `todo`
- [State Machines](#) `todo`
- [Synthesis and Generation](#) `todo`
- [Tests](#) `todo`
- [Programs](#) `todo`

(2.3) System Model

(i)> Coming `v0.4`

- Modules
- Capabilities
- Distributed Computation
- Concurrency

3. Mechdown Reference
-------------------------------------------------------------------------------

- Introduction
    - What is Mechdown? `todo`
    - Writing Mechdown Documents `todo`
    - Mechdown Syntax Overview `todo`
- Mechdown Documents `todo`
    - Sections and Subsections `todo`
    - Tables of Contents `todo`
    - Bredcrumbs `todo`
    - Document Metadata `todo`
- Document Elements
    - [Title](/mechdown/title.html)
    - [Paragraph](/mechdown/paragraph.html)
    - [List](/mechdown/list.html)
    - [Code Block](/mechdown/code-block.html)
    - [Table](/mechdown/table.html)
    - [Image](/mechdown/image.html)
    - [Thematic Break](/mechdown/thematic-break.html)
    - [Equation](/mechdown/equation.html)
    - [Callout Block](/mechdown/callout-block.html)
    - [Diagram](/mechdown/diagram.html)

4. Standard Library
-------------------------------------------------------------------------------

- [Assign](/stdlib/assign/index.html) `todo`
- [Access](/stdlib/access/index.html) `todo`
- [Combinatorics](/stdlib/combinatorics/index.html) `todo`
- [Compare](/stdlib/compare/index.html) `todo`
- [Convert](/stdlib/convert/index.html) `todo`
- [Io](/stdlib/io/index.html) `todo`
- [Logic](/stdlib/logic/index.html) `todo`
- [Math](/stdlib/math/index.html)
- [Matrix](/stdlib/matrix/index.html) `todo`
- [Range](/stdlib/range/index.html) `todo`
- [Set](/stdlib/set/index.html)
- [Stats](/stdlib/stats/index.html) `todo`
- [String](/stdlib/string/index.html) `todo`

5. Guides
-------------------------------------------------------------------------------

- [Mech in Fifteen Minutes](/guides/mech-in-fifteen-minutes.html)
- [Tutorials](/guides/tutorials.html) `todo`

6. Project Design Documents
-------------------------------------------------------------------------------

- [Platform Specification](/design/specification.html)
- [Design Principles](/design/design-principles.html)  `todo`
- [Syntax Design Notes](/design/syntax-design.html) `todo`
- [History](/design/history.html)  `todo`
- [Roadmap](/design/ROADMAP.html)

7. Examples
-------------------------------------------------------------------------------

- [Fizz Buzz](/examples/fizzbuzz.html) - a classic programming exercise that demonstrates the use of Mech's data model and operators.
- [N-Body Simulation](/examples/n-body.html) - a simulation of gravitational interactions between multiple bodies.
- [Extended Kalman Filter](/examples/ekf.html) - an implementation of the Extended Kalman Filter algorithm for state estimation.

```mech:hidden
document/index := {
  name: "docs" 
  version: "v0.3.0"
  authors: ["Corey Montella"] 
  machine-url: "https://gitlab.com/mech-lang/mech/docs"
  license: "Apache-2.0"}
```