Introduction à la programmation fonctionnelle
Programmation fonctionnelle à partir de zéro
Expliquer la programmation fonctionnelle à partir de zéro, facile à comprendre et pratique, sous un large éventail de perspectives! ~ De la théorie des catégories à la construction du FRP
? Unité 1? APERÇU
https://zenn.dev/ken_okabe/books/fonctional-programming-from-scratch-1/
C'est le début de l'article.
Présentation de la «dehors» de la programmation fonctionnelle
Qu'est-ce que la programmation fonctionnelle?
Un large éventail de sujets, y compris les tendances dans la dernière communauté de programmation, le processeur et la programmation impérative, les types dans les langages système, les abstractions à la programmation structurée, les introductions dans les langages fonctionnels, les relations entre les termes et les mathématiques des Verss fonctionnels du moteur de jeu, SolidJS et Frp.
Démarrage rapide et configuration pour les environnements de développement TypeScript et F #
https://zenn.dev/ken_okabe/books/fonctional-programming-from-scratch-1
Présentation des pièces qui forment le squelette pour la programmation fonctionnelle
Fonctions de première classe, expressions lambda, fonctions d'ordre supérieur, connectivité opérationnelle binomiale, synthèse de fonction, monoïde
Sans cela, la programmation fonctionnelle ne commencera pas, donc la compréhension est nécessaire
https://zenn.dev/ken_okabe/books/fonctional-programming-from-scratch-2
Entrer dans la théorie sous-jacente de la programmation fonctionnelle assez profondément
Nous essaierons de fournir des explications faciles à approcher, citant des articles bien connus destinés aux lecteurs qui sont particulièrement intéressés par la théorie des catégories, ce qui est considéré comme difficile.
Les lecteurs non intéressés n'ont pas à se forcer à tout comprendre, et cela ne se dérange pas de le sauter.
https://zenn.dev/ken_okabe/books/fonctional-programming-from-scratch-3
Comprend un résumé du contenu et des diagrammes de la théorie
Présentation du pipeline / liste / option / IO / Timeline / Async Monad
Implémentation de Monad, écrivant un code spécifique à l'aide de F # et TypeScript
En fin de compte, nous visons à construire un FRP minimaliste à partir de zéro.
https://zenn.dev/ken_okabe/books/fonctional-programming-from-scratch-4
Exemple de code
https://zenn.dev/ken_okabe/books/fonctional-programming-from-scratch-5
Pour de nombreux programmeurs
de plus
Parce que c'est un corpus de connaissances dans le royaume
Et il est rare qu'une telle «sensibilisation» soit expliquée en détail.
Qu'est-ce que la programmation fonctionnelle?
Combinant la pure fionction
Les fonctions pures ne doivent pas avoir d'effets secondaires
"Variable" est immuable
Il y a une transparence référentielle (assurez-vous)
En général, c'est ainsi que les nouveaux termes sont répertoriés, ainsi que les fonctionnalités et les spécifications.
Tous ces règles sont des règles assez strictes , et ce sont certainement des exigences dont les programmeurs n'ont jamais été auparavant auparavant, et ils enlèvent la liberté de codage, ce qui leur donne l'impression d'être liés aux mains et aux pieds du programmeur.
La vraie nature de chaque terminologie est "Qu'est-ce que c'est vraiment?" En fait, les lecteurs ne sont pas expliqués correctement jusqu'à la fin.
Pourquoi cela doit-il être le concept? Pourquoi ne devrions-nous pas être aussi restreints? ? Depuis le mot "Qu'est-ce que c'est vraiment?" n'est pas correctement traité, il est souvent poussé avec un nouveau code, ainsi que "vous pouvez écrire un si beau code" ou "avez-vous ressenti des avantages?"
En fait, ces nouveaux termes et concepts ont des similitudes simples et solides , et il y a des concepts fondamentalement dont vous devez être conscient, et vous devez d'abord les expliquer en profondeur.
C'est un grand processus de «conscience», et en fait, la «sensibilisation» est une exploration et une aventure intellectuelles , et c'est quelque chose de très intéressant.
Cependant, parce que l'objectif principal du commentaire est de couvrir ces fonctionnalités répertoriées et de lier chacun à une explication convaincante, c'est une attitude contre-productive, donc cette "reconnaissance" la plus importante peut être simplement abordée ou complètement ignorée, en bonus.
La personne qui explique que l'histoire peut "ne comprend vraiment pas" (je pense que c'est en fait beaucoup de cas), ou pour ceux qui le savent mais qui l'ont déjà maîtrisé, c'est un problème de l'expliquer gentiment, il est donc facile de simplement dire "J'ai dit cela, non?"
Bien sûr, je ne connais pas toutes les explications, mais je pense que la plupart des explications ont échoué pour cette raison.
Pour certaines personnes, le monde sait | Inconnues ~ "ce que je sais" et "ce que je ne sais pas"
Bien sûr, il y a beaucoup plus de "choses que vous ne connaissez pas" dans le monde, et il est impossible d'utiliser simplement le rapport de ce graphique, de sorte que la taille des "choses que vous savez" est assez exagérée pour l'explication.
L'acte d'élargir progressivement le domaine des «choses de connaissance» de Known est l'acquisition de connaissances , comme si elle remplaçait progressivement le domaine des inconnues «connaissant les choses»
Par exemple, si nous nous limitons aux domaines de la programmation et
Je veux apprendre la rouille du langage de programmation!
Je veux pouvoir maîtriser Unreal Engine 5 !
Je veux en savoir plus sur les techniques pratiques de Docker !
Ce sera comme ça
Rust, Unreal Engine 5, Docker et d'autres sont des technologies «bien connues» bien connues qui sont célèbres dans le monde de la programmation et de l'informatique.
Le célèbre "bien connu" ici ne signifie pas que tout le monde est bien connu, bien connu ou familier avec la technologie, mais plutôt que leur nom est bien connu, bien connu ou bien connu.
En d'autres termes, que vous connaissiez ou non le contenu de la technologie, il existe des domaines inconnus qui ne sont même pas généralement connus, inconnus et inconnus qui ne sont même pas bien connus.
Les «parties» de la programmation fonctionnelle ne sont pas une technologie qui est déjà bien connue du public, comme Rust et Docker.
Pour apprendre la programmation fonctionnelle
Début (non réalisé)
Connu
Le processus = la conscience est plus importante que tout
Cependant, de nombreuses explications de programmation fonctionnelle qui sont abondantes dans les rues tentent d'expliquer les nouveaux concepts nécessaires à la programmation fonctionnelle, qui sont probablement inconnus des lecteurs et ne sont même pas conscientes, sont déjà bien connues et bien connues.
Cette approche ne fonctionne pas
le résultat,
"La programmation fonctionnelle a la connaissance que ce sont des fonctions pures."
"Les fonctions pures sont transparentes de référence"
"Les fonctions pures ne provoquent pas d'effets secondaires."
C'est un état incroyable où une explication complètement incompréhensible est en mode normal, où un concept inconnu est tenté d'expliquer quelque chose d'inconnu avec un autre concept inconnu, ou qui implique d'assembler quelque chose dans l'air sans fondation.
Ou, dans les cas où vous réalisez instinctivement que c'est mauvais, vous pouvez démarrer un exemple assez inhabituel et écrire l'exemple de code pour essayer de persuader le lecteur.
En général, ces deux options sont les résultats, et la vraie nature du concept fondamental, la «sensibilisation», n'est pas mentionnée et n'est jamais expliquée d'une manière qui donne au lecteur la conscience du lecteur important.
Expliquez un autre mot inconnu avec des mots que vous ne connaissez pas ← pas pour la discussion
Montrant un exemple de code pour un cas singulier, reconstruisant des concepts inconnus dans l'esprit du lecteur ← Il existe rarement des génies qui peuvent le faire
Il existe également une "technique de correspondance entre les deux".
Il s'agit d'un modèle où vous écrivez du code pour Haskell, un langage fonctionnel, et l'appelez une «introduction à la programmation fonctionnelle ou une« théorie sectorielle ».
Expliquer un nouveau concept de programmation fonctionnelle avec des spécifications de langage inconnues pour Haskell.
Nous montrons un exemple de code pour le langage inconnu Haskell, qui reconstruit les concepts inconnus de la programmation fonctionnelle et de la théorie des catégories dans l'esprit des lecteurs.
Ce "faire correspondre les deux" est bien sûr maladroit, mais il y a en fait une situation actuelle dure dans le monde de la programmation, où les gens qui sont venus le comprendre, du moins qui peuvent écrire le code de Haskell, reproduisent la même approche qu'ils ont dû comprendre.
Inconnu: connaissance "inconnue",
Sait: "ce que je sais"
Inconnues "des choses que je ne sais pas"
Il y a les deux
Pour clarifier cela, ce n'est qu'une question de diagrammes de classification conceptuels, mais il est également possible de réécrire les graphiques.
Premièrement, la moitié inférieure est généralement remarquée, bien connue et connue de connu
Encore une fois, cette approche fonctionne si l'objectif que vous souhaitez apprendre est déjà une technologie bien connue, une rouille, un moteur irréel ou un docker.
Cependant, cette approche ne fonctionne pas dans la programmation fonctionnelle
Tout d'abord, il est très important de réaffirmer que les connus sont "conscients de ce que vous savez".
Par exemple, tout le monde devrait être "très familier avec" "addition", "soustraction", "multiplication" et "division" qu'ils ont appris au début des mathématiques des écoles primaires.
Ce livre commence en fait à ce niveau et est conçu de manière plus planifiée que la politique ci-dessus.
En fin de compte, l'apprentissage signifie élargir vos connaissances en fonction des choses que vous connaissez déjà bien.
Ce que vous savez déjà, c'est en fait quelque chose comme ça lorsque vous regardez la programmation fonctionnelle.
Unkown sait: "Je ne réalise pas ce que je sais"
Sache sait: "Je suis conscient de ce que je sais"
Il s'agit d'un processus de «notification» et ne nécessite pas de nouvelles tâches pour acheter de nouvelles «choses» à des inconnues jusqu'à présent, ce qui le rend très facile et lisse.
En d'autres termes, tous ceux qui diplômés de l'école primaire ont «très bien connu», «addition», «soustraction», «multiplication» et «division», sont une solide connaissance pour cette personne, et il n'est pas nécessaire de refaire l'exercice arithmétique.
Il s'agit d'un grand atout intellectuel que la personne a déjà travaillé dur pour acquérir à l'école primaire.
Cependant, comment cette "structure algébrique" appelée "quatrième arithmetics" conduit-elle à une programmation fonctionnelle et à des concepts appelés monades? La plupart des gens ne savent pas, ils ne sont pas connus
Une fois que vous avez «sensibilisation», cette propriété intellectuelle durement gagnée appelée «arithmétique agrégation» peut être entièrement utilisée telle qu'elle est, dans la connaissance de la programmation fonctionnelle.
Par conséquent, il est scandaleux de notifier, d'informer, d'enseigner ou d'expliquer cette «conscience»; C'est soit la négligence de l'explicateur, soit simplement l'explication elle-même, mais en réalité, ce dernier cas est très courant.
Ce livre est une tentative approfondie avec cette tâche à l'esprit.
Si vous "ne réalisez pas" cela, alors cela vaut la peine de lire ce livre seul.
La prochaine étape se concentrera sur "Je ne sais pas ce que je sais" de Known, et entrera dans le domaine de l'inconnu inconnu "Je ne sais pas ce que je ne sais pas".
Cela inclut, par exemple, la perspective de physique théorique de [Flow of Time]
Un livre bien connu qui introduit la «manipulation du temps» dans la programmation fonctionnelle du point de vue de la physique théorique est «la structure et l'interprétation des programmes informatiques», qui est souvent utilisé comme abréviation de SICP dans le titre original.
Structure et interprétation des programmes informatiques Couverture rigide - 2000/2/1 Gerald Jay Sussman (auteur), Julie Sussman (auteur), Harold Ableson (auteur), & 4 autres
est
Quant à la perspective de la physique théorique de la "manipulation du temps" dans la programmation fonctionnelle , au moins je ne me souviens pas avoir vu un seul commentaire, à l'exception du SICP, donc je pense que c'est un thème important qui est négligé par le public.
Ce livre est une tentative approfondie avec cette tâche à l'esprit.
Si vous "ne réalisez pas" cela, alors cela vaut la peine de lire ce livre seul.
En écrivant ce livre, j'ai développé et utilisé mon propre éditeur WYSIWYG (une extension de VScode) pour coller efficacement un grand nombre d'images et écrire Markdown.
Markdownnote