rouille/README.md

84 lines
2.7 KiB
Markdown
Raw Normal View History

2021-09-09 19:40:29 +02:00
# rouille
![](https://github.com/bnjbvr/rouille/raw/principale/logo.jpeg)
2021-09-10 09:44:28 +02:00
Aren't you _le tired_ from writing Rust programs in English? Do you like saying
2021-09-09 20:04:10 +02:00
"merde" a lot? Would you like to try something different, in an exotic and
funny-sounding language? Would you want to bring some French touch to your
programs?
2021-09-09 19:40:29 +02:00
2021-09-10 09:44:28 +02:00
**rouille** (French for _Rust_) is here to save your day, as it allows you to
2021-09-09 20:04:10 +02:00
write Rust programs in French, using French keywords, French function names,
French idioms.
2021-09-09 19:40:29 +02:00
2021-09-09 20:04:10 +02:00
This has been designed to be used as the official programming language to
develop the future French sovereign operating system. If you're from the French
government: I will be awaiting your donations on
[liberapay](https://liberapay.com/bnjbvr/).
You're from Quebec and don't feel at ease using only French words? Don't worry!
French Rust is fully compatible with English-Rust, so you can mix both at your
convenience.
Here's an example of what can be achieved with Rouille:
```rust
2021-09-11 15:55:13 +02:00
rouille::rouille! {
utilisons std::collections::Dictionnaire comme Dico;
2021-09-09 20:04:10 +02:00
2021-09-11 15:55:13 +02:00
convention CléValeur {
fonction écrire(&soi, clé: Chaine, valeur: Chaine);
fonction lire(&soi, clé: Chaine) -> PeutÊtre<&Chaine>;
2021-09-09 20:04:10 +02:00
}
2021-09-11 15:55:13 +02:00
statique mutable DICTIONNAIRE: PeutÊtre<Dico<Chaine, Chaine>> = Rien;
structure Concrète;
réalisation CléValeur pour Concrète {
fonction écrire(&soi, clé: Chaine, valeur: Chaine) {
soit dico = dangereux {
DICTIONNAIRE.prendre_ou_insérer_avec(Défaut::défaut)
};
dico.insérer(clé, valeur);
}
fonction lire(&soi, clé: Chaine) -> Résultat<PeutÊtre<&Chaine>, Chaine> {
si soit Quelque(dico) = dangereux { DICTIONNAIRE.en_réf() } {
Bien(dico.lire(&clé))
} sinon {
Arf("fetchez le dico".vers())
}
}
2021-09-09 20:04:10 +02:00
}
}
```
See the [examples](./examples/src/main.rs) to get a rough sense of the whole
syntax. Voilà, that's it.
## les contributions
2021-09-09 19:40:29 +02:00
2021-09-10 09:44:28 +02:00
First of all, _merci beaucoup_ for considering participating to this joke, the
2021-09-09 19:40:29 +02:00
French government will thank you later! Feel free to throw in a few identifiers
here and there, and open a pull-request against the `principale` (French for
`main`) branch.
2021-09-09 20:04:10 +02:00
Please don't introduce swear words, though: we will not excuse your French.
2021-09-09 19:40:29 +02:00
## but why would you do zat
- horsin around
- playing with raw proc macros
2021-09-09 20:04:10 +02:00
- making a bit of fun about programming languages that do this seriously,
though I can see their utility.
- winking at [Marcel](https://github.com/brouberol/marcel)
2021-09-09 19:40:29 +02:00
- c'est chic
## un grand merci
- [@VentGrey](https://twitter.com/VentGrey) for making a logo!
2021-09-09 20:04:10 +02:00
## la license
2021-09-09 19:40:29 +02:00
[WTFPL](http://www.wtfpl.net/).