diff --git a/doc/1_KC3/1.1_Introduction.en.md b/doc/1_KC3/1.1_Introduction.en.md
index 00e45ab..d4dd902 100644
--- a/doc/1_KC3/1.1_Introduction.en.md
+++ b/doc/1_KC3/1.1_Introduction.en.md
@@ -1,4 +1,4 @@
-# 1 Introduction
+# 1.1 Introduction
KC3 is currently a programming language project, inspired by C, Elixir
and Common Lisp. It could be described as C with Elixir modules,
@@ -19,7 +19,7 @@ Supported architectures :
- sparc64
-## 1.1 Modules
+## 1.1.1 Modules
Everything in KC3 is in a module. A module is a namespace,
and is named with a symbol starting with a uppercase character.
@@ -35,7 +35,7 @@ The default module is `KC3`, which is defined as facts (triples)
in `lib/kc3/0.1/kc3.facts`.
-## 1.2 Data types
+## 1.1.2 Data types
Basic data types in KC3 are :
- Strings : `Str`, e.g. `"Hello, world !"`
@@ -63,3 +63,9 @@ Basic data types in KC3 are :
- Unquoted code: `Unquote`, e.g. `quote 1 + unquote(x)`
- Variables : `Var`, e.g. `?`
- Void : `Void`, e.g. `void`
+
+---
+
+Previous : [1 KC3](/doc/1_KC3)
+
+Next : [1.2 Integer](1.2_Integer)
diff --git a/doc/1_KC3/1.2_Integer.en.md b/doc/1_KC3/1.2_Integer.en.md
index 4b6b2b4..0858b38 100644
--- a/doc/1_KC3/1.2_Integer.en.md
+++ b/doc/1_KC3/1.2_Integer.en.md
@@ -1,6 +1,6 @@
-# 2 Integers
+# 1.2 Integer
-## 2.1 Small integers
+## 1.2.1 Small integers
IKC3 supports all C integer type sizes from `U8` (matching the C type `uint8_t`)
to `U64` (matching the C type `uint64_t`) for unsigned integers,
@@ -40,7 +40,7 @@ ikc3> type(18446744073709551615)
U64
```
-## 2.2 Large integers
+## 1.2.2 Large integers
IKC3 supports large integers and they are compatible with small integers.
Their type is `Integer` and can support numbers as large as memory allows.
@@ -53,9 +53,9 @@ Integer
```
-## 2.3 Operations on integers
+## 1.2.3 Operations on integers
-### 2.3.1 Operator `~`
+### 1.2.3.1 Operator `~`
Binary not.
@@ -74,7 +74,7 @@ ikc3> ~ (S16) 1
-2
```
-### 2.3.2 Operator `+`
+### 1.2.3.2 Operator `+`
Integer addition.
@@ -88,31 +88,31 @@ zero or a positive integer, and one. E.g.
etc.
```
-### 2.3.3 Operator `-`
+### 1.2.3.3 Operator `-`
Integer subtraction. Take an integer and remove another integer from it.
-### 2.3.4 Operator `*`
+### 1.2.3.4 Operator `*`
Integer multiplication. Init result to zero, add an integer `a` and
repeat `b` times.
-### 2.3.5 Operator `/`
+### 1.2.3.5 Operator `/`
Integer division. The inverse of multiplication :
for all integers `a` and `b` there is a couple `q` and `r` that satisfies
`a = b * q + r`. Integer division returns `q`.
-### 2.3.6 Operator `mod`
+### 1.2.3.6 Operator `mod`
Integer modulo. Returns `r` in the previous equation (see Operator `/`)
-### 2.3.7 Operator `<<`
+### 1.2.3.7 Operator `<<`
Left shift
-## 2.4 Examples
+## 1.2.4 Examples
```
ikc3> type(1)
@@ -126,3 +126,9 @@ ikc3> a * a
ikc3> a * a / 1000000000000000000000000000000000000000000000000000
10000000000000
```
+
+---
+
+Previous : [1.1 Introduction](1.1_Introduction)
+
+Next : [1.3 Map](1.3_Map)
diff --git a/doc/1_KC3/1.3_Map.en.md b/doc/1_KC3/1.3_Map.en.md
index 27cc576..e01b71c 100644
--- a/doc/1_KC3/1.3_Map.en.md
+++ b/doc/1_KC3/1.3_Map.en.md
@@ -1,4 +1,4 @@
-# 3 Map
+# 1.3 Map
KC3 maps are like Elixir maps, they are key-values enclosed in `%{}` :
@@ -40,3 +40,9 @@ ikc3> access(a, :id)
ikc3> access(a, :message)
"Hello, world !"
```
+
+---
+
+Previous : [1.2 Integer](1.2_Integer)
+
+Next : [1.4 Ratio](1.4_Ratio)
diff --git a/doc/1_KC3/1.4_Ratio.en.md b/doc/1_KC3/1.4_Ratio.en.md
index 0b889ce..c8486fd 100644
--- a/doc/1_KC3/1.4_Ratio.en.md
+++ b/doc/1_KC3/1.4_Ratio.en.md
@@ -1,4 +1,4 @@
-# 4 Ratio
+# 1.4 Ratio
Ratios are made with a couple of large integers : the numerator
which can be any number, and the denominator which has to be positive.
@@ -15,3 +15,9 @@ ikc3> 1/2 / 2/3
ikc3> 1/2 - 2/3
-1/6
```
+
+---
+
+Previous : [1.3 Map](1.3_Map)
+
+Next : [1.5 List](1.5_List)
diff --git a/doc/1_KC3/1.5_List.en.md b/doc/1_KC3/1.5_List.en.md
index 259d1b1..8fc46bd 100644
--- a/doc/1_KC3/1.5_List.en.md
+++ b/doc/1_KC3/1.5_List.en.md
@@ -1,4 +1,4 @@
-# 5 List
+# 1.5 List
Linked lists owning the data (each node contains a couple of tags :
one for data and one for next pointer.
@@ -19,7 +19,7 @@ the next list pointer is an arbitrary form. E.g. :
All these list formats are supported in pattern matching.
-## 5.1 Functions
+## 1.5.1 Functions
```
List List.map (List, Fn)
@@ -28,3 +28,9 @@ List List.map (List, Fn)
```
List List.reverse (List)
```
+
+---
+
+Previous : [1.4 Ratio](1.4_Ratio)
+
+Next : [1.6 Variable](1.6_Variable)
diff --git a/doc/1_KC3/1.6_Variable.en.md b/doc/1_KC3/1.6_Variable.en.md
index 7c38729..b9360c5 100644
--- a/doc/1_KC3/1.6_Variable.en.md
+++ b/doc/1_KC3/1.6_Variable.en.md
@@ -1,4 +1,4 @@
-# 6 Variables
+# 1.6 Variables
Variables in KC3 can be defined using the litteral value for a variable
which is always `?`. You can cast this litteral value and it will not
@@ -48,3 +48,9 @@ You can always reset an existing binding at will to another variable
litteral and another variable will be created for the same name and it
will be in a different memory location, settable once and then
read-only again so you can use it without locking.
+
+---
+
+Previous : [1.5 List](1.5_List)
+
+Next : [2 HTTPd](/doc/2_HTTPd)
diff --git a/doc/1_KC3/index.en.html b/doc/1_KC3/index.en.html
index da32613..e52905c 100644
--- a/doc/1_KC3/index.en.html
+++ b/doc/1_KC3/index.en.html
@@ -1,7 +1,7 @@
<div>
<div class="KC3-1">
<div>
- <br/>
+ <h1>1 KC3</h1>
<p>
<b>KC3</b> is a programming language with meta-programmation
and a graph database embedded into the language.
@@ -42,6 +42,13 @@
<li>sparc64</li>
</ul>
</p>
+ <hr/>
+ <p>
+ Previous : <a href="/doc/">Documentation</a>
+ </p>
+ <p>
+ Next : <a href="/doc/1_KC3/1.1_Introduction">1.1 Introduction</a>
+ </p>
</div>
</div>
</div>
diff --git a/doc/index.en.md b/doc/index.en.md
index 7638005..ecb9364 100644
--- a/doc/index.en.md
+++ b/doc/index.en.md
@@ -4,5 +4,7 @@ The KC3 programming language documentation.
## Index
-- [KC3](1%20KC3/) core language.
-- [HTTPd](2%20HTTPd/) web server.
+
+[KC3](1_KC3/) core language.
+
+[HTTPd](2_HTTPd/) web server.