
Functional Programming in C# with Simon Painter
Durée: 77m9s
Date de sortie: 03/01/2021
For this very first episode of 2021, I was joined by Simon Painter to talk all about Functional Programming in C#! We spoke about functional concepts, plus terms such as Options, Maybes, and even tried to explain what a Monad is! As usual, there were a few tangents, and we also touched on topics such as React, TDD, and much more!Links from the showSimon’s social links:TwitterWebsiteBook: Functional Programming in C# by Enrico BuonannoRecording of Simon’s ‘Functional Programming in C# talk (th...
Bonjour, bienvenue à l'Unhandled Exceptions podcast, je suis Dan Clark et c'est épisode
numéro 9.
Donc maintenant on est enregistré sur New Year's Day, donc un bon, bon, bon année à
tout le monde.
J'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi, j'ai eu le temps de parler
avec moi, j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi, j'ai eu le temps
de parler avec moi, j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi, j'ai
eu le temps de parler avec moi, j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi, j'ai
eu le temps de parler avec moi, j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi,
j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi,
j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi,
j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi,
j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi,
j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi,
j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi,
j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi,
j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi,
j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi,
j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi, j'ai eu le temps de parler avec moi,
oui, oui, donc, donc, ce qui s'est passé, c'était qu'on avait un appui qui a été installé pour des jours,
que Dan m'a envoyé et m'a rappelé, et puis à bout dix heures, ma fille m'a dit,
comment on va prendre les enfants à la parc de la ville, et sans même penser pour un second,
je pensais, oui, c'est une bonne idée, c'est un bon jour, et je me suis arrêté dans le playground avec les enfants,
c'est ce qu'ils ont fait, c'est ce qu'ils ont fait, c'est ce qu'ils ont fait, c'est ce qu'ils ont fait,
c'est ce qu'ils ont fait, c'est ce qu'ils ont fait, c'est ce qu'ils ont fait, c'est ce qu'ils ont fait, c'est ce qu'ils ont fait,
c'est ce qu'ils ont fait, c'est ce qu'ils ont fait, c'est ce qu'ils ont fait, c'est ce qu'ils ont fait, c'est ce qu'ils ont fait,
c'est ce qu'ils ont fait, c'est ce qu'ils ont fait, c'est ce qu'ils ont fait, c'est ce qu'ils ont fait, c'est ce qu'ils ont fait,
j'ai fait un peu de temps, paradoxiquement, qu'est-ce que c'était que ça?
Et je réalise que j'avais été, ce que c'est, en termes de circles techniques, un nitwit,
et complètement oublié.
C'était ok, je suis bien, je suis juste,
sat sur ma propre,
en nez, en un chat zoom,
en se battant, en se battant,
en regardant,
comme le vent s'est rendu lentement au sol,
avec un petit chèvre,
en connaissant que j'avais été abandonné,
j'ai juste demandé si peut-être,
je devais juste attendre un moment, juste en cas.
Qu'est-ce que c'était en fin de l'année 2020?
Oh non, oh non.
Vous avez besoin de la musique piano de l'incrédible Hulk, c'est ce que vous devez avoir.
D'accord, je ne résiste pas vraiment.
Vous avez dit que je pouvais avoir des effets de son, donc...
Je vous ai dit ça.
Oui.
C'est tout bon, je n'étais pas vraiment nacadiste aujourd'hui,
donc vous m'avez fait peur de me faire parler beaucoup d'aujourd'hui.
En fait, je peux maintenant dire Happy New Year.
2021, vous avez eu une plan de plan de New Year?
Je suis un grand nerd,
comme quelqu'un qui m'a rencontré me l'a détesté.
Donc, je me suis généralement mis à faire des goals de New Year.
Je fais une liste de 10 ou 12 items,
des choses que je vais tenter de faire dans le prochain an.
Je n'ai pas été en train de faire ça,
mais je n'ai pas été en train de faire ça,
et c'est possible parce que j'ai pris l'opportunité
de faire un mot de crossword.
Mais à un moment aujourd'hui,
j'ai décidé de prendre l'opportunité que nous avons
de la lockdown pour commencer à apprendre le piano.
Je suis sorti vaguement autour de grade 3,
donc je vais essayer de le faire à grade 5.
Ça serait bien, c'est le prochain an.
Techniquement, je veux vraiment apprendre React,
parce que je suis sur une liste de technologies
que j'ai plané de apprendre pendant des années,
et React a été très consistant,
à l'heure numéro 1 ou très près de ça.
J'ai doublé un peu,
mais je n'ai pas assez de temps,
je sais pas si c'est dangereux,
mais pas assez de s'y faire et de rassembler
un project React de rien,
alors que Dan et moi avons eu une conversation
l'autre jour sur Twitter,
et on a eu des really belles hints
sur comment commencer,
donc j'ai fait un petit go
à commencer sur ça.
Je vais essayer de faire sûr.
J'ai un peu de parler,
j'aimerais vraiment avoir envie de
apprendre le piano.
Ça a été un peu plus grand
que l'année que j'ai été en termes
de ce qu'est-ce qui est important,
pour peut-être que tous nous
puissions commencer à être conscients
de ça, si rien n'est qu'un autre.
C'est quelque chose que je veux beaucoup.
Je sais pas, j'ai probablement
des choses d'autres, des projets très stupides
que j'ai aussi fait sur le côté.
Je faisais un petit...
Je sais pas si c'est l'année dernière,
mais l'année dernière, on a juste eu
un court tour, en fait, non, c'était l'année
avant, parce que c'était en personne,
un court tour de lignes sur ml.net,
et c'est parce que je voulais
jouer autour et apprendre,
donc j'ai décidé de faire un tour de lignes
pour me faire apprendre.
C'est super simple, c'est assez
un wizard, et vous cliquez
et je pense que c'est probablement
le moyen de la machine-learning,
où vous pouvez juste utiliser
sans comprendre tout le monde
derrière vous.
Je vous promets complètement, mais
je sais pas si c'est une déficience
ou moi, mais je n'ai jamais pu
couper avec ça. Si quelqu'un
juste dit, cliquez le wizard, cliquez
la option de la option, et ça marche.
C'est génial, mais je toujours
j'aime vraiment savoir ce qui est en train
de faire un tour, sinon
je ne me sens pas vraiment
savoir comment utiliser ça, je vais juste
faire le wizard, donc je pense que
jusqu'à
j'ai vraiment, probablement,
implementé le algorithme de moi-même,
pour que je puisse comprendre.
Je ne serai pas confortable avec ml.net.
Juste pour vous clarifier,
quand je dis que ml.net est un wizard,
il y a un component
de ml.net qui s'appelle le model builder.
C'est celui que le wizard
génère le code.net
en utilisant le API ml, mais
même si c'est probablement pas
comme le niveau de la vidéo que vous parlez.
C'est probablement un projet
pour l'année prochaine, et ça ne m'a pas aidé
pour comprendre des maths très hauts.
J'aime les maths, et j'ai toujours
aimé les maths.
Mais il y a une sorte de... Je l'ai appris
à l'époque, il y a un barrière
où vous sortez par ce point de maths,
et puis on s'est fait de l'autre côté
de la maths comme vous venez de l'école, mais
c'est plutôt compliqué.
Et là, c'est le monde incroyable
de maths théorétiques, où vous avez
à apprendre toute cette nouvelle notation
et toute cette nouvelle terminologie.
Il y a vraiment des concepts
de l'invité.
Ça tout a l'air fabuleux, mais
oh mon Dieu, je dois
en peut-être apprendre
comment ne pas dormir,
pour que tout le monde
d'autre dans la maison
soit au point où je peux
faire des travail, parce que
d'avoir une famille avec des enfants, c'est
vraiment difficile de faire tout, vraiment
compliqué et accomplie.
Je pense que avoir des enfants
n'auraient pas besoin d'avoir des choses
à faire. C'est pourquoi je vais essayer de
faire super vite, mais ils
font aussi, ce n'est pas
suffisant.
Pas si votre partenaire aussi veut vous
prendre le temps avec eux, en addition
à vos projets de l'esprit.
Donc, c'est un réconciliation
que nous avons été
baissements de travail, ils sont baissements
avec les enfants tous les jours.
Peut-être que je peux
faire de quoi que je n'ai pas de temps.
C'est tout bon,
mais je
j'ai aussi eu plus de temps
sur le top de tout ça.
Comme je l'ai dit, apprendre le réact.
Je suis assez content que dans mon
contracte, nous faisons dotnet et réact.
C'est là où j'ai appris
les réactes que nous avons discutés
l'autre jour.
C'est bien fun, c'est bien fonctionnel.
Oui, le
Dablin a fait avec ça dans le passé.
Il a l'air de se faire
en ce genre.
J'ai un projet très simple
de...
3 ou 4 ans
d'anime, je pense.
En réact, comme ça.
Je pense que c'est fait beaucoup plus tard.
Si rien ne s'est passé,
l'infrastructure est pas faite.
Il y avait un travail
pour faire un projet réact
même pour commencer à travailler
dans le premier endroit.
J'ai eu
un peu de pain,
mais j'ai été
avec...
les architectures de flux.
Ça a l'air vraiment intéressant.
J'ai été en train de jouer avec ça.
C'est tout fonctionnel,
tout ce qui est de la direction de flow,
tout ça.
Je n'ai jamais été très profond.
La compagnie que je travaillais
n'a jamais adopté ça.
Il y a beaucoup de choses.
C'est fait par le côté de la main.
Je ne suis pas sûr de comment je peux
vraiment m'en souhaiter,
pas de code en anglais.
Il y a beaucoup de différentes patines.
Vous n'avez pas de la même.
Réact est assez commun.
Vous utilisez des re-ducks sur le dessus.
Vous n'avez pas de re-ducks.
C'est effectivement un data store
qui a fait ce que vous avez dédié
sur les événements de single direction.
Mais vous n'avez pas besoin de re-ducks.
Une chose que j'aime beaucoup
avec React, c'est la programmation fonctionnelle.
Dans les versions de React,
vous créez des compagnons
comme classes.
Ils recommandent de la fonction
de la fonction,
et ça fait des choses comme
ce dot et la classe de state.
C'est plus
dédié pour être fonctionnel.
C'est un peu de la façon dont ça fonctionne.
C'est un peu de la façon dont je dois l'enlever.
C'est un peu le problème.
Je suis à ce point avec React
que je ne sais pas ce que je sais pas.
Et il y a un article,
et comme toujours, c'est le cas avec Internet,
vous vous faites un article qui est
totalement sur le top de la ligne,
et c'est le plus de la carte que vous pouvez avoir.
Et puis, six mois par an,
c'est déjà sur le date.
Mais ce article reste toujours en existence.
Vous allez trouver
comment je fais le React
et vous allez trouver des articles
sur le top de la ligne.
Ce sont tous les styles
de programmation
dans plusieurs temps.
C'est difficile de savoir
ce qui est encore correct
et ce n'est pas.
Et bien sûr, vous avez le problème
que vous avez toujours en programmation.
Quand je suis commencé
quelque temps avant,
je pensais que je vais voir un article
qui me fait dire
qu'il y a eu 15 ans
et je vais toujours faire ça.
Et c'est comme ça
avec React.
Qu'est-ce qui est correct?
Je ne sais pas, probablement pas un seul personne
parce qu'il n'y a pas de question.
Il va être un curve de la classe,
comme tout l'autre que nous faisons
dans ce business.
Le pattern que je trouve
le plus important
ou l'acronyme
est le kiss.
Juste, c'est simple.
Je ne vais pas dire ce que la dernière fois est.
Oui, je suis sûr de cette dernière fois.
Je me souviens quand vous avez fait
votre première programmation fonctionnelle
sur dotnet.oxf, le groupe user.
Et à la fois,
le plus proche
que j'ai appris à la programmation fonctionnelle
était juste être un grand fan de Link.
Mais après vous avez introduit des termes
comme option, soit,
des peut-être,
qui peuvent certainement s'entraîner plus tard.
Je dois dire que, à l'époque,
je n'avais pas réalisé que ces sont
les termes fonctionnels officiels
des langues. Je pense que c'était probablement
parce que vous étiez créé
vos propres implementations d'option
peut-être, des classes, de manière manuelle.
Et je pensais que c'était les termes
que vous avez faites en partage de vos exemples.
Et puis, au bout de l'endu, vous avez mentionné
un livre appelé functional programmé C-Sharp
qui m'a réglé. Et comme je l'ai lu,
je réalise que ces sont les concepts officiels
des langues que vous étiez en train de parler.
Oui, absolument. Et,
juste pour la clé,
la question de l'enquête est
« Functional Programme C-Sharp »
par Enrique Buinano, publié par Manning.
Il y a un autre livre avec le même titre,
qui est encore un bon livre, mais
j'aime particulièrement le livre
de Buinano, qui est possiblement
l'un des livres favorisants que j'ai
évoqués possiblement.
Il est probablement
que je situe dans les positions
de mon livre,
donc je recommande
à ceux qui sont vaguely intéressés
dans ce que nous parlons, vous pouvez vérifier
ce livre. Les livres sont disponibles.
Réguis-le.
Réguis-le.
Oui, c'est correct. Je ne suis pas sûr
si je suis complètement confortable
avec les termes officiels, car
je ne crois pas qu'il y ait
un spectacle officiel
sur ce que l'enquête functional est
et les names que l'on utilise.
Parce que j'ai utilisé
des versions
de l'enquête de nom, mais
en fait,
à chaque termes de fonction, je pense
que ça a
à peu près deux ou trois names alternatives, mais
j'ai eu l'option d'une ou deux names
pour ça, et
quelque chose que j'ai entendu
juste dans quelques autres choses, et d'autres.
Mais oui, absolument.
Je n'ai pas inventé...
Si quelqu'un a eu la chance de regarder mon livre,
je n'ai pas inventé n'importe quoi.
N'importe quoi. Dépuis,
en un original en plein de façon.
En fait,
le programme fonctionnel ne fait pas
même d'une langue programmable.
Il s'agit de la maths.
C'est quelque chose qui est arrivé
dans le monde de la maths, et je
vouais faire une petite digue
pour voir si je pouvais
l'incluer dans mes paroles, des paroles
sur les origines exactes de certains de ces concepts.
Et ça a semblé qu'il s'est passé
dans la texte de la maths
que je n'ai pas la plus petite chance
d'avoir pu comprendre. Mais
la base plus immediate de ça
vient de l'an 1950, où
les gens de la Chine de Alonso
sont des names que j'ai tendu
à la grandeur, la chanson que nous faisons
des expressions de lambda, et quelques autres choses.
Le crossover entre la maths et la compétition
est probablement quelque chose qui a commencé
plus tard, et c'est toujours
encore en train de se passer.
Mais je ne pense pas que c'est pas assez évident
parce que c'est toujours là.
Tout ce qui s'en va
en même temps.
Et c'est en fait le premier
programme, le premier langage fonctionnel
de la langue, c'est de la chanson du 1960
qui s'appelle Lisp.
Et je pense que c'est toujours en utilisation
dans le monde grand. Supposément, il peut faire
des choses très wildes que même les langues
modernes ne peuvent pas tenir avec, mais
je n'ai personnellement pas utilisé. Ça a l'air
super. Et si quelqu'un veut me payer
un grand nombre de moules pour travailler en Lisp, je suis
content de vous dire. Pourquoi pas?
Mais, en tant que gens,
j'ai vraiment envie de me faire du C-Sharp, et c'est
bon parce que j'aime le C-Sharp beaucoup.
Mais en regardant le point original, Link
oui, absolument.
Link est fonctionnel. Link est absolument
un component fonctionnel de C-Sharp.
Il fonctionne
dans une manière fonctionnelle.
C'est OK.
On veut discuter de ce programme fonctionnel
même à ce point?
Oui, on devrait commencer à la première.
Bien sûr. OK, on va au début.
C'est un programme fonctionnel.
Qu'est-ce que le nom? Qu'est-ce que tout le programme ne fonctionne pas?
Je peux voir pourquoi ils ont donné le nom, mais
il peut être un peu maladé à ce point.
Quand j'ai commencé à entendre ce
programme fonctionnel, je pensais
que c'est même une chose. Mon programme
fonctionne sûrement. Non, non, non.
C'est un peu comme un nourriture organique.
C'est un terme qui
donne un peu d'impression falsée.
C'est tout le nourriture organique, tout le nourriture
fait de rocs. Non.
Il n'y a pas de description
de ce programme fonctionnel.
Il est plus un set de
propres et de features.
Le plus grand est que les programmes
généralement sont
composés de fonctions,
donc, programme fonctionnel.
Tout est un programme fonctionnel.
Il y a un peu de thème en fonction de programme.
Si il y a une question, la réponse est
typiquement fonctionnelle.
C'est un peu de gros statement,
mais ça fonctionne.
Vous avez
à l'imaginer
les fonctions qui sont construites
comme un programme fonctionnel
comme un programme de légos
on se construit piece by piece
avec des laitres de légos
notre application entière.
Et chaque fonction est un programme
dans la whole
de la chose. Il y a
des concepts de plus en plus.
Une des les plus importants
est la mutabilité.
Cela signifie
que, si vous avez un set de variables
de valeur, vous ne pouvez pas changer
n'importe quoi.
C-Sharp ne fait pas ça.
Je sais que c'est un moyen
de le faire et ils se poussent
un peu dans cette direction.
Si vous regardez les features de C-Sharp 8 et 9,
vous trouverez que vous pouvez
faire des warnings de compilations.
Je pense que
vous pouvez même aller plus loin et avoir
des choses à faire.
Je ne suis pas très sûr de ça.
C-Sharp 9, vous avez
des types de record, qui
vont dans cette direction.
Je suis en train de
faire ce que je veux.
Je suis en train de faire le code
de la fin de l'année et je utilise les types de record
pour ça. Ils sont vraiment
bons. Ils sont vraiment bons.
Et c'est absolument
en train de faire un programme fonctionnel.
Il y a
ce genre de stuff qu'il peut faire
avec les types de record.
Je dois avoir mon type de record
avec 10 propétités.
Je veux juste un de ces.
Vous pouvez faire un nouveau record,
qui est le même que l'autre,
avec un changement de propétités.
C'est beau.
Il clarifie l'intent
et s'éteint sur la plate-bois.
Je suis plus ou moins au courant de
les types de record.
Je pense que les gens vont les prendre en train
parce que l'année dernière, je l'ai écrit
un blog sur le site
C sharp.
Il y a deux camps sur Twitter
et les replais de blog.
Les types de programme fonctionnel
sont vraiment positifs.
Ils sont clairement
assez séparés avec
les types de la plate-bois, mais
plus de programmes objectoriennes.
Je vais dire que
les programmes fonctionnels, je crois, sont
très pré-dates.
Si quelqu'un se tourne en train de me dire
que je ne crois pas que
il y a des concepts d'orientation objectif
avant de programme,
je crois que c'est un concept
qui est un programme fonctionnel.
Le fonctionnel
est très bon avant de programme,
mais si on le compte
dans les « Gator Loveless »
et la programme « Sheed »
qui nous compte absolument bien
pour programme.
Je pense que je vous parle de
plus classiquement
de la programme en langue.
Mais oui, de toute façon.
Mais la mutabilité
est incroyablement
powerful.
Il semble un peu
counterproductive quand vous vous entendez
ce concept, mais c'est
que si vous commencez à jouer avec ça,
et si vous avez à
considérer les implications pour le programme
et que je ne peux pas changer cette valeur,
vous vous enduriez de la chose
très robuste
et
pour beaucoup de gens, c'est
un point de vue réel
parce que
si vous êtes un test
automatique, et vous devriez certainement
être un bon individu,
le programme fonctionnel
absolument
soutient la testabilité.
Parce que
nous n'avons pas de states comme ça.
Nous n'avons pas de cet objectif
central qui peut interagir
et changer et manipuler.
Ce n'est pas assez comme ça.
Il y a un concept en programme fonctionnel
de fonctions pure.
La autre façon de refermer
est l'intégrité référentielle. Je n'aime pas les fonctions pure
parce que c'est un terme un peu plus fréquent.
Mais ça signifie que quand vous vous dites
une fonction, ideally,
ce que vous vous rendez
c'est que, selon le même set
de valeurs dans le paramètre,
l'outre devrait toujours être exactement
la même chose.
Mais pas de quoi.
Pas de quel état le système est,
d'exception que le computeur a
joué. Bonne chance à vous.
Pas de quoi, comment le système
a été en train de se passer,
pas de tout autre,
vous vous rendez
les paramètres, vous vous rendez le même
ans de la fin.
Mais presumably aussi, les choses
comme des calls database et des
autres effets de l'aider.
Oui, oui, oui.
Et il ne devrait pas y avoir d'autres effets
qui sont en train de se passer.
Évidemment, dans le monde réel
vous ne pouvez pas vraiment avoir
ce point de vue dans votre système.
C'est une chose qui ne peut pas se passer.
Et il y a des moyens de résolver
ce problème.
Et non plus vous ne pouvez pas
faire des files, il y a tous les choses
qu'il peut faire.
Mais le but est de maximiser
l'aéroport de votre système
qui fonctionne de cette manière.
Parce que si vous avez une function pure,
vous pouvez juste écrire un test
sur le unité. Et c'est ça. Vous pouvez 100%
entrer sur ce problème pour toujours
se dépasser de cette manière.
Et puis vous pouvez vous extracter
autant de logic que vous pouvez de toutes les classes
de votre système. Vous les buildez de cette manière.
Vous avez un grand bloc dans le centre
qui est vraiment prédictable
et vraiment stabil.
Et puis vous avez juste de mettre
une structure autour des étapes
de la système où la étrangerie
peut arriver de l'interaction avec les êtres humains
ou des files, ou quelque chose où
nous devons avoir une interaction.
Mais ensuite vous vous minimisez
les étapes de la salle.
La métaphore que vous avez
est la 2 parties de l'esprit.
La salle, c'est le bout noir
dans le milieu et la salle de la peine.
C'est le bout noir du gré
autour de l'esprit de la salle. Et ce que nous
voulons c'est de la salle de la salle
pour être grand et grand et noir
et de la salle de la peine pour être minimisé.
Il y a un couple de nouvelles termes pour les gens
qui sont en train de faire des étapes.
Je pense que
nous allons avoir quelques nouvelles termes
dans ce épisode, je ne suis pas sûr.
Surtout le monad.
On peut, à un moment,
expliquer ce que le monad est.
Peut-être.
Peut-être. Pardonne-moi.
Oui. Le truc avec les monades
c'est que
si vous regardez sur le internet
et vous regardez sur Wikipedia,
vous vouliez avoir des descriptions
des descriptions mathématiciennes.
Il n'y a rien d'autre que ça.
Le monad est cool.
Qu'un autre ne soit plus cool.
Le monad est cool.
Mais il s'agit d'une sorte de
théorique ou de la math.
C'est
F, A, G, F, G, X.
Je ne sais pas, je l'ai juste fait.
C'est un truc que j'ai
de l'esprit de l'esprit de l'esprit.
Et c'est un truc que j'utilise
tout le temps.
Donc, être un ingénieur,
c'est ce que je pense,
le meilleur moyen de le dire est une description d'ingénieur.
C'est ce que je suis en train de faire.
Comment utiliser-je?
C'est ce que je suis en train de faire.
Comment utiliser-je?
Strictement speaking,
les gens de la maison
vont probablement
trouver que c'est vrai
qu'ils ont utilisé les monades pour des années
et ne ont jamais réalisé
les promesses des monades
dans le monde J.S.
On a un varié sur ça
avec les weightages
sur le monde C.S.
C'est
un moyen de penser que c'est
une extra layer du fonctionnement
qui fait la décision
sur comment procéder.
Mais même si on le fait, c'est plus compliqué
que ça.
Est-ce qu'il est worth starting
avec une description de
les autres termes que l'on a mentionnés,
comme des options, des autres, des autres.
Et puis parler de monades,
car ça pourrait être un peu mieux.
Le simple exemple que je vous donne
quand je parle est de calculer
la conversion
entre Celsius et Fahrenheit.
J'ai travaillé pour une company
dans le U.S.
Et ils se disent que c'est
100°C.
Et je pense que ça me semble
comme si vous alliez être mort.
Mais en Celsius,
si vous vous dites que c'est
33°C, quelque chose comme ça, je ne sais pas.
Mais ils ne sont pas
restés ou boilés
à la mort horrible à ce moment.
C'est une bonne température
et assez belle à l'extérieur.
Je suis là dans le soleil, ce n'est pas un con.
Mais
la conversion, il y a tous les moyens.
Mais le premier que je sais
c'est...
C'est de prendre le Celsius,
doubler, subtracter 10%
et ajouter 32%.
Wouh!
Oui, pourquoi pas?
Mais le point est que
nous avons 3 opérations
qui sont faites.
Chaque chose
prend le résultat de la dernière.
Elle fait un truc et passe le résultat.
Et la prochaine chose
prend le résultat de ce que nous avons fait
et passe le résultat.
Nous avons un chaine d'opérations.
Ce n'est pas comme un statement de sélection.
En fait, si vous faites une série de statements de sélection
après la dernière, vous trouverez que
quelque chose comme ce genre d'opérations
va arriver.
Parce que les sélecteurs ne sont pas nécessairement
opérés dans l'ordre que vous pensez qu'ils font.
Mais le simple moyen que j'ai
et je crois que je peux le faire
par le boinano
est que je créé
une méthode d'extension
en C-Sharp.
C'est petit, probablement plus que un pari de caractères.
Je le n'ai pas appelé MAP, mais vous pouvez le dire.
MAP est le nom de la bonne.
Et la idée est que nous mâchons
l'ancien truc
dans le nouveau truc.
Et j'ai appris
deux génériques.
Je les ai appelés T-Prieve,
T-Input
mais T-Old type
ou l'ancien type.
Dans mon exemple, c'est toujours
des doubles ou des decimes.
Et puis un autre type T,
l'output type.
On a le type old, le type neuve
et en utilisant les génériques,
on dit que c'est tout.
Donc,
vous attaquez
l'output type, le type T-Input,
le type T1,
T1 et T2, j'ai entendu le nom de ça aussi.
C'est aussi bien.
Nous allons l'attacher à T1,
et nous allons le donner.
C'est pour ça que nous
attachons ce type d'extension
pour un générique.
Nous attachons tout dans la C-Sharp.
Et puis,
le seul autre paramètre que nous avons
est un funk,
ce qui est un type délicat.
Donc, un funk qui se termine
en tout le type T1,
le type T-Prieve,
et c'est un funk,
qui nous demande de passer.
Et puis, tout ce que nous faisons,
c'est de coller ce funk
et de passer ce que c'est.
Et c'est tout.
C'est ça comme, est-ce que c'est le même
de la même sélection,
que de travailler sur une collection,
que de travailler sur un objet single.
Oui, oui, c'est exactement ça.
Donc, le concept est
exactement la même sélection,
except que si tu as...
Je suis en train de le dire,
je l'ai entendu, tout ça.
Une chaine est autre chose,
je l'ai entendu, bind.
Je l'aime, je crois que le mape est bien et friendly,
mais il faut le dire.
La seule différence,
c'est que si tu as appelé un mape
sur un numérable,
alors quand tu mets dans votre expression
dans le mape,
à l'aide d'un élément
du whole numérable,
il est attaché au whole numérable
à la même fois.
Donc, x, x ici,
serait un whole numérable.
Tu ne pourrais probablement pas utiliser un mape
sur un whole numérable,
parce qu'il n'y a pas de temps
où tu veux faire ça, tu veux que tu la sélectionnes.
Si tu avais un mape,
tu pouvais utiliser le string,
tu pouvais utiliser le string sur ta classe complexe
pour faire toutes les choses intéressantes,
faire une classe complexe pour le convertir
de tout le type de classe complexe
dans un autre,
tu peux faire une série de opérations,
mais le point est que tout ce que nous faisons
est que tu as un fonction,
tu as le nouveau,
et tu peux changer un après un.
Ce n'est pas un peu comme ça,
mais quand tu commences à utiliser
ce truc, c'est incroyable
comment tu peux compresser le code
pour un départ. Tu peux convertir
beaucoup de fonctions que tu as élevées,
long-hand, comme ça,
en bas à juste une seule fonction
d'arrow,
avec un couple de mape pour faire
un set de conversions. C'est marvellous,
mais c'est un monad,
c'est ce qu'il y a.
Donc, ta mape fonctionne
dans l'extension, c'est la chose qui fait...
C'est comme ce petit rappeur
sur une série de fonctions,
qui vous donne un espace
où tu peux peut-être
mettre un logiciel, qui est où
nous prenons ce processus un peu plus.
Imaginez un peu plus,
et nous n'avons pas juste un blind
de faire ce truc.
Le prochain step est de
créer quelque chose,
je n'ai pas eu tout le temps de nom pour ça,
je le n'ai pas entendu, je l'ai entendu,
je l'ai entendu, tout le temps de choses,
mais
le moyen que je disais dans le book de Bynanna,
et c'est... c'est
très bon pour C-Sharp,
c'est que tu crées un abstract,
tu crées un class abstract, tu le n'as pas dit
et dans le plus,
tu mets un valeur, tu le n'as dit T.
Donc tu vas faire ce class,
un plus de T,
ce qui est un générique,
et dans le plus, tu as un T
valeur, T, T item,
ou quelque chose.
Et tu l'inheritouffes deux fois.
Tu l'inherites
de quoi, tu le n'as pas dit,
tu l'inherites de quoi,
et tu es quelque chose,
c'est un class abstract
de ton origine,
et rien,
qui est un T,
et qui le réplique avec le default.
Ok, j'espère que tu es avec moi,
donc imagine,
tu as effectivement deux states de ce truc,
les abstracts, les groupes,
mais nous avons deux states,
nous avons deux imports,
et puis délire
On va vérifier le valeur dans ceci et voir si c'est quelque chose ou rien.
Vous avez des standards, un peu de c-sharp type,
ou on a un format de c-sharp8, on a nos opérations switch,
ça va faire le travail bien.
On va vérifier si c'est quelque chose,
ça veut dire qu'on a un valeur ou pas.
Si c'est quelque chose,
on behaviorait exactement comme nous l'avons fait avant.
Si c'était une map,
on va juste appeler la function,
et on va passer ceci en,
et tout le monde est heureux.
Si c'est quelque chose,
on fait quelque chose, et on passe quelque chose d'autre.
C'est vraiment très fort,
parce que ce que ça veut dire,
c'est qu'on peut changer un série d'opérations.
La meilleure description de ceci
était de l'un des websites de Scott Vlaschine.
Il a écrit un article qui s'appelle
« Railway Orientative Architecture »
ou quelque chose comme ça.
Il a dit que imaginez que vous avez deux trains
en fonction de la route.
Vous avez le top de votre path de l'application,
et c'est quelque chose,
quelque chose,
c'est-à-dire que ça a fonctionné,
ça a fonctionné,
et puis, chaque fois que nous faisons une opération,
il y a un point,
et le bouton de la route est le nôtre,
le path de l'un ou autre,
et c'est où ça n'a pas fonctionné.
Le point est que chaque fois que nous passons les points,
nous avons la fonction « C »,
nous avons la fonction « C » et nous avons l'erreur,
nous avons la fonction « Nothin Track »
et nous avons la fonction « Glide tout le monde
jusqu'à la station, avec rien, nous faisons rien plus.
Si ça a fonctionné, nous allons nous faire un tour.
Le point est,
si, à chaque point,
l'une des opérations dans la chaine s'arrête,
sans avoir à mettre les « Null Checks »
dans votre programme réel,
c'est juste
implicitement là,
le nul check,
l'erreur,
est tout le temps contained dans la structure.
Vous n'avez pas à commencer à brancher
par la façon dont vous avez fait le travail précédent.
Donc,
en enlever des choses comme les nul checks
et les catches,
comme ça,
nous avons déjà sauvé
les roux de l'espace programmé
et d'implifier
un grand nombre de programmes
dans un couple de lines,
qui sont vraiment, vraiment,
très facile à lire.
Vous pouvez même passé
l'option, le « Maybe »
comme votre type de retour,
et puis vous vous dites le reste de votre programme,
« C'est un truc,
je ne sais pas si ça a fonctionné ou pas,
c'est up to you to check and decide what to do with it.
»
Vous pouvez donc se faire des choses,
parce que normalement,
ce que j'ai fait dans le passé,
c'est que, en plus de retourner à un objet,
j'ai retourné à un objectif de résultat,
qui contient une version nul
de l'objectif,
comme un vrai ou un fals,
j'ai fait ce travail,
et quelque chose d'autre,
j'ai reçu ce travail,
mais, en plus de faire ça,
c'est maintenant impliqué dans la structure
de notre programme.
C'est un truc,
le fait que c'est un « Maybe »
signifie que c'est pas le travail,
et nous avons un standard,
across le monde de notre programme,
de voir si ça a fonctionné,
donc,
c'est juste de faire un check-off,
si c'est quelque chose,
si c'est rien,
et nous savons comment procéder.
C'est beau,
et c'est élégant.
Et c'est quelque chose
qu'on devrait vraiment utiliser,
parce que c'est un moyen
de faire des choses comme
les exceptions nul,
et de mettre des catches
par la discopération.
Vous pouvez juste
faire un bon choc
de toute cette code boilerplate,
que vous avez élevé,
et juste serrer
dans cette structure simple.
C'est un choc,
un choc,
que les gens disent
« monad » et que la glace est en train de
regarder des descriptions
de la technique
de la maths,
et que ça ressemble
à ce bizarre,
conceptuel
qu'un autre monde ne peut utiliser.
Et c'est incroyablement utile.
Donc,
de retourner
à l'exécution d'un ingénieur.
Ne vous inquiétez pas
sur les 4 définitions.
Qu'est-ce que c'est pour ?
Comment utiliser ?
C'est de l'exécuter,
mais de l'exécuter dans le tout objet.
Ça vous arrête de vous
ne pas avoir à ne pas vous inquiéter.
Ça vous arrête de vous inquiéter
pour les choses comme
mettre des catches
par le tout.
Ça vous compresse
juste un couple de simples lines.
C'est une thing marvellante,
et vous allez faire ça.
Le meilleur moyen
d'avoir le temps de apprendre
ce truc, est de
vous vous en impliquer.
Et je vous ai trouvé
un peu étrange,
et ce n'est pas compliqué.
Je ne pense pas que c'est compliqué.
C'est juste un peu de conceptuel.
Je me suis mis à la place
et j'ai juste
mis le complément
de la même manière
que moi-même.
Et à un moment,
c'était juste
un moment de bonheur.
Ça fait tout le sens.
Ça ne s'est pas pris très longtemps.
Mais à ce point,
ça a tout fait le sens.
J'ai compris exactement ce que c'était pour.
Comment utiliser, pourquoi utiliser.
Il n'y avait pas vraiment
de complication à l'autre.
La seule difficulté que j'ai
eu, c'est de
décrocher, de vous convaincre
un peu, vous pouvez dire,
les programmes de l'école,
pour vous prendre en compte
où ils ont été
investis d'un paradigme
orienté par l'objectif.
Et ne veulent pas
aller loin de ça.
Je ne pense pas que c'est
ce que c'est pour faire de l'objectif.
Je pense que tout le monde
ne va pas dire ça.
Mais il n'y a pas de problème
d'adopter des principes
de la programmation fonctionnelle
pour imposer notre code.
J'ai vu un tour,
un an ou deux,
par Mads Torgas,
et je crois que c'était
sur le futur de C-Sharp.
Et il a dit que la toute
idée est pour être
que C-Sharp soit un langage
Donc il va soutenir
l'objectif orienté
et il va soutenir la fonction.
Et si vous avez un look,
chaque version de C-Sharp
qui a été réalisée
pour la dernière version
de la course,
a toujours eu
plus de contenus fonctionnels.
Included.
J'ai donné des talks
sur ce sujet, envers le U.S.
pour les interns,
où ils sont en train de
réélever la température
de la université
pour travailler pour une compagnie.
Et beaucoup d'entre eux
m'ont dit que c'est
ce qu'ils apprécient
dans la université.
C'est
une très grande chose.
C'est une des
choses où
si vous n'adoptez pas,
vous allez pouvoir
rester plus tard
ou plus tard.
Et même en regardant
les chèdures
dans des conférences,
vous allez souvent voir
qu'il y a plus de contenus fonctionnels
année par année,
pas moins.
Et la fonctionnelle
est même
créée dans les talks non-functionnels.
Même si c'est juste un
signe, c'est pour les gars fonctionnels.
C'est pas un
genre de panne-femme.
C'est pas comme
les frameworks
de J.S.
où ils sont
et ils étaient
très grands.
Et tout le monde
l'a aimé.
Et puis vous vous êtes
en train de
mettre cette technologie
C'est un base
de co-base.
Je suis sûr
qu'on peut penser à leur nom.
Et je vais me refraîner
pour la sake
de ne pas être trop controversée.
Mais
les fonctionnels n'ont pas
l'air.
Les fonctionnels
n'ont pas un framework
tout le monde.
C'est ce qu'on appelle un paradigm.
C'est un style de programmation.
C'est,
comme on l'a déjà parlé,
vraiment flippant.
C'est été en train de se faire
faire,
bien, ok, les 800 ans.
Mais c'est été en train
d'avoir une longue période.
Et je ne vois pas
pourquoi c'est pas
une longue période
pour aller en train.
Maintenant,
il pourrait bien être
qu'il y a un peu
de boulot
pour être étranger
des langues de programme
entre
comment l'objectif est orienté
et comment l'objectif est fonctionnel.
Maintenant,
les C-sharp vont toujours
être un hybrid,
je pense.
Si vous voulez
aller plus loin
dans le functuel pur,
il y a F-sharp
pour vous,
si vous voulez.
Et,
bien sûr,
il y a un whole host
de
langues de pure fonctionnel.
Il y a Haskell
et Airlang.
Si vous avez utilisé
Rabbit MQ,
je pense que c'est un product
d'airlang.
Et,
supposent,
avec ces langues de pure fonctionnel,
le claim est
qu'ils sont
si flippants
et si
que
si le point est qu'ils sont
si complotés,
ils vont juste
rester toujours
sans
rassembler
sans rassembler
terminer le programme.
Ça peut être.
Je n'ai jamais travaillé
dans un moment,
mais c'est un claim
qui a été
tout de même
tout de même
et qui ne
ne veut pas
pour leur application
Je certainement
j'aimerais un peu.
C-sharp ne supporte
toutes les features
d'une langue fonctionnelle.
Un de ces
c'est la recursion des tails.
D'adopter une
approach pure fonctionnelle
en C-sharp est
possible.
Vous pouvez le faire.
J'ai fait ça.
Vous pouvez absolument le faire.
Vous avez dû
former un peu
avec un tout
de
nifty-looking
extension methods,
mais c'est doable.
Mais le problème
que vous avez
en C-sharp
si vous allez
tout de la façon fonctionnelle
est la mémoire.
Donc,
vous avez un grand ton
de choses
où vous avez un opération
qui est en train de se souverainiser
en mémoire,
en dépassant sur une autre opération,
en dépassant sur une autre opération
et ainsi de suite
quand vous essayez de faire
des choses comme...
Parce que,
dans une langue fonctionnelle,
vous pourriez faire des choses
comme des fours-loupes
et des fours-reaches
et si vous avez
assez d'abandonnées
parce qu'il y a
d'autres structures
et vous utilisez la recursion
plutôt que votre four-loop
et vous pouvez absolument
faire ce genre
de choses en C-sharp,
mais ce n'est pas optimisé pour ça.
Donc, vous vous endvez
avec cette
mémoire massive.
Si vous avez des objets
que vous avez
de très petit,
vous n'aurez pas de différence.
Et les gains
en rédabilité
et en ce moment,
les codes robustes
sont probablement plus vides.
Mais,
si vous avez un
fonction recursive
où vous avez
des milliers d'objets
dans votre array,
ce serait possible
que vous ne pouvez pas
faire ça.
Et sans le switcher
en tactique,
donc,
nous retournons
à la question de l'âge,
pourquoi vous essayez
de l'accomplir.
C'est là que je vais commencer
à décider
comment fonctionner
je veux aller.
Je veux fonctionner.
Je vais probablement
toujours tendre
à plus de fonctionner.
Mais,
il y a des places
où, au moins dans C-Sharp,
on va toujours avoir
des concessions.
Mais,
si vous switchez
au monde de F-Sharp
ou quelque chose comme ça,
vous n'avez pas besoin
de tout.
Et tout est fonctionnel.
Vous n'aurez pas pu
retourner
nécessairement
faire des variables
de la rédabilité
et des choses comme ça,
parce qu'ils se sont allés.
Oui, je pense que
même avec F-Sharp,
vous devez se déranger
les libraries
qui sont créées
pour juste être
les libraries.net.
Les standards.
Oui.
Donc, vous avez toujours
dû avoir un peu de bridge
entre le monde fonctionnel
et le monde non fonctionnel,
aussi.
Oui.
Je vous dis
que je ne suis pas
négréant F-Sharp.
Je ne sais pas F-Sharp.
Je l'ai débarqué
en F-Sharp un peu
et ça a vraiment l'air cool.
Ça a l'air
comme un truc
que j'aimerais vraiment
apprendre.
Mais,
un de vos problèmes
est toujours dans le monde
du business.
Un de vos problèmes est toujours
comme,
la whole team doit être
content de supporter
ce truc.
Donc,
ça va toujours être
votre problème,
si la whole team
est content
d'avoir un problème,
on va avoir un problème.
Et après,
vous devez toujours être
sûrs que vous devez
mettre des gens
qui vont être heureux
d'apprendre F-Sharp.
Je ne dis pas
que c'est pas un exercice
qui pourrait être bien
parce qu'il y a des bénéfices
pour être mises.
Le truc
que F-Sharp
fait vraiment bien
c'est des trucs
comme,
comme rouleaux,
comme vous le pouvez
les dire,
c'est un truc
de données,
je vais le faire
ou je vais faire
une décision
et me donner la décision.
Ce genre de
rouleaux,
des données
pour d'autres données,
F-Sharp
fait ça
tremendously bien
et probablement
mieux que C-Sharp.
Donc,
si vous avez un tout
pour faire,
il y a peut-être
quelque chose
pour
même aller
vers la route
de la hybride,
de faire
tout ça
en F-Sharp
et tout en C-Sharp,
peut-être.
Je sais que
vous pouvez faire
tout en F-Sharp,
c'est assez bien que vous le faites
en C-Sharp.
Vous pouvez avoir
une fin de web
sur ça.
Vous pouvez avoir
l'input ou l'output.
Vous pouvez avoir tout ça
dans le cas.
Mais,
à moins
avec l'approche de la hybride,
vous avez un
plus confortable,
plus familier,
plus rapide
sur
peut-être
plus familier
de la technologie.
Parce que
tout le monde,
c'est pas totalement
vrai,
mais
il y a assez de gens
qui savent que c'est pas
un risque de adopter.
Ils vont à une conférence
de la dév,
il y a un rock,
il y a un rock qui ne savent pas
de C-Sharp.
Après qu'il a fini de
apologiser à eux.
c'est...
Ne faites pas ça.
Oui.
Ne fais pas ça.
Oui.
Ne vous essayez pas de
le faire à la maison,
parce que,
je ne ferai pas ça.
Mais,
absolument,
je
n'ai pas de
des amis qui
ont des trucs
comme Haskell
et tout.
Je n'ai pas de problème
si on veut faire ça,
je l'ai entendu,
c'est de la grande chose.
Je n'ai jamais
travaillé avec d'autres
qui ont utilisé la production.
Donc,
chaque fois que nous chatons,
et je pense que ça a
passé dans l'épisode de la DDD,
c'est qu'il y a eu des
discussions
avec des foods en quelque sorte.
Il y a un autre terme
qui s'appelle courir,
n'est-ce pas?
Je ne pense pas que nous avons
touché ça en tant que.
Oui.
Mais ça,
ça me fait honger.
Tout le temps, je suis
choqué à vous.
Oui,
ce n'est vraiment pas un plan,
ce n'est pas vraiment.
En fait,
courir
a fait
absolument rien
de faire avec
la nourriture
de la Sainte-Asie,
tout le temps.
C'est tellement délicieux.
Oui, je sais.
C'est un incident total,
il est nommé
après...
C'est un gentleman
qui a le nom de la première,
n'est-ce pas?
Non, c'est sa dernière.
Ce n'est pas un Haskell,
c'est-à-dire?
C'est un Haskell courir.
C'est sa dernière.
C'est un gentleman
qui a le nom de la dernière,
CURRI.
Il a des 3 langues
différentes,
c'est nommé après Haskell,
l'un des autres,
je ne sais pas,
c'est le troisième,
je suis sûr que c'est là-bas.
Mais oui, courir.
Donc,
courir est un concept
fonctionnel,
et c'est vraiment cool
si on a une chance
de jouer avec ses C-sharp,
ça ne fait pas vraiment ça.
C'est, je pense,
un peu trop
rigide,
défini
pour le permettre.
Donc,
je vais retourner
au simple exemple
que j'ai donné à la parole.
Et c'est...
On imagine,
pour un moment,
qu'on a juste une function
simple,
et on a,
comme,
int A,
int B,
et ça retourne
à A plus B.
C'est vraiment,
vraiment,
très simple
d'understand.
C'est bien,
on n'a pas de problème.
Mais on imagine,
pour un moment,
que c'était,
hyperthétiquement,
une fonction courir.
Et,
on le appelle,
on le appelle,
donc si je n'ai pas appelé
AD,
et on lui a donné 10,
maintenant,
si je l'ai essayé
de faire en C-sharp,
ça serait un bon compilé,
parce que vous n'avez pas
donné les deux paramètres
ou d'autre,
vous savez,
j'aurais dû aller en C-sharp,
ou d'autre.
Mais dans une fonction courir,
ça retournerait
à une fonction,
qui ajoute 10
pour ce que vous le donnez.
Donc, vous avez deux paramètres,
par rapport à l'un,
vous vous fillez ça,
maintenant vous vous retenez
la fonction,
où A est fillée,
et B est toujours fillée.
Donc, vous avez le fait
d'adder à une fonction d'ad 10.
C'est probablement
un exemple un peu ludicastement
simple,
mais vous pouvez bien utiliser ça.
Mais c'est un autre moyen
de combiner les fonctions,
comme si vous voulez
l'analogie de Lego,
où vous cliquez ensemble,
vous pouvez avoir des fonctions,
ça vous permet de reuser les choses.
Donc, si vous avez une fonction
qui a 4 ou 5 paramètres,
et que chaque des deux
détermine comment ça s'est fait,
je vous donne des exemples
des choses comme les parcs,
où c'est comme
expliquer un texte giant
par line,
puis par
field,
puis faire des conversions
et faire des choses d'autres.
Vous pouvez juste
faire, plutôt que de
faire un bon bout de parcs
avec différentes combinations
dans le tour,
vous pouvez juste
passer un couple de paramètres
de ça, et maintenant,
deux paramètres sont fillés,
ce qui est un fonctionnel,
il faut toujours
expliquer quelque chose
par line,
et par commas,
fillez les restes des paramètres
et ne vous inquiétez pas
de l'allier le reste
de chaque fois.
C'est juste un autre
bon moyen de
réduire l'amount de code
qu'on doit faire et de
clarifier l'intent
de ce qu'on fait.
Vous pouvez réutiliser
la même fonction
d'autres literes,
mais vous pouvez l'utiliser
comme si c'était
plusieurs fonctions
avec les premières
valeurs fillées.
Vous pouvez faire
ce genre de choses
avec C sharp, c'est possible.
C'est un grand
un grand bout de parcs,
et ça
intervient
tous vos fonctions
dans les fonctions,
et puis,
en évaluant un whole
bout d'extension
des méthodes
qui convertissent
un fonc avec quatre paramètres
dans un fonc avec trois
et trois en deux,
et quatre en quatre
en quatre en deux,
et...
et donc,
chaque combination
vous pouvez imaginer
de combien de paramètres
il y a,
combien de paramètres il y a,
vous devez aller
et rester là-bas
et évaluer toutes ces extensions,
et puis,
chaque fois que vous vous passiez
un fonc
avec les paramètres appropriés,
il y a un bon moyen.
Tout est tout le monde.
Je n'ai jamais vraiment
fait ça en production,
parce que...
c'est peut-être un peu plus...
un peu plus
conceptuellement,
je pense, que peut-être que
les gens que je travaille avec
sont prêts pour,
mais,
si vous vous switchz
au C-Sharp,
vous trouverez que c'est
utilisé
dans un grand nombre de places
autour et autour.
Donc, évidemment,
les langues fonctionnelles
utilisent ça.
Donc, si vous vous trouverez
que c'est chargé,
c'est génial.
Vous pouvez l'utiliser là-bas.
Il y a un libre javascript
marvellous,
qui s'appelle Ramda.JS,
qui est l'un des choses
favorisées de mon travail.
C'est marvellous.
Et c'est un peu
comme une alternative
pour quelque chose d'un underscore,
ou un load-ash,
mais ça se démarre
dans les functions
fonctionnelles
fonctionnelles.
Vous pouvez écrire
des codes
vraiment wild,
ou quelque chose comme Ramda.
Je vous recommande
d'aller voir ça,
si vous avez un très bon play,
ce que vous pouvez faire
dans votre travail,
parce que c'est javascript,
et tout le monde a un javascript.
Vous n'avez pas besoin
de apprendre un nouveau langage.
Vous pouvez le faire,
ou vous pouvez
faire votre extension,
mais c'est assez
javascript.
C'est un peu comme ça,
c'est beaucoup plus javascript,
mais c'est toujours possible.
Même le nom,
Ramda.
Je ne vais pas l'inquiéter,
donc je vais devoir jouer avec ça.
C'est drôle.
Je suis un grand fan
de cette particularité.
C'est basé
comme un symbole,
comme un logo,
c'est un ram.
C'est comme un lambda,
mais c'est un sort de
javascript.
Je vais devoir jouer avec ça,
et je vais inclure le link
dans les notes de la show.
C'est drôle.
J'explique
ce que le monad est,
et vous avez donné
un exemple basé
de juste une fonction de map.
Mais où vous avez utilisé
des choses comme
peut-être,
qui ajoutent
des effets de succès
de failure.
C'est
ce que le monad est,
en fait,
que ça peut
abstractir
les effets de l'esprit.
Oui, c'est un succès de failure.
C'est tout le monad,
peut-être le map,
c'est tout le monad.
Et quand je dis
que le monad est promis,
il y a un autre monad,
c'est
que vous êtes
abstracés
de la facture
que nous attendons
d'une opération,
et que
ce succès
peut être
un succès de failure,
et que nous ne savons pas
quand.
Nous sommes abstracés
de la
execution
de la fonction
de ce que la fonction est.
C'est
vraiment
encourageant les concerns
de séparation
à un niveau
qui n'est pas possible
dans le code
de succès.
Mais il y a
beaucoup de monad.
Un autre monad
qui peut être
utilisé
pour tous,
je l'ai entendu
d'une autre.
Alors,
plutôt que
votre
peut-être
soit quelque chose
ou rien,
si vous voulez
un peu plus
de facilité
pour débarguer,
nous pouvons
bouger
dans la même
place
où,
plutôt que quelque chose
ou rien,
nous avons
à gauche et à droite.
À gauche,
il ne fonctionne pas.
Et c'est
rien.
À gauche, c'est pas ça.
Mais plutôt que
le final
d'outre
ou
vraiment rien,
vous pourriez
avoir
un exemple.
Le
path à droite,
le path à droite,
exactement
comme nous l'avons
avant,
parce que si ça fonctionne,
qui ne craint vraiment
rien?
Mais à gauche,
il n'y a pas
rien.
Vous pourriez avoir
un exemple.
La
valeur la dernière
qui a travaillé,
c'est la
des messages
d'erreur
qui étaient
reçus
à ce point.
Vous
pouvez modifier
la
classe
à
contacter
tout ce que vous voulez.
Vous pourriez avoir
des propriétés.
Vous pourriez avoir
d'autres informations
de débat
de temps
et de date
que le problème
a été
élevé.
Vous savez,
ceci est le limit.
Et puis,
si vous passiez
au point d'élevé,
vous pouvez
recevoir ce point d'élevé
et puis
faire votre
check-in
pour dire
si c'est le droit de la route,
juste le carillon.
Si non,
passez-le à
débat
et reportez
les détails
de ce que vous avez
mis en place.
Si vous avez
été bien
et vous avez
écrit toutes les méthodes
pure,
vous avez
l'objet de
complètement répliquer
l'exact état
que l'erreur a été
récapitée.
Si vous avez
capturé l'air,
l'item et
sa dernière
bonne state
et la prochaine
fonction est
pure,
on peut
récréer
l'erreur
précisément
dans un test
et récréer
la production.
Tout le monde est
content.
Nous
réduisons
l'effet
qui est
typiquement
récapité
au point
de récapture
le state
du système.
La
fonction
dans le monde
est pas supposed
dépendre de
les paramètres d'impôt
que nous avons
capturé.
Nous
récréons
précisément
ce qui s'est
Alors,
nous en parlons
de toutes ces
méthodes et des choses.
Presumément,
ces choses vont
être
dans un
library
ou un set
d'études de
utilité.
Nous avons
parlé de
l'implementation.
Mais,
comme un utiliseur,
vous n'aurez pas de
honte.
Vous
n'aurez pas
de
fonctionnement.
Vous
en faites
ça.
Nous
n'avons pas
de
interprétation
entre les
méthodes.
Nous
en avons
une
simple
logique
qui
fait
très
récréable.
Oui,
exactement.
Je
utilise
l'analogie
de
l'impact de
l'action
de
du 1980.
Je ne
n'ai pas de
honte.
Je vais
aller sur YouTube
et
voir
quelque chose.
Juste
que vous
faites,
ne vous
essayez
de regarder la version
de
l'impact de l'an
qui est
juste
à la fin.
C'est
mal.
Je
vais
devoir regarder la version de
l'an.
Je
n'ai pas de
curiosité.
Je
n'ai pas de
honte.
Je
n'ai pas
de
honte.
Je
Je
de
de
Je
n'ai pas
de
honte.
Je
aurais pas
de
honte.
Je
n'ai pas
et vous avez été réellement génériques pour que,
si vous avez écrit une chose, vous n'avez pas besoin de le toucher,
et le risque de votre projet est relativement bas.
Vous ne devez pas avoir besoin d'une nouvelle élection à chaque place,
parce que quelque chose de significatif ne devrait pas changer,
il ne devrait jamais changer si vous l'avez écrit.
Donc, c'est un investissement relativement bas,
pour sauver les codes.
Donc, d'autres libres existants qui ont déjà été impliqués
pour vous,
plutôt que de vous faire le même.
Il y a eu un peu de souci,
mais j'ai toujours trouvé ça plus d'exercice bénéficiaire
pour le faire,
parce que j'aime comprendre ça.
J'ai ma propre façon de les dépasser,
et, d'hier, les méthodes d'extension sont tellement petites
que ce n'est pas beaucoup de tests.
Mais oui, il y a une chose que je n'ai pas eu de souci,
c'est le langage X,
langage EXT.
Et ce n'est pas tout ce qui est différent de ce que j'ai déjà décrit.
Je pense que l'une des différences est que
je considère que la passée de monade est un type de retour,
si je ne suis pas sûr que l'opération va s'exister.
Je pense que ça donne une facilité
où vous pouvez avoir une fonction
qui déclame vos multiples états
à un seul valeur basé sur...
Je pense que vous passez dans plusieurs fonctions différentes
qui vont être appelées si c'était un coup de l'aéros,
si c'est quelque chose de comme ça, et ça déclame le valeur.
Oui, c'est absolument possible de faire quelque chose comme ça.
Je trouve que c'est un exercice utile
de faire ça à la main,
de la manière dont vous voulez les monades de la manière de la dépasser,
et de comprendre comment ça se dépassera.
Je pense que c'est comme valable comme tout.
C'est pas tout si difficile
quand vous avez cliqué sur comment ça s'existe.
Je me suis trouvé en train de faire une nouvelle extension
avec une formule de formation alternative
qui est très spécifique.
Je peux faire quelque chose comme
l'advent de la code,
où je fais des choses comme
agrogater jusqu'à ce que ce certain valeur
s'occupe ou quelque chose comme ça.
Vous pouvez faire des petites
potentieuses pour les extensions fonctionnelles
sur votre langue.
Agrogation, c'est un autre truc à regarder.
C'est quelque chose qui a été en C-Sharp
depuis C-Sharp 4,
et c'est chroniquement underused
dans le monde de la grande monde.
C'est une idée assez fonctionnelle
où vous commencez avec un liste de valeurs
et vous dites que c'est une fonction
qui dit que, selon le tout précédent,
c'est un total.
C'est ce que je veux faire pour convertir
ce particular item dans le nouveau total.
Et ça se passe au liste 1 à la fois,
convertir un grand nombre de listes
dans un résultat final.
Je ne m'en souviens pas de la dernière fois
que j'ai écrit un foreach loop.
Link fait tout ça pour vous,
si vous le laissez.
Je vous aime le fait que,
avec resharp,
si vous avez un foreach,
vous allez souvent se dire
que vous voulez convertir ça
dans un statement de link.
Et je ne me souviens pas de le faire.
Risen from the grave.
Le studio fait beaucoup de ça.
Il n'y a pas de candle
pour le depth de la dimension
récharpe.
Nous n'avons pas de licence
récharpe.
Je suis en train de le faire.
Il va être sympa de revenir
à la récharpe.
C'est incroyable.
Je suis en train de apprendre
beaucoup de features de C sharp
d'abord,
de la récharpe
de la plage.
Je suis en train de faire un travail
de raison, de la tenir avec moi-même.
Mais c'est toujours sympa
de savoir que ce nouveau trick
que chaque développeur devrait savoir.
Je me trouve quand je travaille
sur un code base.
Je utilise récharpe, c'est un rideur,
mais il y a récharpe,
réchaper.
Vous savez toujours que le code
qui n'est pas utilisé
récharpe, c'est pour les
fréquences et les improvements
ou les improvements de la suggestion.
Mais je n'ai pas utilisé récharpe
pour ça longtemps.
Je ne sais pas
quelle fonctionnalité que j'ai
utilisé, pas de visus studio,
c'est possible que les visus studio
soient en long terme et que je m'en suis
pas récharpe, mais je ne sais pas
pourquoi je suis si dépendant de récharpe.
Je l'ai utilisé
pour un moment,
pour le studio 2019.
C'est bon, ça donne
des bons conseils et ça a des
petites, plus courte,
c'est tout bon.
C'est un monde de la manière dont c'était
que vous devez savoir
que vous avez des libraires pour
faire des statements, et tout ça.
En bas, quand nous avons commencé,
on avait une petite liste
de savoir ce qui est en long terme
et tout ça. Non, c'est un long
moyen, et c'est toujours un aspect
de récharpe.
Mais je pense que la différence est
que avec récharpe, c'est ce que ça fait.
C'est le seul chose que ça fait.
Donc, c'est un peu plus bon.
Ça va
plus loin dans votre base de code
que les visus studio.
Si quelqu'un a la chance,
si vous n'avez pas déjà,
vous avez un jeu avec récharpe,
c'est fantastique.
Il y a aussi un test runner
de la même manière.
Des autres features que je ne suis pas
sûrs de comment je suis en train de copier.
Je me suis dit que c'est un test runner
de récharpe et de ride,
parce que c'est assez le même.
Et
si vous avez
tous les tests, ou juste une sélection
de tests, si vous avez utilisé N Crunch
dans le passé, c'est très similaire.
Vous avez donc un session
de tests, qui vous pouvez régler
en général. Dans la barbe de tour,
il y a un dropdown, qui vous peut
expliquer à l'automatique que vous
réchauffez chaque fois que vous faites un changement.
Donc, si vous avez des codes,
chaque fois que vous avez sauvé le file ou le bâtiment,
il serait automatiquement en bas,
que vous avez réchauffé toutes les tests
qui vous ont été affectés par les codes que vous avez changés.
Donc, vous avez de l'immediat
de la réponse si vous avez fait quelque chose.
C'est vraiment bien.
Ça ressemble bien.
Quand je dis la réponse, ils ont
fait des dots de couleur dans le goutterre
de votre code. Donc, c'est
red si le test s'est failé, et il
montre cela en les tests et dans votre code
en itself.
C'est green si il passe,
et en white, il n'y a pas de tests
en utilisant le code. Donc, vous
immédiatement avez cet observateur
que fait-il, que le code de production
soit en train de tester contre ça ?
Je n'ai pas mal fait, je l'ai vraiment fait.
Ça ressemble vraiment bien, je veux...
Je suis un grand advocate
pour les tests et les développements.
Il y a
plusieurs de mes collègues qui
ont vraiment vécu leur détriment.
Mais
je suis un grand fan
de ça, et on va parler de ça à la fin.
Donc,
la compagnie, à un moment,
n'est pas un truc historiquement
qui n'a pas eu lieu, mais c'est quelque chose qu'ils sont
en train de le faire. C'est génial.
C'est la bonne attitude pour avoir.
Et j'espère que je vais pouvoir les aider
en allant plus dans cette direction.
Je
personnellement ressent que, quand vous commencez à
dépasser,
quand vous avez été assez intérieur, ça devient
une partie naturelle de votre style de développement.
Et ça commence à devenir
difficile de ne pas utiliser.
Parce que
j'ai travaillé pour des années
d'un company qui étaient
incroyable en termes de la qualité
de leur style de développement
et ils ont eu
une politique de
si il n'y avait pas de tests, votre code est suspect.
Et c'était génial.
C'est vrai. Oh oui, j'aime cette attitude.
C'est bon. Et j'ai vécu de l'autre côté
et j'ai senti que
c'est comme de la tourner un montagne
et quelqu'un a été allé dans les rails de sécurité
et a tourné la belle
pavillée de la voie.
Tout est en train de se faire entrer et rien ne peut être
entré plus tard. Et c'était très difficile
d'adresser
nous en face à ce niveau de risques
d'être introduits dans un code basé.
Je pouvais changer ça ici et je ne savais pas
si j'ai introduit un blog.
C'est mindblowing.
Mon contracte est
100% TDD et ça a vraiment
appris la valeur de TDD
et c'est
très grave. Exactement comme vous disiez.
Tous les jours, les tests
en codant, les tests sont en train de trouver
des bouts.
Et je pense
que, holdez un second,
comment j'ai fait
les tests dans le passé pour les productions ?
Parce que c'est très grave.
En codant, c'est juste de les trouver
et en mostant, je n'aurais pas
remarqué quelques minutes plus tard
mais il y a des tests
qui n'ont jamais été spotés.
Un autre point que je trouve
c'est que j'ai pris un temps
ou essayé de faire un code testable
en utilisant les principes solidaires
et tout ce genre de trucs funkiers
et je l'ai fait
dans ma propre tête. Le code testable est
ensuite en train de faire des tests
contre ça. Ça n'a pas été pas
parce que les nouveaux requises sont toujours
en train de faire.
Il n'y avait pas de pointe en faisant
les tests dans le premier endroit parce que
la plupart des temps, les tests ne sont pas
passés par tous les requises
où l'un des avantages
que j'ai trouvé avec TDD,
juste en faisant les tests, c'est que
quand vous vous en faites, ça se débrouille
parce que vous ne pouvez pas l'inquiéter
parce que vous avez déjà fait ça.
Oui, absolument.
Si vous vous en faites, c'est tout un grand
long exercice TDD
parce que mon code est fait et je sais que mon code est fait
et bien sûr, vous pouvez commencer à
overlooker les choses, vous ne pouvez pas
réaliser, parce que je sais que mon code
fonctionne parce que j'ai testé ça moi-même.
Je ne peux pas le faire,
mais vous ne pouvez pas lephrater
dans les termes dans votre tête
mais quelque part, ça peut arriver, c'est facile.
Mais c'est pas facile.
C'est un problème, je veux dire, le programme
fonctionne est un grand ennemi
de choses comme TDD.
Et c'est pour beaucoup de gens, un des points de sale
qui sont très grands,
c'est le fait que c'est tellement
facile à tester,
parce que si votre fonction pure
s'y relève, vous ne vous en avez pas besoin
de faire le mock.
J'ai entendu des gens qui ont écrit
toutes les applications et les sujets tests
sans en utilisant le mock
en tout cas.
Si
c'est peut-être un petit peu plus fort que moi, je vais
utiliser le mock 0, parce que
plus tard ou plus tard, vous allez avoir
de faire des complotés de complotés
pour faire ça.
Mais c'est certainement possible de réduire
l'ampli des complotés, des
set-up qui pourraient être nécessaires
pour beaucoup de systèmes, si vous
envezz plus de la route fonctionnelle.
Et le autre chose qui envient
est la concurrence.
Donc, si
un des gros problèmes, si vous avez des processus
ou vous avez des processus de route,
si vous avez un état de part
ou un objecte de part,
vous allez avoir de la ressource
ou des conditions de route,
mais ça ne se passe pas dans le fonctionnel.
Il est probablement possible
d'avoir une très complication,
d'imaginer la propriété, mais en général,
comparé à l'objet orienté,
ce n'est pas possible,
parce que ce sont mes paramètres,
je vais opérer ces paramètres et puis
passer à cette chose prédictive.
Ça semble presque être de la sens
d'opérer dans cette manière.
C'est plus facile pour aucun cost actuel
comme ça.
Et évidemment, ces jours,
le programme concurrent est un
plus important.
Nous allons dans le monde de la
containerisation et de
plusieurs services micro-servicaux
qui se dévouent de côté à côté
et qui sont en train de
faire des programmes fonctionnels
et qui permettent de faire des choses
plutôt bonnes.
C'est un mot que nous sommes en place
pour être les plus longues épisodes
que nous avons faits.
On devrait probablement commencer par le faire,
mais vous avez mentionné
que vous êtes en train de faire un défi
de la défi de la défi?
Oui.
Je dois en parler
si vous avez les patients,
un technic et un philosophie.
Pour un technic,
je suis un grand fan
de la défi en général.
Si quelqu'un sait, je le saurais
car je peux parler de nombreux subjects.
Mais je le laure beaucoup de langues
et il y a mon technic,
il y a toutes les genres
que je laure,
car je l'ai toujours appris
parce que je l'ai bien joué.
Et l'une des meilleures app
que j'ai trouvé pour la défi de la défi
c'est un app
qui s'appelle Anki
Anki
Je crois que c'est un japonais
pour les souvenirs.
C'est un système de flashcards.
C'est un système de flashcards
qui s'est répetité.
Vous avez un bloc de flashcards
et il a un set
d'options
qui est dépendant.
Les cartes peuvent avoir html
sur le front ou le bas.
Vous pouvez avoir images, vidéos
ou, en ce cas, 99% de temps
par texte.
Vous pouvez faire de l'amende
de style et de l'information
et ce que ça va faire
c'est que vous dites
combien de cartes de nouvelles que je veux aujourd'hui
combien de réponses pour mon banque de l'old
et c'est un système
où le plus vous vous en avez
le moins souvent il vous va vous demander
si vous vous gardez ce type
vous ne vous allez pas demander
si vous vous vous rendez le jour le plus tard
vous vous garderez jusqu'à vous remercier
et puis, lentement,
vous vous en avez de la plus long terme
de la même manière que de l'apprendre.
J'ai utilisé ça pour passer les examens
j'ai utilisé ça pour apprendre le German
j'ai utilisé ça pour apprendre la musique
j'ai utilisé ça pour faire tous les trucs
donc, quelque chose qui peut être un flashcard
dans un sens où il y a un truc
sur le front qui vous prompt
et un truc sur le bas qui est le réponse
Anki est absolument terrifiant
et le truc qui est le truc est que
il y a la app des desktop et la app mobile
donc ce que je ferai c'est de
aller sur le desktop, j'ai les cartes
ou importe les cartes de la CSV
ce qui est normalement ce que je fais
et puis, presser le bout synchronisation
et puis ils sont sur mon téléphone
donc, si j'ai un peu de space dédié
quand je suis en train de faire un lift
ou tout ça, je peux juste
faire un point de vue et faire des flashcards
j'ai appris un nombre de choses
de cette manière
c'est quelque chose
que je recommande à quelqu'un
qui, comme moi, a l'impression
que j'aime apprendre
ça me semble amusant, peut-être que vous pouvez
partager les cartes avec les autres
pour apprendre à l'autre côté
je ne pense pas qu'il y a un système automatique
pour envoyer un X, je ne pense pas que ça existe
mais, ce que vous pouvez faire c'est
exporter vos cartes
et puis, passer ça sur quelqu'un
je pense que vous pouvez faire des trucs comme ça
je suppose que, probablement, si vous étiez un étudiant
et que vous étiez vos étudiants
vous pouvez probablement écrire un set de encce
dans le CSV ou un peu comme ça
et puis, juste passer ça sur le terrain
je crois que, sous la surface, c'est juste
mon database SQL
et c'est aussi extensible
vous devez écrire des extensions en Python
je ne sais pas personally Python très bien
mais je l'ai écrit quelques extensions
juste par le fait d'en rassembler
donc, il y a tous les trucs que vous pouvez faire
pour écrire ça
même si, il y a des extensions
qui font des trucs comme
écrire vos cartes en un jeu de guerre
où vous devez écrire des cartes
pour faire des troupes de film
il y a beaucoup de choses que vous pouvez faire
donc, je vous recommande
d'avoir un Anki
le deuxième est un peu plus philosophique
c'est un principle
c'est un de les principaux que j'ai travaillé
dans toute ma vie et c'est
si vous regardez un peu de code
et quelque chose dans votre tête
qui peut être meilleur
vous êtes bien
vous êtes absolument bien
vous pouvez être meilleur
et si vous avez eu le temps
allez-y, apprendre quelque chose de nouveau
travaille sur comment ça pourrait être apprové et puis revenez
et il y a vous, vous êtes un meilleur développeur
de côté par côté
c'est un très bon devtip
je peux peut-être suivre votre leader et faire deux aussi
mais mon 1.0 est pour vous aujourd'hui
c'est tout de même
nous utilisons les expressions régulaires
et il y a un site très bon
un site appel regx101.com
et c'est juste
une web app
et c'est un bon site où vous pouvez
faire différents tests, vous pouvez entrer
un bloc de texte
vous avez un syntaxe qui est délicieux
comme vous vous typez votre expression régulière
et ça montre tous les matchs et les groupes
c'est juste un très bon site
très vite qui va au site
quand vous travaillez avec les expressions régulaires
je vais vous le dire et probablement un peu en ma propre
en le fait que je l'aime beaucoup
mais c'est un peu plus compliqué
il peut être un peu mind bending
je n'ai pas utilisé
ce site en particulier
mais j'ai utilisé un très similaire
pour le même purpose
et de retour à l'adventure
il y a des temps où
j'ai été labourer
pour les heures
en écrire cette complication incroyable
c'est un code C sharp
pour passer un string et puis
on regarde par la ligne, quelqu'un a fait un redjack
il a fait 12 personnages
il a fait tout ce que vous avez fait
c'est incroyable
et je pense que c'est un des choses
qui est assez chroniquement utilisée
dans le monde de développement
quand il peut faire autant pour nous
donc mon deuxième tip de dév
qui est plus sur le sujet pour aujourd'hui
c'était une fois, j'ai été montré
par un d'autres
je n'ai pas aimé le nom
il m'a montré un site
c'est aussi un langage qui s'appelle Dark Lang
donc sur Twitter c'est atDartLang
mais le site d'un site
DarkLang.com
et c'est un langage très fonctionnel
mais vous pouvez
droiter et droiter
les fonctions autour
et il a un UI qui est vraiment funki
et c'est vraiment difficile de expliquer
mais si vous allez à DarkLang.com
je peux inclure le lien dans les notes de la show
ils ont une vidéo démo
qui le montre et c'est assez mindbending
donc c'est certainement plus important de regarder
et je me suis dit
et je me suis dit
ils créent le même Scott Vlash in Talk
qui parle avec le programme Railway
donc ils sont clairement sur le ball
en termes de la fonctionnel
c'est quelque chose que je dois avoir un dig
pour moi-même
il me semble très cool
quand Tom m'a montré
j'ai ajouté le liste
mais comme avec tout
c'est un long liste
je pense que c'est un peu important
mais je vais aussi avoir un dig
parce que c'est super cool
est-ce qu'il y a quelque chose que vous voulez mentionner
avant de vous remettre?
je n'ai pas oublié de parler de la reconnaissance pataine
en fait, comme sur C-Sharp9
c'est assez...
si vous regardez
les nouvelles statements, les statements switch
vous avez un dig deep
un dig deep dans lesquels vous entendez
mais c'est tout ça
c'est juste un très compliqué, puissant switch
où vous pouvez changer les propres
et de choses comme ça
et de la même manière, il faut réduire le code de la taille
parce que c'est vraiment C-Sharp9
j'aime C-Sharp9
donc, regardez ça
et d'autre que ça, juste restez bien
c'est un
un ans difficile
que nous avons juste terminé
j'ai cette ressentie que le monde
est plus près de la basse de la règle
donc c'est mon hope que ce prochain an
à la fin de l'année
j'espère que c'est la seule direction que nous allons faire
nous avons des choses à la fin de l'année
donc, restez bien, les gens
je me sens mal que c'est un peu plus
et qu'il y a un peu plus
mais je ne me souviens pas
qu'il y a un peu plus de choses avant que ça se passe
mais on a juste de la hope
que...
je pense que ça va descendre à la vaccination
oui, à la fin de la semaine
c'est comme...
pas tous les problèmes que nous faisons
mais avec beaucoup de gens
c'est comme si la règle a été tournée
et ça peut prendre un peu plus de momentum
d'impersonner
pour nous eff Risk
boring
c'est commeckt, il y a peut-être
quelque sorte de l'時候 à la fin de l'année
il y a des points présent ai 2020
où ces gens me disent
C'était un nin соп!
C'était un bon plat et ça a été une challenged.
Je ne pourrais pas finir avec deux flo referring les tropicales.
Je suis des musulmans et gamer·es et musulmans à est de troisième.
touché m'un
Je vais faire un tour sur le monde et je vais être un peu mieux avec mon défi, je pense.
Mais pour maintenant, au moins, merci, tout va bien.
Episode suivant:
Les infos glanées
TheUnhandledExceptionPodcast
Tags
F# and Functional Programming