Hash :
d41f2661
Author :
Thomas de Grivel
Date :
2025-05-18T20:36:15
fix doc nav and links
KC3 est actuellement un projet de langage de programmation inspiré du C, d’Elixir et de Common Lisp. Il pourrait être décrit comme du C avec des modules Elixir, du filtrage par motifs et un système d’objets sémantiques. L’idée est d’intégrer des modules, des fermetures, du filtrage par motifs, une base de données de graphes et de la métaprogrammation dans C99 avec un nombre extrêmement réduit de dépendances.
Systèmes d’exploitation pris en charge (dépendances supplémentaires) :
Architectures prises en charge :
Dans KC3, tout est contenu dans un module. Un module est un espace de noms et son nom est un symbole commençant par une majuscule. Par exemple, Sym et Str sont des noms de module valides.
Utilisez defmodule pour définir un module.
defmodule Test do
def one = 1
def double = fn (x) { x * 2 }
def add = cfn Tag "tag_add" (Tag, Tag, Result)
end
Chaque module peut définir un type, et un nom de module peut également être un nom de type si le module correspondant définit un type.
Utilisez defstruct pour définir un type de structure dans un module. La structure portera le même nom que le module.
ikc3> defmodule Test do
ikc3> defstruct [x: (F32) 0.0,
ikc3> y: (F32) 0.0]
ikc3> end
ikc3> a = %Test{}
%Test{x: (F32) 0.0,
y: (F32) 0.0}
ikc3> a.x
(F32) 0.0
ikc3> a.y
(F32) 0.0
Le module peut également inclure des définitions de constantes ou de fonctions pour opérer sur le type de module ou d’autres types.
Le module par défaut est KC3, défini comme des faits (triplets) dans lib/kc3/0.1/kc3.facts.
Les types de données de base dans KC3 sont :
—# 1.1 Introduction
KC3 est actuellement un projet de langage de programmation inspiré du C, d’Elixir et de Common Lisp. Il pourrait être décrit comme du C avec des modules Elixir, du filtrage par motifs et un système d’objets sémantiques. L’idée est d’intégrer des modules, des fermetures, du filtrage par motifs, une base de données de graphes et de la métaprogrammation dans C99 avec un nombre extrêmement réduit de dépendances.
Systèmes d’exploitation pris en charge (dépendances supplémentaires) :
Architectures prises en charge :
Dans KC3, tout est contenu dans un module. Un module est un espace de noms et son nom est un symbole commençant par une majuscule. Par exemple, Sym et Str sont des noms de module valides.
Utilisez defmodule pour définir un module. ##Exemple :
defmodule Test do
def one = 1
def double = fn (x) { x * 2 }
def add = cfn Tag "tag_add" (Tag, Tag, Result)
end
Chaque module peut définir un type, et un nom de module peut également être un nom de type si le module correspondant définit un type.
Utilisez defstruct pour définir un type de structure dans un module. La structure portera le même nom que le module.
ikc3> defmodule Test do
ikc3> defstruct [x: (F32) 0.0,
ikc3> y: (F32) 0.0]
ikc3> end
ikc3> a = %Test{}
%Test{x: (F32) 0.0,
y: (F32) 0.0}
ikc3> a.x
(F32) 0.0
ikc3> a.y
(F32) 0.0
Le module peut également inclure des définitions de constantes ou de fonctions pour opérer sur le type de module ou d’autres types.
Le module par défaut est KC3, défini comme des faits (triplets) dans lib/kc3/0.1/kc3.facts.
Les types de données de base dans KC3 sont :
Top : KC3 documentation
Previous : 1 KC3
Next : 1.02 Array
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
# 1.1 Introduction
KC3 est actuellement un projet de langage de programmation inspiré du C, d'Elixir
et de Common Lisp. Il pourrait être décrit comme du C avec des modules Elixir, du filtrage par motifs et un système d'objets sémantiques. L'idée est d'intégrer des modules, des fermetures, du filtrage par motifs, une base de données de graphes et de la métaprogrammation dans C99 avec un nombre extrêmement réduit de dépendances.
Systèmes d'exploitation pris en charge (dépendances supplémentaires) :
- BSD
- Linux (libbsd, libmd)
- MacOS X (libmd)
- Windows (MSys2)
Architectures prises en charge :
- aarch64 (arm64, Apple M1, Apple M2)
- amd64
- i386
- sparc64
## 1.1.1 Modules
Dans KC3, tout est contenu dans un module. Un module est un espace de noms et son nom est un symbole commençant par une majuscule. Par exemple, Sym et Str sont des noms de module valides.
Utilisez defmodule pour définir un module.
## Exemple :
```elixir
defmodule Test do
def one = 1
def double = fn (x) { x * 2 }
def add = cfn Tag "tag_add" (Tag, Tag, Result)
end
```
Chaque module peut définir un type, et un nom de module peut également être un nom de type si le module correspondant définit un type.
Utilisez defstruct pour définir un type de structure dans un module. La structure portera le même nom que le module.
## Exemple :
```elixir
ikc3> defmodule Test do
ikc3> defstruct [x: (F32) 0.0,
ikc3> y: (F32) 0.0]
ikc3> end
ikc3> a = %Test{}
%Test{x: (F32) 0.0,
y: (F32) 0.0}
ikc3> a.x
(F32) 0.0
ikc3> a.y
(F32) 0.0
```
Le module peut également inclure des définitions de constantes ou de fonctions pour opérer sur le type de module ou d’autres types.
Le module par défaut est KC3, défini comme des faits (triplets)
dans lib/kc3/0.1/kc3.facts.
## 1.1.2 Types de données
Les types de données de base dans KC3 sont :
- Chaînes : Str, par exemple "Bonjour tout le monde !"
- Symboles : Sym, par exemple :hello ou Hello
- Booléens : Booléen, vrai ou faux
- Nombres
- Entiers
- Petits entiers
- Petits entiers signés : S8, S16, S32, S64, Sw
- Petits entiers non signés : U8, U16, U32, U64, Uw
- Grands entiers : Entier
- Nombres rationnels (fractions d'entiers) : Rapport, par exemple -2/3
- Nombres à virgule flottante : F32, F64, F128
- Nombres complexes (i = √(-1)) : Complexe, par exemple 1 + i 2
- Listes : Liste, par exemple [1, 2, 3]
- Tuples : Tuple, par exemple {:ok, 123}
- Applications : Application, par exemple %{id: 1, login: "dx"}
- Structures : p. ex. %GL.Sphere{}
- Code entre guillemets : Guillemet, p. ex. guillemet 1 + 2
- Identifiants : Ident, p. ex. guillemet List.map
- Appel de fonction ou d'opérateur : Appel, p. ex. guillemet sqrt(1), guillemet 1 + 2
- Blocs de code : Bloc, p. ex. { 1 + 2; 3 + 4 }
- Fonction : Fn, p. ex. fn (x) { x * 2 }
- Fonction C : Cfn, p. ex. cfn Balise "tag_add" (Balise, Balise, Résultat)
- Code sans guillemets : Supprimer les guillemets, p. ex. guillemet 1 + supprimer les guillemets(x)
- Variables : Var, p. ex. ?
- Void : Void, p. ex. void
---# 1.1 Introduction
KC3 est actuellement un projet de langage de programmation inspiré du C, d'Elixir
et de Common Lisp. Il pourrait être décrit comme du C avec des modules Elixir, du filtrage par motifs et un système d'objets sémantiques. L'idée est d'intégrer des modules, des fermetures, du filtrage par motifs, une base de données de graphes et de la métaprogrammation dans C99 avec un nombre extrêmement réduit de dépendances.
Systèmes d'exploitation pris en charge (dépendances supplémentaires) :
- BSD
- Linux (libbsd, libmd)
- MacOS X (libmd)
- Windows (MSys2)
Architectures prises en charge :
- aarch64 (arm64, Apple M1, Apple M2)
- amd64
- i386
- sparc64
## 1.1.1 Modules
Dans KC3, tout est contenu dans un module. Un module est un espace de noms et son nom est un symbole commençant par une majuscule. Par exemple, Sym et Str sont des noms de module valides.
Utilisez defmodule pour définir un module.
##Exemple :
```elixir
defmodule Test do
def one = 1
def double = fn (x) { x * 2 }
def add = cfn Tag "tag_add" (Tag, Tag, Result)
end
```
Chaque module peut définir un type, et un nom de module peut également être un nom de type si le module correspondant définit un type.
Utilisez defstruct pour définir un type de structure dans un module. La structure portera le même nom que le module.
## Exemple :
```elixir
ikc3> defmodule Test do
ikc3> defstruct [x: (F32) 0.0,
ikc3> y: (F32) 0.0]
ikc3> end
ikc3> a = %Test{}
%Test{x: (F32) 0.0,
y: (F32) 0.0}
ikc3> a.x
(F32) 0.0
ikc3> a.y
(F32) 0.0
```
Le module peut également inclure des définitions de constantes ou de fonctions pour opérer sur le type de module ou d’autres types.
Le module par défaut est KC3, défini comme des faits (triplets)
dans lib/kc3/0.1/kc3.facts.
## 1.1.2 Types de données
Les types de données de base dans KC3 sont :
- Chaînes : Str, par exemple "Bonjour tout le monde !"
- Symboles : Sym, par exemple :hello ou Hello
- Booléens : Booléen, vrai ou faux
- Nombres
- Entiers
- Petits entiers
- Petits entiers signés : S8, S16, S32, S64, Sw
- Petits entiers non signés : U8, U16, U32, U64, Uw
- Grands entiers : Entier
- Nombres rationnels (fractions d'entiers) : Rapport, par exemple -2/3
- Nombres à virgule flottante : F32, F64, F128
- Nombres complexes (i = √(-1)) : Complexe, par exemple 1 + i 2
- Listes : Liste, par exemple [1, 2, 3]
- Tuples : Tuple, par exemple {:ok, 123}
- Applications : Application, par exemple %{id: 1, login: "dx"}
- Structures : p. ex. %GL.Sphere{}
- Code entre guillemets : Guillemet, p. ex. guillemet 1 + 2
- Identifiants : Ident, p. ex. guillemet List.map
- Appel de fonction ou d'opérateur : Appel, p. ex. guillemet sqrt(1), guillemet 1 + 2
- Blocs de code : Bloc, p. ex. { 1 + 2; 3 + 4 }
- Fonction : Fn, p. ex. fn (x) { x * 2 }
- Fonction C : Cfn, p. ex. cfn Balise "tag_add" (Balise, Balise, Résultat)
- Code sans guillemets : Supprimer les guillemets, p. ex. guillemet 1 + supprimer les guillemets(x)
- Variables : Var, p. ex. ?
- Void : Void, p. ex. void
---
Top : [KC3 documentation](../)
Previous : [1 KC3](./)
Next : [1.02 Array](1.02_Array)