-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
French - Basics/Containers #18
base: development
Are you sure you want to change the base?
Conversation
cf441f0
to
ba05b9d
Compare
71f00b2
to
8d109d2
Compare
Far from perfect but review and feedback are welcome, please and thanks in advance 😄 🙏 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was curious about the contents, so I went ahead and reviewed it since I was reading it anyway!
Sorry I wrote some reviews in French and some in English.
## Quand utiliser tel ou tel conteneur ? | ||
|
||
Voici une liste de pense-bêtes permettant de choisir le bon conteneur en fonction du contexte. | ||
L'objectif est mnémotechnique et fera surement plus sens après avoir lu les chapitres correspondants. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sûrement ?
|
||
## Utiliser les modules (_List_, _Set_, _Map_) | ||
|
||
Une fonctionnalité appréciable des modules _List_, _Set_ et _Map_ est leur _api_ identique (ou presque). Ainsi, l'utilisation de ces conteneurs est plus intuitive et plus simple à mémoriser, permettant un accès rapide à un large éventail d'outils pour un investissement relativement faible. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should acronyms/initialisms be capitalized? I'd suggest API
.
|
||
## _Tuples_ | ||
|
||
Les _tuples_ sont la première structure de données que vous allez découvrir en Haskell. C'est un conteneur simple, natif avec une syntaxe concise. Les champs sont référencés selon leurs positions. Théoriquement, Les _tuples_ peuvent contenir un nombre infini de champs, c'est ce qu'on appelle arité (_arity_). En réalité, les spécifications _Haskell Report_ n'imposent aux compilateurs (et interpréteurs) une taille minimale que de 15 champs (_15-tuple_). GHC supporte un nombre de champs allant jusqu'à 62 (_62-tuple_). Le nombre minimum de champs pour un _tuple_ est de 2 (_2-tuple_). C'est sur ce type que nous nous concentrerons étant donné qu'Haskell fournit de nombreuses fonctionnalités par défaut pour celui-ci. A titre d'exemple, voici un _tuple_ avec 8 champs (_8-tuple_). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe it's from being used to English these days, but even in French, I feel like an "Oxford comma" can help making sure that some non-existing connection between words is not accidentally confusing.
Applied here, "natif avec une syntaxe concise" could be "natif, avec une syntaxe concise". Open to discussion on this. :-)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"une taille minimale que de 15 champs"
This makes it sound to me like it's saying you only need to support tuples of size 15 and up. When it is trying to say that you need to support tuples of size 0 to at least 15. (though it's clarified in the very next sentence)
How about something along the lines of "n'imposent aux compilateurs [...] que de supporter jusqu'à au moins 15 champs" or something along those lines?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A titre d'exemple
À titre d'exemple ?
|
||
```haskell | ||
ghci> :t ('0', '1', '2', '3', '4', '5', '6', "8-tuple") | ||
('0', '1', '2', '3', '4', '5', '6', "8-tuple") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Kind of weird to 0-index here (I assume that's from the English version).
|
||
### Quand l'utiliser ? | ||
|
||
Un _tuple_ est utile pour associer des données, éventuellement hétérogènes : "J'ai besoin d'associer ces éléments". Il n'a pas de valeur *sémantique* (sens), mais se concentre sur la *syntaxe* (structure), c'est pourquoi c'est souvent déconseillé d'en abuser. Si la structure de données à créer est utilisée à plusieurs endroits de l'application, il est préférable d'utiliser un _Record_. Au contraire, si l'utilisation est isolée et locale (interne à une fonction par exemple) alors un _tuple_ peut être approprié ! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pas certain que ce soit clair pour un débutant ce que l'on entend par "associer". Mais je n'ai pas de proposition alternative pour l'instant...
False | ||
``` | ||
|
||
Tout _set_ est un contenu par lui-même. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
est un contenu par lui-même
est un sous-ensemble de lui-même ?
|
||
En Haskell, les _Maps_ sont le conteneur privilégié pour le stockage de données sous forme clé-valeur, parfois également appelées dictionnaires (_dictionnaries_) | ||
|
||
Une `Map` nécessite que ses clés respectent une contrainte de tri (`Ord k`) tout comme une `Set` pour ses valeurs. La raison est la même que pour les _sets_, un _balanced binary tree_ est utilisé comme structure de données dans l'implémentation bas-niveau du type `Map` en Haskell, qui nécessite cette capacité à trier les clés. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
une
Set
un Set
|
||
Une `Map` nécessite que ses clés respectent une contrainte de tri (`Ord k`) tout comme une `Set` pour ses valeurs. La raison est la même que pour les _sets_, un _balanced binary tree_ est utilisé comme structure de données dans l'implémentation bas-niveau du type `Map` en Haskell, qui nécessite cette capacité à trier les clés. | ||
|
||
Le type `Map` et les fonctions qui permettent d'intéragir avec sont importés du module `Data.Map` qui fait partie du _package_ `containers`. Pas d'inquiétude pour les dépendances à ce stade, conteneurs est une bibliothèque centrale et est intégrée dans l'interpréteur _ghci_. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
intéragir
interagir
|
||
### Quand l'utiliser ? | ||
|
||
Les _maps_ sont vraiment très adaptées pour persister en mémoire des états qui devront être récupérés à partir d'une clé, d'un type préalablement définis. Ceci est dû aux bonnes performances de recherche à partir des clés qui caractérisent les _maps_ grâce à la contraite de tri sur leurs clés, on a une complexité asymptotique (`𝛰(log n)`). Un exemple évident est le stockage de session sur un serveur d'une application web. L'état de la session peut être stocké dans une _map_ avec l'id présent dans le _cookie_ de session comme clé. Ainsi, l'état de la session est accessible de manière performante via cette _map_ pour chaque requête. Cette solution ne permet pas de gérer un nombre infini de sessions mais vous serez étonnés de voir à quelle point elle est efficace, pour répondre simplement aux besoins de la plupart des applications ! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
définis
défini
fromList [('a',1),('b',2),('c',3)] | ||
``` | ||
|
||
Si on n'explicite pas le type voulu... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Si on
Si l'on ?
Thanks a lot @Ptival, I'm going to manage all of your comments as soon as possible 👍 |
@Maeevick To answer your question in Slack, yes I feel it is necessary for now to pause the containers translation until it has reached stability and that you won't have to regularly check it before publishing the French content. You and @Ptival will be notified when the French translation will be mergeable. :) |
Thanks @Kleidukos, in consequence I will update with @Ptival 's suggestions when green light will be given 👍 |
Related to #9
Just started - only intro for the moment