Il y a beaucoup de choses à reprocher à l’Ancien Régime, mais la quête de la productivité n’en fait pas parti, et tu vas être surpris du nombre de jours fériés et chômés de l’époque.
Posté par neil .
En réponse au journal Pour les expats.
Évalué à 3.
Dernière modification le 08 janvier 2015 à 23:50.
Sur le même principe il y a les forfaits d’OVH, qui sont moins chers et plus modulables. Il y a aussi des téléphones qui ont directement la connectivité ethernet, pour éviter la passerelle.
Posté par neil .
En réponse au journal Word vs TeX.
Évalué à 2.
Dernière modification le 31 décembre 2014 à 01:10.
Les plugins Zotero et Mendeley (basé dessus) sont horribles sous Word aussi bien que sous LibreOffice, et carrément inutilisable dès qu’on active les modifications. Ce qui est quand même un comble pour des articles scientifiques. Les styles de citation sont peut-être bons, mais basés sur CSL qui est largement en dessous du niveau de personnalisation offert par LaTeX.
Posté par neil .
En réponse au journal Word vs TeX.
Évalué à 5.
Tout à fait. Par contre on parle d’écriture d’article scientifique, et aucun des outils proposés ne semble pertinent pour gérer la base cet usage (références, bibliographie, équations, diagrammes, etc). Sans parler de l’outil Hemingway qui ne devrait servir qu’à écrire des livres pour enfants.
Pareil, je suis passé à systemd sans en avoir besoin parce que les distributions que j’utilise l’on fait mais les trois premiers points me semblent faux : sur un vieux netbook, au moins une fois sur 10 le démarrage bloque sans atteindre le login graphique ; sur un laptop que j’utilise souvent, systemd faisait ramer tout le système lors des crash et j’ai du désactiver les coredumps, ça semble une “feature” connue d’après les wikis des distributions, sur la même machine systemd utilise de temps à autre 100% du CPU (rarement, mais pourquoi ?) ; ça fait des années que j’utilise des SSD, et sur des os qui bootent en quelques secondes, ou qui attendent une clé de chiffrement, je n’ai pas d’amélioration perceptuellement significative.
Systemd me fait quand même gagner pas mal de temps avec la centralisation des logs, la recherche par des dates spécifiques, et tout le reste.
Pour la rapidité je reste vraiment déçu. Ça aurait été pas mal d’avoir un système qui démarre quasiment instantanément après appui sur le bouton marche, avec directement l’écran de connexion. Je ne comprends pas pourquoi les OS, noyaux et le matériel se contentent toujours de ces déplorables secondes qui rendent la mise en veille si intéressante.
Posté par neil .
En réponse au journal Le réseau dans C++.
Évalué à 2.
Dernière modification le 26 novembre 2014 à 20:12.
J’imagine que tu parles de operator[] const dans Qt, qui peut retourner une valeur par défaut (pour certains types seulement!), alors que la STL est basée sur des itérateurs, avec find ou equal_range qui en retournent (même s’il existe at qui lance une exception). L’un des avantages de la STL est de s’appuyer sur une théorie des itérateurs validée par la pratique et bien définie, décrite par exemple dans les travaux de Stepanov, notamment son Elements of Programming.
Si vraiment on veut faire du C-style, C++ permet de définir cet opérateur en une petite ligne de code, et rien n’empêche soumettre une proposition rajoutant ce manque « cruel » au comité C++, le développement actuel du langage étant relativement ouvert.
Posté par neil .
En réponse au journal Le réseau dans C++.
Évalué à 2.
Dernière modification le 24 novembre 2014 à 19:28.
Proposition remplacée par la N4073, avec toujours la même implémentation. On peut noter les dépendances insolites à Gtk+ pour la version Linux, alors que la proposition se limite au rendu graphique (laissant le fenêtrage et les interactions à d’autres groupes de travail).
En anglais il est recommandé de mettre deux espaces après un point en mode texte.
Pas du tout, ça a été le cas dans la première partie du vingtième siècle, ça a été à la mode un peu avant, mais c’est depuis largement obsolète dans la grande majorité des ouvrages de typographie anglophones, comme l’indiquent les nombreuses références de l’article Wikipédia associé.
Miguel fournit deux liens avec plus d'explications sur ça
Il dit surtout que ça sert à mieux repérer le début des phrases (!). Ne parlons même pas des liens qui sont des blogs remplis d’arguments pseudo-scientifiques pour justifier l’antique pratique, avec des preuves spectaculaires à coup de Gimp (!). En rajoutant des espaces, non seulement on perd de l’information contextuelle lors des saccades pour la lecture, mais on perd aussi de l’espace dans des terminaux, on rajoute de la complexité à l’éditeur, et on grossit ses documents. Heureusement tout cela reste tout à fait mineur.
Pour ceux qui ne connaîtraient pas le personnage, on peut consulter sa page Wikipédia, avec tout ses bons conseils du moment : utiliser Mac OS X plutôt que Linux, utiliser OOXML plutôt qu’ODF ou encore utiliser .NET sous Linux. Il reste pertinent pour avoir initié GNOME et Midnight Commander dans les années 90.
C’est expliqué dans une vidéo, mais où est la documentation HTML ou PDF en ligne ? Ça semble dur à trouver sur le site pas très clair.
Par exemple, je cherche si on peut extraire des données 1D à partir de données 2D sur des segments arbitraires (pas parallèles aux axes) comme sous ImageJ.
J’utilise pratiquement exclusivement Emacs et vim depuis une quinzaine d’année, je ne pense pas changer prochainement, mais les screenshots que tu montres sont des fonctionnalités bateaux et qui datent.
L’un des avantages des nouveaux éditeurs et d’avoir plus que le mode texte (avec couleur d’avant et d’arrière plan, comme pour comet et rainbow) ou des images non-manipulables (PDF). Par exemple, sous Atom on peut faire des graphes pour exprimer les commits gits, éditer joliment du markdown avec aperçu instantanné, rajouter une barre d’outil type multimédia pour explorer les changements, demander à stackoverflow et obtenir les réponses formatées dans l’éditeur, afficher des labels par dessus des emplacements du texte comme sous vimperator pour y sauter directement au clavier et visuellement, avoir un éditeur graphique de Béziers pour les CSS, et j’en passe et des meilleures. Tout ce graphisme permet d’utiliser un peu mieux les moniteurs 4k et surtout notre cortex visuel.
Le second avantage est que tout ça est configurable avec des technologies bateaux du web (CSS, CoffeeScript, CSON). Ça démocratise largement la création d’extensions, et sépare nettement le visuel, le script, et la configuration.
C’est juste dommage que ça consomme autant (Chrome inside).
Je ne vais pas me lancer dans l'exercice périlleux de leur interprétation
En même temps c’est tout l’intérêt de faire des mesures. En voilà une :
Partout où on voudrait utiliser un accélérateur tel que parakeet, numba ou pythran, c’est à dire quand les temps de calculs sont lents en CPython, parakeet semble être la solution. Si on ne considère que les temps pour lesquels CPython prend plus de 1e6, parakeet est systématiquement meilleur que pythran. Après il faudrait savoir si c’est signifiant, peut-être en regardant si la distribution est normale et en ayant les écart-types, sinon ça ne veut rien dire (déjà que les micro-benchs on sait ce que ça vaut).
Après, je rejoint l’idée de la comparaison avec du fortran ou l’une des bibliothèques équivalentes en C++.
Aux US tu as les cartes de crédit, pour lesquelles tu ne rentres pas ton code, mais pour lesquelles tu signes (les cartes étrangères entrent dans cette catégorie), et les cartes de débit pour lesquelles tu entres soit un code, soit ton code postal (pour un paiment par Internet, ils vérifient souvent l’adresse complète !). Pour une carte de débit, ça te fais déjà deux codes à connaître. (Il y a quelques exceptions, un peu comme les autoroutes en France.)
En plus de ces codes, beaucoup d’enseignes ont un système de fidélité (sans lequel les prix augmentent franchement) pour lesquelles tu peux avoir une carte, qui est pratiquement tout le temps substituable par son numéro de téléphone. On te demande aussi tout le temps ton numéro, chez le médecin, le coiffeur, partout. Encore une série de 10 chiffres à retenir.
À ça s’ajoute le numéro de sécurité sociale, qui est demandé à bien des occasions.
Bref, je ne pense pas que retenir 4 chiffres pose problème ici. Sans parler des lecteurs de cartes qui sont aussi là pour te demander, en plus du code ou de la signature, si tu as une carte de débit ou de crédit, si tu veux retirer de l’argent (oui, on retire en payant), si tu veux laver ta voiture après avoir fait le plein, ou si tu veux faire un don pour telle ou telle association. Ici, tout est loooooong.
Ils ne doivent pas être si nombreux que ça parce que la carte de paiement avec un code à 4 chiffres ça existe depuis belle lurette et à ma connaissance personne ne se plaint de ne pas réussir à retenir le code.
Ça c’était avant, quand les gars arrivaient à retenir plusieurs numéros de téléphones à 6, 8 ou même 10 chiffres ! Depuis les smartphones ont attrophié l’hippocampe.
Ouais, mais les empreintes digitales ont quand même un avantage pour l’authentification : elles sont facilement répudiables, comme tous les autres systèmes à bases de marqueurs biologiques !
En plus, avant tu pouvais éviter de te prendre un couteau entre les côtes en filant ton code secret, maintenant on te coupe directement un doigt pour te vider ton compte.
Posté par neil .
En réponse au journal Rust en version 0.12.
Évalué à 3.
Dernière modification le 16 octobre 2014 à 01:17.
Je croyais qu’il fallait éviter les monades si possible pour faire du « pur »…
Non, on évite les effets de bords, qui sont implémentés par des monades spécifiques telles que IO ou ST (pour le parallélisme). Pour ces cas particuliers justement les monades permettent de cacher les effets de bord dans une structure algébrique tout à pure, la monade. On peut difficilement faire plus pur que la monade (->) r qui correspond aux fonctions !
Il n’y a pas d’avantages autre qu’humoristique ou algébrique à utiliser les définitions que j’ai donné. Ça reste tout de même instantanément compréhensible par les Haskellers, de part leur esprit tordu. Dans le même genre on peut lire The evolution of a Haskell programmer.
Posté par neil .
En réponse au journal Rust en version 0.12.
Évalué à 3.
Dernière modification le 16 octobre 2014 à 01:06.
En C++, il vaut mieux éviter les std::function qui posent des problèmes de performance, aussi bien en temps d’exécution qu’en espace mémoire, et les remplacer par des templates ou des auto, en particulier pour des fermetures. Écrire auto f = [](){} et std::function<…> f = [](){} n’est pas du tout équivalent.
Pour ce genre de détails, qui sont légions en C++, il y a pas mal de bouquins intéressant, en particulier Effective Modern C++ de Scott Meyers, en early release chez O’Reilly pour tout ce qui est C++11/C++14.
Je vais aller expliquer aux gars ici (aux US) qui ne peuvent pas payer les trous budgétaires que sont la santé, la retraite et l’éducation pour eux et leurs enfants, sans parler des routes de merde et du reste. Leur dire que s’ils ne peuvent pas se payer le traitement pour leur cancer, ou autre, c’est pas grave car ils ont le dernier iBidule à 99$. Ils vont être vachement soulagés du coup.
join, dans le module Control.Monad, c’est le join classique de monades. Haskell a choisit d’utiliser bind et return, mais on pourrait utiliserjoin à la place. Dans tous les cas passer de l’un à l’autre est assez simple:
join::Monadm=>m(ma)->majoin=(>>=id)
Dans l’exemple que je donne plus haut, on tient compte du fait que (->) r soit une instance de Monad, pour laquelle join soit applicable, avec pour définition :
On a (*) : Num a => a -> a -> a, donc (*) est une instance de Monad pour Num a => (->) a. Puisque join = (>>= id), alors join (*) = id >>= (*) = \x -> (*) (id x) x = \x -> (*) x x = \x -> x * x, soit un fonction qui prend un nombre en argument et retourne sa valeur multipliée par elle-même.
[^] # Re: C'est dur d'être aimé par des cons!
Posté par neil . En réponse au journal Liberté d'expression sous les balles. Évalué à 7.
Il y a beaucoup de choses à reprocher à l’Ancien Régime, mais la quête de la productivité n’en fait pas parti, et tu vas être surpris du nombre de jours fériés et chômés de l’époque.
[^] # Re: VoIP
Posté par neil . En réponse au journal Pour les expats. Évalué à 3. Dernière modification le 08 janvier 2015 à 23:50.
Sur le même principe il y a les forfaits d’OVH, qui sont moins chers et plus modulables. Il y a aussi des téléphones qui ont directement la connectivité ethernet, pour éviter la passerelle.
[^] # Re: C'est dur d'être aimé par des cons!
Posté par neil . En réponse au journal Liberté d'expression sous les balles. Évalué à 2.
Pareil pour le dimanche. C’est pas parce qu’un gros flegmard n’arrivait plus à se bouger le cul le 7ème jour qu’on doit tous faire pareil quoi !
[^] # Re: bibliographie
Posté par neil . En réponse au journal Word vs TeX. Évalué à 2. Dernière modification le 31 décembre 2014 à 01:10.
Les plugins Zotero et Mendeley (basé dessus) sont horribles sous Word aussi bien que sous LibreOffice, et carrément inutilisable dès qu’on active les modifications. Ce qui est quand même un comble pour des articles scientifiques. Les styles de citation sont peut-être bons, mais basés sur CSL qui est largement en dessous du niveau de personnalisation offert par LaTeX.
[^] # Re: Prochaine enquête
Posté par neil . En réponse au journal Word vs TeX. Évalué à 5.
Tout à fait. Par contre on parle d’écriture d’article scientifique, et aucun des outils proposés ne semble pertinent pour gérer la base cet usage (références, bibliographie, équations, diagrammes, etc). Sans parler de l’outil Hemingway qui ne devrait servir qu’à écrire des livres pour enfants.
[^] # Re: Bonne nouvelle
Posté par neil . En réponse au journal Indication de type pour Python. Évalué à 2.
Tu peux loger les problèmes et surtout les corriger en hotplug avec Erlang.
[^] # Re: Bah merde alors!
Posté par neil . En réponse au journal Mon réseau (aussi). Évalué à 6.
Plus sérieusement, c’est quoi l’avantage d’avoir deux fois le même FAI plutôt que des FAIs différents ?
[^] # Re: libpcap
Posté par neil . En réponse au journal Turla, virus pour tous (oui pour Linux aussi). Évalué à 8.
Techniquement c’est du port knocking de base, tel qu’on en utilise dès qu’on veut cacher un service à
nmap
et qu’on se moque des spofs.[^] # Re: Fonctionnalités clées.
Posté par neil . En réponse à la dépêche Pourquoi les zélateurs et détracteurs de systemd ne s'entendront jamais. Évalué à 8.
Pareil, je suis passé à systemd sans en avoir besoin parce que les distributions que j’utilise l’on fait mais les trois premiers points me semblent faux : sur un vieux netbook, au moins une fois sur 10 le démarrage bloque sans atteindre le login graphique ; sur un laptop que j’utilise souvent, systemd faisait ramer tout le système lors des crash et j’ai du désactiver les coredumps, ça semble une “feature” connue d’après les wikis des distributions, sur la même machine systemd utilise de temps à autre 100% du CPU (rarement, mais pourquoi ?) ; ça fait des années que j’utilise des SSD, et sur des os qui bootent en quelques secondes, ou qui attendent une clé de chiffrement, je n’ai pas d’amélioration perceptuellement significative.
Systemd me fait quand même gagner pas mal de temps avec la centralisation des logs, la recherche par des dates spécifiques, et tout le reste.
Pour la rapidité je reste vraiment déçu. Ça aurait été pas mal d’avoir un système qui démarre quasiment instantanément après appui sur le bouton marche, avec directement l’écran de connexion. Je ne comprends pas pourquoi les OS, noyaux et le matériel se contentent toujours de ces déplorables secondes qui rendent la mise en veille si intéressante.
[^] # Re: Article partial ?
Posté par neil . En réponse au journal Qu’est-ce que Bitcoin, comment ça marche et pourquoi c’est une révolution ?. Évalué à 8.
D’habitude on lave l’argent d’origine douteuse, mais c’est vrai qu’après lavage il faut bien le faire sécher.
[^] # Re: Boule de cristal
Posté par neil . En réponse au journal Le réseau dans C++. Évalué à 2. Dernière modification le 26 novembre 2014 à 20:12.
J’imagine que tu parles de
operator[] const
dans Qt, qui peut retourner une valeur par défaut (pour certains types seulement!), alors que la STL est basée sur des itérateurs, avecfind
ouequal_range
qui en retournent (même s’il existeat
qui lance une exception). L’un des avantages de la STL est de s’appuyer sur une théorie des itérateurs validée par la pratique et bien définie, décrite par exemple dans les travaux de Stepanov, notamment son Elements of Programming.Si vraiment on veut faire du C-style, C++ permet de définir cet opérateur en une petite ligne de code, et rien n’empêche soumettre une proposition rajoutant ce manque « cruel » au comité C++, le développement actuel du langage étant relativement ouvert.
[^] # Re: Boule de cristal
Posté par neil . En réponse au journal Le réseau dans C++. Évalué à 2. Dernière modification le 24 novembre 2014 à 19:28.
Proposition remplacée par la N4073, avec toujours la même implémentation. On peut noter les dépendances insolites à Gtk+ pour la version Linux, alors que la proposition se limite au rendu graphique (laissant le fenêtrage et les interactions à d’autres groupes de travail).
[^] # Re: Atom
Posté par neil . En réponse au journal Y'en a marre de ce gros troll !. Évalué à 2. Dernière modification le 21 novembre 2014 à 18:52.
Joli argument d’autorité.
Pas du tout, ça a été le cas dans la première partie du vingtième siècle, ça a été à la mode un peu avant, mais c’est depuis largement obsolète dans la grande majorité des ouvrages de typographie anglophones, comme l’indiquent les nombreuses références de l’article Wikipédia associé.
Il dit surtout que ça sert à mieux repérer le début des phrases (!). Ne parlons même pas des liens qui sont des blogs remplis d’arguments pseudo-scientifiques pour justifier l’antique pratique, avec des preuves spectaculaires à coup de Gimp (!). En rajoutant des espaces, non seulement on perd de l’information contextuelle lors des saccades pour la lecture, mais on perd aussi de l’espace dans des terminaux, on rajoute de la complexité à l’éditeur, et on grossit ses documents. Heureusement tout cela reste tout à fait mineur.
Pour ceux qui ne connaîtraient pas le personnage, on peut consulter sa page Wikipédia, avec tout ses bons conseils du moment : utiliser Mac OS X plutôt que Linux, utiliser OOXML plutôt qu’ODF ou encore utiliser .NET sous Linux. Il reste pertinent pour avoir initié GNOME et Midnight Commander dans les années 90.
[^] # Re: Format des données
Posté par neil . En réponse à la dépêche Kst, outil de tracés graphiques convivial et puissant. Évalué à 3. Dernière modification le 20 novembre 2014 à 00:11.
Est-ce que ça prend en charge le format HDF5, qui semble assez standard au travers des plateformes/logiciels ?
[^] # Re: format de sortie
Posté par neil . En réponse à la dépêche Kst, outil de tracés graphiques convivial et puissant. Évalué à 2. Dernière modification le 20 novembre 2014 à 00:10.
C’est expliqué dans une vidéo, mais où est la documentation HTML ou PDF en ligne ? Ça semble dur à trouver sur le site pas très clair.
Par exemple, je cherche si on peut extraire des données 1D à partir de données 2D sur des segments arbitraires (pas parallèles aux axes) comme sous ImageJ.
# Atom
Posté par neil . En réponse au journal Y'en a marre de ce gros troll !. Évalué à 7. Dernière modification le 14 novembre 2014 à 18:19.
J’utilise pratiquement exclusivement Emacs et vim depuis une quinzaine d’année, je ne pense pas changer prochainement, mais les screenshots que tu montres sont des fonctionnalités bateaux et qui datent.
L’un des avantages des nouveaux éditeurs et d’avoir plus que le mode texte (avec couleur d’avant et d’arrière plan, comme pour
comet
etrainbow
) ou des images non-manipulables (PDF). Par exemple, sous Atom on peut faire des graphes pour exprimer les commits gits, éditer joliment du markdown avec aperçu instantanné, rajouter une barre d’outil type multimédia pour explorer les changements, demander à stackoverflow et obtenir les réponses formatées dans l’éditeur, afficher des labels par dessus des emplacements du texte comme sous vimperator pour y sauter directement au clavier et visuellement, avoir un éditeur graphique de Béziers pour les CSS, et j’en passe et des meilleures. Tout ce graphisme permet d’utiliser un peu mieux les moniteurs 4k et surtout notre cortex visuel.Le second avantage est que tout ça est configurable avec des technologies bateaux du web (CSS, CoffeeScript, CSON). Ça démocratise largement la création d’extensions, et sépare nettement le visuel, le script, et la configuration.
C’est juste dommage que ça consomme autant (Chrome inside).
# Parakeet winner?
Posté par neil . En réponse à la dépêche Pythran 0.6 - compilation de noyaux scientifiques écrits en Python. Évalué à 2.
En même temps c’est tout l’intérêt de faire des mesures. En voilà une :
Partout où on voudrait utiliser un accélérateur tel que parakeet, numba ou pythran, c’est à dire quand les temps de calculs sont lents en CPython, parakeet semble être la solution. Si on ne considère que les temps pour lesquels CPython prend plus de 1e6, parakeet est systématiquement meilleur que pythran. Après il faudrait savoir si c’est signifiant, peut-être en regardant si la distribution est normale et en ayant les écart-types, sinon ça ne veut rien dire (déjà que les micro-benchs on sait ce que ça vaut).
Après, je rejoint l’idée de la comparaison avec du fortran ou l’une des bibliothèques équivalentes en C++.
[^] # Re: Fondu Enchaîné
Posté par neil . En réponse au journal Lollypop: un autre lecteur audio pour GNOME. Évalué à 2.
C’est ultime en quoi par rapport à ce qui se faisait, par exemple, il y a 10 ans sous winamp ?
[^] # Re: Sans code
Posté par neil . En réponse au journal Identification versus authentification : l'embrouille de Zwipe et Mastercard.. Évalué à 5. Dernière modification le 18 octobre 2014 à 08:00.
Pas sûr :
Aux US tu as les cartes de crédit, pour lesquelles tu ne rentres pas ton code, mais pour lesquelles tu signes (les cartes étrangères entrent dans cette catégorie), et les cartes de débit pour lesquelles tu entres soit un code, soit ton code postal (pour un paiment par Internet, ils vérifient souvent l’adresse complète !). Pour une carte de débit, ça te fais déjà deux codes à connaître. (Il y a quelques exceptions, un peu comme les autoroutes en France.)
En plus de ces codes, beaucoup d’enseignes ont un système de fidélité (sans lequel les prix augmentent franchement) pour lesquelles tu peux avoir une carte, qui est pratiquement tout le temps substituable par son numéro de téléphone. On te demande aussi tout le temps ton numéro, chez le médecin, le coiffeur, partout. Encore une série de 10 chiffres à retenir.
À ça s’ajoute le numéro de sécurité sociale, qui est demandé à bien des occasions.
Bref, je ne pense pas que retenir 4 chiffres pose problème ici. Sans parler des lecteurs de cartes qui sont aussi là pour te demander, en plus du code ou de la signature, si tu as une carte de débit ou de crédit, si tu veux retirer de l’argent (oui, on retire en payant), si tu veux laver ta voiture après avoir fait le plein, ou si tu veux faire un don pour telle ou telle association. Ici, tout est loooooong.
[^] # Re: On ne connait pas les mêmes personnes
Posté par neil . En réponse au journal Identification versus authentification : l'embrouille de Zwipe et Mastercard.. Évalué à 10.
Ça c’était avant, quand les gars arrivaient à retenir plusieurs numéros de téléphones à 6, 8 ou même 10 chiffres ! Depuis les smartphones ont attrophié l’hippocampe.
[^] # Re: Oui allo j'écoute !
Posté par neil . En réponse au journal Identification versus authentification : l'embrouille de Zwipe et Mastercard.. Évalué à 10.
Ouais, mais les empreintes digitales ont quand même un avantage pour l’authentification : elles sont facilement répudiables, comme tous les autres systèmes à bases de marqueurs biologiques !
En plus, avant tu pouvais éviter de te prendre un couteau entre les côtes en filant ton code secret, maintenant on te coupe directement un doigt pour te vider ton compte.
[^] # Re: simple ?
Posté par neil . En réponse au journal Rust en version 0.12. Évalué à 3. Dernière modification le 16 octobre 2014 à 01:17.
Non, on évite les effets de bords, qui sont implémentés par des monades spécifiques telles que
IO
ou ST (pour le parallélisme). Pour ces cas particuliers justement les monades permettent de cacher les effets de bord dans une structure algébrique tout à pure, la monade. On peut difficilement faire plus pur que la monade(->) r
qui correspond aux fonctions !Il n’y a pas d’avantages autre qu’humoristique ou algébrique à utiliser les définitions que j’ai donné. Ça reste tout de même instantanément compréhensible par les Haskellers, de part leur esprit tordu. Dans le même genre on peut lire The evolution of a Haskell programmer.
[^] # Re: simple ?
Posté par neil . En réponse au journal Rust en version 0.12. Évalué à 3. Dernière modification le 16 octobre 2014 à 01:06.
En C++, il vaut mieux éviter les
std::function
qui posent des problèmes de performance, aussi bien en temps d’exécution qu’en espace mémoire, et les remplacer par des templates ou desauto
, en particulier pour des fermetures. Écrireauto f = [](){}
etstd::function<…> f = [](){}
n’est pas du tout équivalent.Pour ce genre de détails, qui sont légions en C++, il y a pas mal de bouquins intéressant, en particulier Effective Modern C++ de Scott Meyers, en early release chez O’Reilly pour tout ce qui est C++11/C++14.
[^] # Re: Hmm
Posté par neil . En réponse au journal La fin du double Irish ?... Non, je déconne !. Évalué à 10. Dernière modification le 15 octobre 2014 à 18:15.
Je vais aller expliquer aux gars ici (aux US) qui ne peuvent pas payer les trous budgétaires que sont la santé, la retraite et l’éducation pour eux et leurs enfants, sans parler des routes de merde et du reste. Leur dire que s’ils ne peuvent pas se payer le traitement pour leur cancer, ou autre, c’est pas grave car ils ont le dernier iBidule à 99$. Ils vont être vachement soulagés du coup.
[^] # Re: simple ?
Posté par neil . En réponse au journal Rust en version 0.12. Évalué à 4.
join, dans le module
Control.Monad
, c’est le join classique de monades. Haskell a choisit d’utiliser bind et return, mais on pourrait utiliser join à la place. Dans tous les cas passer de l’un à l’autre est assez simple:Dans l’exemple que je donne plus haut, on tient compte du fait que
(->) r
soit une instance de Monad, pour laquellejoin
soit applicable, avec pour définition :On a
(*) : Num a => a -> a -> a
, donc(*)
est une instance deMonad
pourNum a => (->) a
. Puisquejoin = (>>= id)
, alorsjoin (*)
=id >>= (*)
=\x -> (*) (id x) x
=\x -> (*) x x
=\x -> x * x
, soit un fonction qui prend un nombre en argument et retourne sa valeur multipliée par elle-même.