Démarrage Express — 2 Minutes
Objectif : absorber 80% de Catnip avant que ton café ne refroidisse. Deux minutes. Pas plus. Pas moins. Juste la dose.
1. Variables & Calculs — la base dimensionnelle
voltage = 42
entropy = voltage * 2
print(entropy) # 84
Catnip applique exactement ce que tu écris : assignation, calcul, résultat. Pas d’esthétique superflue.
La beauté vient après, jamais avant.
2. Lambdas — forme compacte, impact maximal
amp = (signal) => { signal * 2 }
amp(21) # 42
Une lambda Catnip :
- se définit vite
- retourne la dernière expression
- capture son scope
- se fiche totalement de la dimension du signal
Une lambda nommée perd son anonymat, mais pas sa nature. Dans Catnip, l’identité ne vient pas du nom mais de la forme.
3. Boucles — direct, sans décor
For loop
for i in range(1, 6) {
print(i)
}
While loop
tic = 0
while tic < 3 {
print("Tick:", tic)
tic = tic + 1
}
Des boucles simples, sans magie : le comportement est celui que tu attends, exactement.
4. Conditions — le tri logique le plus sobre possible
age = 25
if age < 18 {
print("Mineur")
} else {
print("Adulte")
}
Aucune ambiguïté, aucune indentation capricieuse. Les blocs sont explicites et retournent leur dernière valeur si utilisés comme expressions.
5. Pattern Matching — la machine de tri universelle
pulse = read_sensor()
match pulse {
0 => { print("No signal — sector offline") }
n if n < 0 => { print("Reverse flux:", n) }
n if n > 100 => { print("Overload detected:", n) }
_ => { print("Nominal:", pulse) }
}
Le wildcard _ capture tout ce que tu n’avais pas anticipé — y compris toi-même.
Le match remplace les cascades de if/elif. Et remplace aussi les migraines.
Premier Script Complet
Crée born_to_segfault.cat :
# Fonction lambda
hello = (nom) => {
print("BORN TO SEGFAULT", nom, "!")
}
hello("Monde")
for robot in range(1, 4) {
print("Compteur:", robot)
}
Exécute :
catnip born_to_segfault.cat
Tu viens d’écrire ton premier programme Catnip. Dimension-agnostique, simple, propre, sans bruit.
Et Après ?
C’est-à-dire que tu connais maintenant les cinq primitives qui permettent de construire n’importe quel programme — y compris un programme qui génère ce guide, qui pourrait lui-même générer un guide expliquant comment générer des guides. À partir d’ici, il s’agit seulement de combiner ces cinq éléments dans des configurations de moins en moins absurdes jusqu’à obtenir quelque chose d’utile.
Teaser : Broadcasting Dimension-Agnostique
(Le vrai superpouvoir, mais en 5 secondes seulement.)
result = list(1, 2, 3).[* 2]
# → list(2, 4, 6)
Même expression pour :
- un scalaire
- une liste
- un tensor
- une colonne entière de DataFrame
- et probablement des choses encore non inventées
Une seule forme de code pour tous les univers parallèles. Schrödinger aurait adoré.
Prochaine étape
Tu maîtrises maintenant :
- variables
- lambdas
- boucles
- conditions
- pattern matching
Tu es à 60% de Catnip. Les 40% restants tiennent dans le guide suivant :