-
Notifications
You must be signed in to change notification settings - Fork 2
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
Monades... #2
Comments
👋 @yloiseau je retiens les remarques 👍 cc @jponge
Quant au terme conteneur/contenant, il faut le prendre avec son sens "pratico/pratique" dans la vraie vie, c'est à dire, une boîte, un bocal, ... qui contient quelque chose (et le protège). Donc une valeur dans un contexte, une valeur dans un bocal, ... c'est tout pareil (dans le "contexte" de ce document) Si j'attaque le sujet par le biais que tu proposes (qui est plus juste certes) je m'éloigne de mon objectif 1er: simplifier des concepts pour des néophytes (dont je fais partie) et retomber dans un document qui pourrait les perdre. Tu essaieras dans quelques temps cet exercice 😉 : Il y a quelques années, j'ai du expliquer à ma fille de 5 ans, ce qu'étaient une variable et de valeur ... Finalement, la boîte (conteneur/contenant) avec des allumettes (valeur) ça a bien marché 😄. ... Mais je ferais un chapitre 2 quand j'aurais avancé voilou ❤️ |
T'inquiètes, j'explique déjà aux étudiants de 1e année 😄 |
@yloiseau tu veux dire qu'ils ont le niveau d'un enfant de 5 ans 😉 |
Le niveau de gamins immatures qui ont jamais codé, savent à peine écrire correctement, et sans aucune curiosité? Ouai... C'est même peut être pire. |
@yloiseau rooooh! Mais ils viennent pourquoi a la fac? (moi c'était la coinche, mais en deug Mass, l'info c'était léger) |
Cool :) Une présentation dans le même style... Après d'un autre côté si tu arrives à définir la notion de valeur... le contexte n'est qu'un pas supplémentaire ! non ? |
Et pourquoi pas parler de modalité au sens linguistique du terme ? L'idée ma été soufflée par PY Saumont l'auteur de functional programming un java.... |
@PBastiani merci, en fait j'ai commencé à faire une prez sur le sujet (dont est issu mon "article") où j'explique justement qu'avec mon petit cerveau, même cette explication en images apparaissait obscure ... d'où la prez, qui n'est ni plus ni moins un exercice de vulgarisation pour les allergiques au fonctionnel 👍 sur le contexte "functional programming in java" est le bouquin qui m'a poussé à me creuser la tête, j'étais reviewer |
Superbes illustrations 😄
Je trouve cependant que voir les monades comme un conteneur +
map
+join
(ouflatMap
/bind
) est un peu bloquant pour la suite. En effet, l'analogie trouve vite ses limites quand on regargeEither
,IO
,Reader
/Writer
et doncState
, et donc aussi les parseurs, les continuations, ou même plus simplement les fonctions (oui, une fonction est aussi une monade).Un point de vue plus révélateur pour moi est de les voir comme une valeur dans un contexte, le
bind
appliquant un calcul à la valeur en tenant compte du contexte (d'où le nom, comme le late binding en objet, etc.). Par exemple, pourEither
, on applique une fonction / effectue un calcul dans un contexte où l'échec est possible;State
, ben... le contexte c'est l'état en question; pour les parseurs, on construit un automate à état/pile, et donc on doit traiter chaque élément dans le contexte de ce qui précède; les continuations capturent leur contexte d'exécution, etc.Je trouve personnellement que cette manière de voir est plus révélatrice de la nature des monades, et aide mieux à les appréhender.
voilou
The text was updated successfully, but these errors were encountered: