excellente introduction pour map, filter et reduce, j'utilise déjà map et filter quotidiennement mais reduce j'avais du mal à saisir la logique derrière. En les présentant de cette façon je me rends compte à quel point les 3 sont similaires
En fait reduce est fondamentalement différent, mais c'est peut-être un peu moins apparent en python parce que map ne retourne pas une liste quand tu lui donnes une liste, alors qu'il "devrait" (en tout cas s'il veut s'appeler "map"). Reduce est un catamorphisme, c'est à dire qu'il détruit la structure de départ pour te permettre d'en extraire les valeurs, alors que map te retourne la même structure avec les valeurs modifiées. Le hic quand on implémente reduce sur une collection (parce que c'est pas obligé) c'est qu'une collection a plusieurs valeurs, or tu ne peux pas retourner plusieurs valeurs à moins de les mettre dans une nouvelle structure ou de les résumer à une seule valeur. C'est donc ce qu'on fait quand on utilise reduce : Soit on définit un accumulateur initial qui va être la nouvelle structure que l'on remplit incrémentalement ; Soit on réduit les valeurs à une seule valeur. Raisonner de façon abstraite lorsqu'on utilise reduce est la seule façon de bien l'utiliser. C'est une abstraction très puissante quand tu la couples aux monoïdes et semi-groupes. Si tu l'interprètes comme une façon bizarre d'itérer, il vaut mieux simplement boucler
merci pour les explications de map, reduce et filter
excellente introduction pour map, filter et reduce, j'utilise déjà map et filter quotidiennement mais reduce j'avais du mal à saisir la logique derrière. En les présentant de cette façon je me rends compte à quel point les 3 sont similaires
En fait reduce est fondamentalement différent, mais c'est peut-être un peu moins apparent en python parce que map ne retourne pas une liste quand tu lui donnes une liste, alors qu'il "devrait" (en tout cas s'il veut s'appeler "map").
Reduce est un catamorphisme, c'est à dire qu'il détruit la structure de départ pour te permettre d'en extraire les valeurs, alors que map te retourne la même structure avec les valeurs modifiées. Le hic quand on implémente reduce sur une collection (parce que c'est pas obligé) c'est qu'une collection a plusieurs valeurs, or tu ne peux pas retourner plusieurs valeurs à moins de les mettre dans une nouvelle structure ou de les résumer à une seule valeur. C'est donc ce qu'on fait quand on utilise reduce : Soit on définit un accumulateur initial qui va être la nouvelle structure que l'on remplit incrémentalement ; Soit on réduit les valeurs à une seule valeur.
Raisonner de façon abstraite lorsqu'on utilise reduce est la seule façon de bien l'utiliser. C'est une abstraction très puissante quand tu la couples aux monoïdes et semi-groupes. Si tu l'interprètes comme une façon bizarre d'itérer, il vaut mieux simplement boucler
Parfait pour un bébé dev :)
C'est tout à fait le genre de truc qu'on a toujours fait sans savoir que ca avait un nom parce que... Bah rien à foutre du nom mdr