Ainsi, je garde les raccourcis par défaut, juste légèrement transposés pour les déplacements simples. J'ai rien d'autre à toucher, c'est idéal. (Bon, après, j'ai d'autres modifications au bépo de bases, sans rapport avec vim mais dues à la disposition non conventionnelle des touches, comme foutre "f" sur caps lock que je n'utilise quasiment jamais et que j'ai mis lui même sur "`".)
Tu peux faire f :: m a -> int mais pas "g :: m -> b" où m est une monade, ni "h :: m a -> m".
Pour moi, ça fait que les monades ne sont pas citoyens de première classe.
randomIO ne retourne pas une monade (les monades ne sont pas des citoyens de première classe en Haskell). randomIO, fonction zéro-adique, retourne une valeur dans la monade IO. Et c'est différent.
Quand tu fais f = randomIO tu n'évalues pas randomIO, tu crées un nouveau binding vers la fonction randomIO (en gros, un alias). En évaluant ta variable f plusieurs fois, tu appelles la fonction zéro-adique randomIO autant de fois, et tu obtiens donc des résultats différents (résultats qui sont extraits par <- et non par =).
Ce comportement se comprend mieux si on compare à la monade State qui fonctionne de manière similaire, mais à laquelle tu fournies l'objet de type World explicitement. Tu peux écrire une fonction randomState qui se comporte de façon similaire. Cette fonction serait pure. Mais avec IO, tu es incapable de reproduire l'exécution, car tu es incapable de fournir ou extraire le monde (contrairement à la monade State). En pratique, c'est donc impure. C'est important, car on programme plus en pratique qu'en théorie.
D’un point de vue moins pragmatique, tu te trompes. Ta fonction foo n’a pas renvoyé un résultat différent à chaque fois. Elle a toujours renvoyé une Num a => IO a. Le fait qu’a un moment donné quelque chose (une valeur numérique, probablement un Int) ait été généré à partir de cette IO n’affecte pas la pureté de foo.
La fonction n'est pas pure, car son résultat dépend d'un état caché, celui de la monade IO. Plus précisément, elle dépend de randomIO qui n'est pas pure et dont elle extrait une valeur qu'elle retourne. On en a pour preuve que le résultat est effectivement différent.
Tu parles de toujours retourner Num a => IO a, mais c'est le type, non la valeur. Le type est habité par un grand nombre de valeurs, plusieurs desquelles peuvent être retournées par des appels successifs à foo, ce qui s'observe en pratique.
(NB: on peut tout à fait avoir une fonction pure dans IO:
barx=doinutile<-return5returnx
Cette fonction retournera toujours la même valeur, et n'effectue aucun effet de bord observable, en dépit du fait qu'elle est "marquée".)
La spécificité la plus marquante de Haskell, c'est qu'il s'agit d'un langage fonctionnel pur : une fonction appelée avec les mêmes arguments renverra toujours le même résultat, contrairement à une fonction comme input(message) en python.
J'ai essayé avec le code suivant :
importSystem.Randomfoox=dor<-randomIOreturn(x+r)
Mais à chaque fois que j'appelle la fonction foo avec le paramètre "3", j'obtiens un résultat différent. Mon GHC est-il cassé ?
Bon, ben j'avais du temps à perdre alors j'ai résolu mon problème…
La méthode fut en gros la suivante:
récup des paquets installés: dpkg -l | grep ii | awk '{print $2}' > all
sauvegarde: cp all all1
Boucle
sudo aptitude reinstall cat all1 2>&1 | grep "find a source" | awk '{print $11}' | head -1 | sed -e "s/'//g" > pkg
l'aptitude ci-dessus échoue, car debian ne peut pas réinstaller un paquet obsolète dont on a pas les sources. Par ailleurs, ce paquet est en conflit avec une version plus récente, installée mais pas configurée. Je récupère donc son nom.
Retirage du paquet conflictuel de ma liste des paquets à réinstaller: cat all1 | grep -v cat pkg | sed -e's/:i386//' -e's/:amd64//' > all2
mv all2 all1
Ajout du paquet à la liste des paquets à désinstaller: cat pkg >> toDelete
puis je désinstalle les paquets conflictuels, et je peux enfin faire un aptitude reinstall de tous les autres, maintenant que ça ne va plus planter.
Un reboot, et youpi ca marche \o/
Bilan 1 : c'est nul qu'on puisse pas detecter les conflits et automatiser la désinstallation des versions obsolètes.
Bilan 2 : les scripts, ça fait vraiment gagner du temps!
Je crois pas que les etags/ctags aillent dans les .class, alors que c'est justement ce que je désire. Je veux une complétion plus intelligente que "les fichiers source dans le répertoire en cours". Pas de problème si c'est pas dynamique. Si tu retrouves le lien vers l'autre, ça m'intéresse.
Je pense que tu peux t'en sortir avec un algo naïf de même:
tu fais une détection de contours, puis tu cherches tous les contours qui, dans l'image de base, contiennent des couleurs très sombres. Dans le cas particulier de ton image, ça marcherait.
Enfin, dans l'image en question, une simple différence de contraste devrait marcher aussi bien.
Si tu lisais la ML des devs de vim, tu verrais qu'il y a beaucoup de choses que les gens veulent rajouter. Les exemples classiques sont "une gestion correcte des entrées" pour pouvoir distinguer et par exemple, ou des communications asynchrones avec des processus externes (pour intégrer des interprètes ou débuggueurs). J'adorerais avoir les deux…
J'utilise pas GMail pour téléphoner, mais j'ai un plugin qui devine dans quel fuseau horaire tu es, et qui m'indique s'il est judicieux ou non de téléphoner maintenant via une petite icône.
Quand à mutt, il gère les tags comment ? Comment tu affiches tous les mails qui ont le tag T, ou les tags T1 et T2?
Mais encore une fois, ma question reposait sure la pile complète d'email, du serveur au client. Sinon, pourquoi donc parlerait-il de GMail au début de l'article, si c'est pour discuter quelque chose sans rapport ?
Gmail, ça gère les tags. J'ai pas cherché depuis un bout de temps, mais j'ai pas vu ça ailleurs. Et le roundcube que me propose OVH, la dernière fois que j'ai testé, il avait pas de tags non plus. Pour moi, c'est le truc utile. Je me fous pas mal du reste (enfin, non. La réactivité de gmail est bien, l'auto sauvegarde des emails en cours de rédaction, l'utilisation des tags dans les emails (ie, "email+tag@site.com"), ses nombreux plugins que j'utilise pour savoir si je peux téléphoner malgré le décalage horaire, la possibilité d'annuler l'envoi d'un email pendant le 5 secondes suivant l'appui du bouton d'envoi, etc. Bref autant de choses dont je ne me passe pas)
Ben, les deux premières phrases du contenu me pousse à croire qu'il va présenter comment remplacer GMail de bas en haut. Il commence en bas, je veux savoir jusqu'où il va aller. Parceque bon, installer un serveur SMTP, c'est bien, mais si c'est pour ensuite se taper une interface de merde par dessus, non merci, j'ai déjà donné. Et je veux aussi savoir s'il existe un webmail façon gmail. Depuis que gmail existe, j'en n'ai jamais vu nulle part ailleurs.
Une bonne partie des cours que j'ai suivis utilisaient un tableau sur lequel on écrivait à la main. Quand les profs ou autres étudiants n'arrivent pas à te lire parce qu'ils n'ont pas l'habitude de voir des écritures manuscrites, ben, ça pose quand même un problème, trouvé-je.
I want to thank all users, moderators and other developers who have made Pear OS it is today, that without this adventure would not have been possible.
Pear Cloud users must recover their files on Pear Cloud servers.
In 10 days (january 31), the files will be deleted and the server will be offline.
Le gars (…) remercie sa communauté tout en leur crachant dessus
Ah ouais. Ben heureusement qu'il est resté poli alors, sinon, j'ose pas imaginer ton interprétation. Je vois rien de mal. Des délais un peu courts, oui, mais de là à dire qu'il leur « crache dessus » je trouve que tu as le sang un peu chaud…
Ça a pris dix ans ?
Personnellement, j'appelle pas ça un succès. Une migration aussi longue, avec un parc mixte à gérer de même, ça a dû coûter des sous… Bon, j'espère que ça ira mieux maintenant, mais bon…
Moi, c'est l'autre sens qui m'intéresse. Acheter des produits laitiers venant d'Europe pour moins cher que les produits locaux dont les tarifs sont inabordables. Je paye plus de 8 dollars, hors taxes, pour 24 yaourts, les moins chers, chez un grossiste. Ben apparemment, c'est bien moins cher en France, si j'en crois le site de Leclerc, par exemple.
[^] # Re: Curiosité
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Réunion sur IRC pour le projet Bépo. Évalué à 2.
J'ai clavier Kinesis Advantage. J'ai juste changé un chouïlla la dispo bépo, pour mettre les "motions" gauche/bas/haut/droite sur les touches haut/bas/[/] du clavier, que tu peux voire sur http://kinesis-ergo.com/wp-content/uploads/2014/02/layout_contour-qd-usb.gif
Ainsi, je garde les raccourcis par défaut, juste légèrement transposés pour les déplacements simples. J'ai rien d'autre à toucher, c'est idéal. (Bon, après, j'ai d'autres modifications au bépo de bases, sans rapport avec vim mais dues à la disposition non conventionnelle des touches, comme foutre "f" sur caps lock que je n'utilise quasiment jamais et que j'ai mis lui même sur "`".)
[^] # Re: cat troll.hs
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Sortie du Glorious Haskell Compiler 7.8. Évalué à -2.
Tu peux faire
f :: m a -> int
mais pas "g :: m -> b" oùm
est une monade, ni "h :: m a -> m".Pour moi, ça fait que les monades ne sont pas citoyens de première classe.
[^] # Re: cat troll.hs
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Sortie du Glorious Haskell Compiler 7.8. Évalué à -3.
randomIO
ne retourne pas une monade (les monades ne sont pas des citoyens de première classe en Haskell).randomIO
, fonction zéro-adique, retourne une valeur dans la monade IO. Et c'est différent.Quand tu fais
f = randomIO
tu n'évalues pasrandomIO
, tu crées un nouveau binding vers la fonctionrandomIO
(en gros, un alias). En évaluant ta variablef
plusieurs fois, tu appelles la fonction zéro-adiquerandomIO
autant de fois, et tu obtiens donc des résultats différents (résultats qui sont extraits par<-
et non par=
).Ce comportement se comprend mieux si on compare à la monade
State
qui fonctionne de manière similaire, mais à laquelle tu fournies l'objet de typeWorld
explicitement. Tu peux écrire une fonctionrandomState
qui se comporte de façon similaire. Cette fonction serait pure. Mais avec IO, tu es incapable de reproduire l'exécution, car tu es incapable de fournir ou extraire le monde (contrairement à la monadeState
). En pratique, c'est donc impure. C'est important, car on programme plus en pratique qu'en théorie.[^] # Re: cat troll.hs
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Sortie du Glorious Haskell Compiler 7.8. Évalué à -1.
La fonction n'est pas pure, car son résultat dépend d'un état caché, celui de la monade
IO
. Plus précisément, elle dépend derandomIO
qui n'est pas pure et dont elle extrait une valeur qu'elle retourne. On en a pour preuve que le résultat est effectivement différent.Tu parles de toujours retourner
Num a => IO a
, mais c'est le type, non la valeur. Le type est habité par un grand nombre de valeurs, plusieurs desquelles peuvent être retournées par des appels successifs àfoo
, ce qui s'observe en pratique.(NB: on peut tout à fait avoir une fonction pure dans IO:
Cette fonction retournera toujours la même valeur, et n'effectue aucun effet de bord observable, en dépit du fait qu'elle est "marquée".)
# cat troll.hs
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Sortie du Glorious Haskell Compiler 7.8. Évalué à 0.
J'ai essayé avec le code suivant :
Mais à chaque fois que j'appelle la fonction foo avec le paramètre "3", j'obtiens un résultat différent. Mon GHC est-il cassé ?
[^] # Re: OCaml ?
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Concours de programmation CodinGame le 22 mars 2014. Évalué à 2.
SBCL est le choix gratuit optimal, non? CLisp est super lent…
# résolu
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au message Réinstaller/reconfigurer tous les paquets installés. Évalué à 2.
Bon, ben j'avais du temps à perdre alors j'ai résolu mon problème…
La méthode fut en gros la suivante:
cat all1
2>&1 | grep "find a source" | awk '{print $11}' | head -1 | sed -e "s/'//g" > pkgcat pkg | sed -e's/:i386//' -e's/:amd64//'
> all2Bilan 1 : c'est nul qu'on puisse pas detecter les conflits et automatiser la désinstallation des versions obsolètes.
Bilan 2 : les scripts, ça fait vraiment gagner du temps!
[^] # Re: et les 4 libertés? oubliées?
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal [journal marque page] quelques nouvelles intéressantes pour le jeu linux. Évalué à 1.
Ben, c'est pas toi qui l'écrit, le jeu !
Question absurde. Si la plateforme est unique, il n'y en a pas d'autre qui soit la tienne.
[^] # Re: pour les srouces
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au message Générateur de tags pour Java. Évalué à 2.
Merci, je vais étudier ça.
[^] # Re: pour les srouces
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au message Générateur de tags pour Java. Évalué à 2.
Je crois pas que les etags/ctags aillent dans les .class, alors que c'est justement ce que je désire. Je veux une complétion plus intelligente que "les fichiers source dans le répertoire en cours". Pas de problème si c'est pas dynamique. Si tu retrouves le lien vers l'autre, ça m'intéresse.
# Gradient
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au message Traitement d'images : Détection de tâches. Évalué à 2.
Je pense que tu peux t'en sortir avec un algo naïf de même:
tu fais une détection de contours, puis tu cherches tous les contours qui, dans l'image de base, contiennent des couleurs très sombres. Dans le cas particulier de ton image, ça marcherait.
Enfin, dans l'image en question, une simple différence de contraste devrait marcher aussi bien.
[^] # Re: citation des commentaires du journal
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Neovim : une refonte de vim pour le 21è siècle. Évalué à 4.
Si tu lisais la ML des devs de vim, tu verrais qu'il y a beaucoup de choses que les gens veulent rajouter. Les exemples classiques sont "une gestion correcte des entrées" pour pouvoir distinguer et par exemple, ou des communications asynchrones avec des processus externes (pour intégrer des interprètes ou débuggueurs). J'adorerais avoir les deux…
[^] # Re: Gmail
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche OpenSMTPD : Premiers Pas. Évalué à 2.
J'utilise pas GMail pour téléphoner, mais j'ai un plugin qui devine dans quel fuseau horaire tu es, et qui m'indique s'il est judicieux ou non de téléphoner maintenant via une petite icône.
Quand à mutt, il gère les tags comment ? Comment tu affiches tous les mails qui ont le tag T, ou les tags T1 et T2?
Mais encore une fois, ma question reposait sure la pile complète d'email, du serveur au client. Sinon, pourquoi donc parlerait-il de GMail au début de l'article, si c'est pour discuter quelque chose sans rapport ?
[^] # Re: Gmail
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche OpenSMTPD : Premiers Pas. Évalué à 2.
Gmail, ça gère les tags. J'ai pas cherché depuis un bout de temps, mais j'ai pas vu ça ailleurs. Et le roundcube que me propose OVH, la dernière fois que j'ai testé, il avait pas de tags non plus. Pour moi, c'est le truc utile. Je me fous pas mal du reste (enfin, non. La réactivité de gmail est bien, l'auto sauvegarde des emails en cours de rédaction, l'utilisation des tags dans les emails (ie, "email+tag@site.com"), ses nombreux plugins que j'utilise pour savoir si je peux téléphoner malgré le décalage horaire, la possibilité d'annuler l'envoi d'un email pendant le 5 secondes suivant l'appui du bouton d'envoi, etc. Bref autant de choses dont je ne me passe pas)
[^] # Re: Gmail
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche OpenSMTPD : Premiers Pas. Évalué à 3.
Ben, les deux premières phrases du contenu me pousse à croire qu'il va présenter comment remplacer GMail de bas en haut. Il commence en bas, je veux savoir jusqu'où il va aller. Parceque bon, installer un serveur SMTP, c'est bien, mais si c'est pour ensuite se taper une interface de merde par dessus, non merci, j'ai déjà donné. Et je veux aussi savoir s'il existe un webmail façon gmail. Depuis que gmail existe, j'en n'ai jamais vu nulle part ailleurs.
# Gmail
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche OpenSMTPD : Premiers Pas. Évalué à 2.
Et y'a-t-y une brique qui marche comme GMail? Un truc avec des tags?
J'espère que tu vas nous écrire une dépêche par brique !
[^] # Re: Espéranto et programmation
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Inflectiones, déclinaisons et conjugaisons en grec ancien. Évalué à 5.
Une bonne partie des cours que j'ai suivis utilisaient un tableau sur lequel on écrivait à la main. Quand les profs ou autres étudiants n'arrivent pas à te lire parce qu'ils n'ont pas l'habitude de voir des écritures manuscrites, ben, ça pose quand même un problème, trouvé-je.
[^] # Re: Espéranto et programmation
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Inflectiones, déclinaisons et conjugaisons en grec ancien. Évalué à 3.
Mouais. Ils savent lire du texte électronique, mais dès que c'est écrit à la main, j'en connais plus d'un qui n'arrive plus à lire quoi que ce soit.
# Crache ??
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal De bonnes poires. Évalué à 7.
Ah ouais. Ben heureusement qu'il est resté poli alors, sinon, j'ose pas imaginer ton interprétation. Je vois rien de mal. Des délais un peu courts, oui, mais de là à dire qu'il leur « crache dessus » je trouve que tu as le sang un peu chaud…
[^] # Re: Facile.
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au message Stocker directement des pointeurs qui pointent sur des structures. Évalué à 2.
Je fais plus de C. J'avais complètement oublié de désallouer :)
# Facile.
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au message Stocker directement des pointeurs qui pointent sur des structures. Évalué à 2.
Tu veux allouer sur le tas, et pas sur la pile. Donc malloc.
[^] # Re: Où sont les trolls?
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal La communauté Linuxfr n'a-t-elle plus rien (de technique) à dire ?. Évalué à 8.
déçu< ? Je croyais que tu étais devnewton< !
[^] # Re: Tour eiffel
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Debian France choisit son nouveau logo. Évalué à 3.
On dirait un pet de poulet!
# Dix ans ?
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal LiMux, c'est fini !. Évalué à 1.
Ça a pris dix ans ?
Personnellement, j'appelle pas ça un succès. Une migration aussi longue, avec un parc mixte à gérer de même, ça a dû coûter des sous… Bon, j'espère que ça ira mieux maintenant, mais bon…
[^] # Re: Le lait
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal TAFTA (Trans-Atlantic Free Trade Agreement). Évalué à 4.
Moi, c'est l'autre sens qui m'intéresse. Acheter des produits laitiers venant d'Europe pour moins cher que les produits locaux dont les tarifs sont inabordables. Je paye plus de 8 dollars, hors taxes, pour 24 yaourts, les moins chers, chez un grossiste. Ben apparemment, c'est bien moins cher en France, si j'en crois le site de Leclerc, par exemple.