Posté par neil .
En réponse au journal Rust en version 0.12.
Évalué à 4.
Dernière modification le 14 octobre 2014 à 18:47.
En C++ n’aime pas trop les pointeurs, moins les pointeurs de fonctions, et encore moins les casts d’une fermeture vers un pointeur. On aurait pu mettre :
auto square = [](auto x) { return x * x; };
auto twice = [](auto x, auto f) { return f(x) + f(x); };
Ça marche avec des int et des double, mais aussi avec des foncteurs, sans perdre le type. Des const& ou des références universelles peuvent être rajoutés, au besoin. Mais c’est vrai qu’une traduction littérale aurait été plus proche de:
template <typename Func>
auto twice2(int x, Func f)
{
return f(x) + f(x);
} Ou, à la rigeur, d’un paramètre std::function.
Posté par neil .
En réponse à la dépêche GNOME 3.14 rebat les cartes.
Évalué à 9.
Dernière modification le 03 octobre 2014 à 20:39.
Ça n’est aussi plus très évident de fonctionner au clavier pour parcourir les menus, typiquement avec Alt. Rien que dans mon Evince 3.12.2, le bouton à droite pour ouvrir le semblant de menu n’est même pas accessible au focus avec Tab. Bref, rien de nouveau au pays du cliquodrome à gogo et de l’accessibilité zéro.
Je suis un peu déçu qu’on ne parle pas de systemd dans ce sondage, même si c’est un jour en avance. D’autant que systemd remplace les commandes par d’autres du genre systemctl poweroff, en renforce leur signification : un vieux sudo halt n’éteindra plus la machine, se contentant de l’arrêter.
je déclare mes impôts en France et dans le pays où je réside. La France me prend la différence.
Ton foyer fiscal est à l’étranger et tu déclares tes revenus étranger en France en faisant donc une fausse déclaration pour donner de l’argent à l’État ? Il n’y a pas un moyen plus légal ?
OVH vous demande un RIB au cas où vous fassiez du hors forfait
C’est surtout/en partie pour vérifier ta domiciliation en France, vu qu’il est illégal d’avoir un numéror français sans y habiter. Surtout que le forfait 1.50€ est plus ou moins illimité sur les fixes.
Perso le sudo pm-suspend ne fonctionne plus (problème d’hibernation de carte son et wifi notamment). Mais tout fonctionne correctement à travers systemd.
C’est parce qu’on ne travaille pas dans un système de types simpliste, comme le lambda calcul simplement typé. Il y a plusieurs kinds, qui sont des constructeurs de types (juste deux en Haskell, ceux d’arité 0 ou 1, les autres sont obtenus par curryfication). Ici tes Int et b sont de kind*, mais m est de kind* -> *, j’imagine. Plus d’infos dans le classique TAPL de Pierce,
Pour simplifier, c’est pareil qu’en C, tu ne peux pas écrire qu’une fonction prend en paramètre un tableau, sans spécifier le type de ses éléments (pas de func (int x, [] y)). En Haskell, tu peux quand même généraliser avec forall a. func :: Int -> Monad a par exemple. (En C, on doit outrepasser le système de types par des casts).
funopen est une fonction standard dans la famille des BSD, existant notamment sous FreeBSD ou BSD 4.4.
Ils supportent OpenBSD et rien d'autre.
C’est bien possible qu’ils ne supportent que leur OS, dans un sens ou dans l’autre. Cet usage non standard de vocabulaire frenglish n’est pas supportable.
les monades ne sont pas des citoyens de première classe en Haskell
WTF ? Et surtout quelle est la suite ? Les nombres n’existent pas en Haskell ? Les listes non plus ? La syntaxe do non plus ?
randomIO, fonction zéro-adique
[…] un nouveau binding vers la fonction randomIO
[…] tu appelles la fonction zéro-adique
Non. Ce concept n’existe pas en Haskell.
Ce n’est pas une fonction, c’est une valeur de type Num a => IO a (cf le tuto de SPJ, et les autres commentaires).
(Et là, je suis sûr d’avoir marché dans le troll pourtant bien annoncé dans le sujet du thread.)
Le post de Sylvain Henry explique bien pourquoi justement cette IO n’a pas de type caché et est bien pure. La fonction randomIO retourne une IO qui n’est pas la valeur du nombre aléatoire, mais une monade qui indique comment obtenir une valeur. Mais ce comment reste toujours le même quelque soit le nombre de fois que tu appelles foo ou randomIO.
On peut voir ce comment en action en n’appellant qu’une seule fois randomIO, afin d’obtenir une seule valeur de retour (de type IO double par exemple), et en l’invoquant plusieurs fois.
ghci> import System.Random
ghci> let f = randomIO :: IO Double
ghci> f
9.246329697709554e-3
ghci> f
0.954075333075334
On peut faire de même avec ta fonction foo, ne l’appeller qu’une seule fois, et se servir de la monade retournée pour obtenir plusieurs valeurs. IO ne fournit qu’une méthode pour accéder au monde, mais ne modifie pas le monde en elle même.
[^] # Re: simple ?
Posté par neil . En réponse au journal Rust en version 0.12. Évalué à 5. Dernière modification le 14 octobre 2014 à 19:50.
En Haskell, on aime le point free et les monades, d’où :
et de la même façon, mais
twice
pouvant prendre une fonction plus générale :[^] # Re: simple ?
Posté par neil . En réponse au journal Rust en version 0.12. Évalué à 4. Dernière modification le 14 octobre 2014 à 18:47.
En C++ n’aime pas trop les pointeurs, moins les pointeurs de fonctions, et encore moins les casts d’une fermeture vers un pointeur. On aurait pu mettre :
Ça marche avec des
int
et desdouble
, mais aussi avec des foncteurs, sans perdre le type. Desconst&
ou des références universelles peuvent être rajoutés, au besoin. Mais c’est vrai qu’une traduction littérale aurait été plus proche de:
Ou, à la rigeur, d’un paramètretemplate <typename Func>
auto twice2(int x, Func f)
{
return f(x) + f(x);
}
std::function
.[^] # Re: Self-destructing cookies et Adblock / Element Hiding Helper
Posté par neil . En réponse au journal Marre des popups qui obligent à accepter les cookies. Évalué à 1. Dernière modification le 10 octobre 2014 à 18:44.
Sauf que modifier le user-agent pour être dans une grande catégorie d’utilisateurs ça prend 1 extension et 30 secondes chrono.
[^] # Re: Non merci
Posté par neil . En réponse au journal Coup de gueule : il devrait être obligatoire d'avoir une boîte aux lettres. Évalué à 4.
C’est interdit de toucher un véhicule ?!
[^] # Re: Fenêtres sans barres de titre
Posté par neil . En réponse à la dépêche GNOME 3.14 rebat les cartes. Évalué à 5.
Il n’y a aussi pas moyen de virer cette grosse barre d’outils de l’application, sans passer en mode plein écran. Génial.
[^] # Re: Fenêtres sans barres de titre
Posté par neil . En réponse à la dépêche GNOME 3.14 rebat les cartes. Évalué à 9. Dernière modification le 03 octobre 2014 à 20:39.
Ça n’est aussi plus très évident de fonctionner au clavier pour parcourir les menus, typiquement avec Alt. Rien que dans mon Evince 3.12.2, le bouton à droite pour ouvrir le semblant de menu n’est même pas accessible au focus avec Tab. Bref, rien de nouveau au pays du cliquodrome à gogo et de l’accessibilité zéro.
[^] # Re: Fenêtres sans barres de titre
Posté par neil . En réponse à la dépêche GNOME 3.14 rebat les cartes. Évalué à 8.
Rien ne l’empêche non plus d’en utiliser un autre et de trouver la démarche déplorable.
[^] # Re: "Create once, deploy everywhere"
Posté par neil . En réponse au journal The Qt Company. Évalué à 5.
Pour Android, le look natif par défaut vient dans la 5.4, disponible en alpha pour le moment.
# Systemd
Posté par neil . En réponse au sondage Pour éteindre/redémarrer mon ordinateur, j'utilise.... Évalué à 8.
Je suis un peu déçu qu’on ne parle pas de systemd dans ce sondage, même si c’est un jour en avance. D’autant que systemd remplace les commandes par d’autres du genre
systemctl poweroff
, en renforce leur signification : un vieuxsudo halt
n’éteindra plus la machine, se contentant de l’arrêter.[^] # Re: nos élus à l'heure du numerique
Posté par neil . En réponse au journal "Numérisons les intérêts des parlementaires". Évalué à 2.
Tu as bien conscience que ce faisant ça serait TOI qui paierait (comme tous les autres contribuables) ?
# WTF?
Posté par neil . En réponse au journal Téléphoner à ma mère: gratuité, simplicité, liberté ou vie privée?. Évalué à 5.
Ton foyer fiscal est à l’étranger et tu déclares tes revenus étranger en France en faisant donc une fausse déclaration pour donner de l’argent à l’État ? Il n’y a pas un moyen plus légal ?
C’est surtout/en partie pour vérifier ta domiciliation en France, vu qu’il est illégal d’avoir un numéror français sans y habiter. Surtout que le forfait 1.50€ est plus ou moins illimité sur les fixes.
[^] # Re: Un peu de bike shedding: je n'aime pas leur syntaxe des format string
Posté par neil . En réponse à la dépêche Encore une couche de rouille avec Rust 0.11. Évalué à 2.
L’avantage de la syntaxe non-Rust c’est qu’on peut introduire des failles de sécu en changeant LC_LANG.
[^] # Re: ...et sa première faille de sécurité aussi
Posté par neil . En réponse au journal LibReSLL déjà dans les bacs !. Évalué à 6.
Corrigé et releasé.
[^] # Re: Petit retour d'expérience
Posté par neil . En réponse à la dépêche Mise aux poings sur systemd. Évalué à 2.
Perso le
sudo pm-suspend
ne fonctionne plus (problème d’hibernation de carte son et wifi notamment). Mais tout fonctionne correctement à travers systemd.[^] # Re: Et oui...
Posté par neil . En réponse au journal Google détient-il vos emails. Évalué à 4.
Effectivement. Perso, GMail c’est du bruit dans ma boîte.
[^] # Re: cat troll.hs
Posté par neil . En réponse à la dépêche Sortie du Glorious Haskell Compiler 7.8. Évalué à 4. Dernière modification le 01 mai 2014 à 18:17.
C’est parce qu’on ne travaille pas dans un système de types simpliste, comme le lambda calcul simplement typé. Il y a plusieurs kinds, qui sont des constructeurs de types (juste deux en Haskell, ceux d’arité 0 ou 1, les autres sont obtenus par curryfication). Ici tes
Int
etb
sont de kind*
, maism
est de kind* -> *
, j’imagine. Plus d’infos dans le classique TAPL de Pierce,Pour simplifier, c’est pareil qu’en C, tu ne peux pas écrire qu’une fonction prend en paramètre un tableau, sans spécifier le type de ses éléments (pas de
func (int x, [] y)
). En Haskell, tu peux quand même généraliser avecforall a. func :: Int -> Monad a
par exemple. (En C, on doit outrepasser le système de types par des casts).[^] # Re: et ca compile ?
Posté par neil . En réponse au journal OpenSSL est mort, vive (le futur) LibreSSL. Évalué à 1. Dernière modification le 24 avril 2014 à 15:42.
funopen
est une fonction standard dans la famille des BSD, existant notamment sous FreeBSD ou BSD 4.4.C’est bien possible qu’ils ne supportent que leur OS, dans un sens ou dans l’autre. Cet usage non standard de vocabulaire frenglish n’est pas supportable.
[^] # Re: et ca compile ?
Posté par neil . En réponse au journal OpenSSL est mort, vive (le futur) LibreSSL. Évalué à 10. Dernière modification le 23 avril 2014 à 02:08.
Tant mieux, il sera donc très simple de faire le portage Windows de LibreSSL.
En plus, les failles potentielles rajoutées par sa prise en charge n’affecteront pas les autres OS. Double win.
[^] # Re: et ca compile ?
Posté par neil . En réponse au journal OpenSSL est mort, vive (le futur) LibreSSL. Évalué à 9.
Non. Absolument pas.
La couche portable de OpenSSH est maintenu par les développeurs d’OpenSSH. Le code et le site web de la version portable sont sur le site d’OpenSSH.
Mais merci quand même pour cette désinformation, et ce fanboyisme là où ça n’a rien à y faire.
[^] # Re: Merci
Posté par neil . En réponse à la dépêche Petit jeu en HTML5 et découverte de Crafty. Évalué à 2.
C’est triste, j’ai cru à une interface web pour le moteur Crafty.
[^] # Re: MacOS du pauvre?
Posté par neil . En réponse à la dépêche GNOME 3.12 : sans domicile. Évalué à 3.
C’est pour ça que les autres DE proposent des outils de configuration (gnome-tweak-tool ? MOUAHAHAHAHA).
[^] # Re: Encodage
Posté par neil . En réponse au journal Hermaia. Évalué à 3.
Un
s/time/tense/
serait pas mal dans les exemples aussi.[^] # Re: cat troll.hs
Posté par neil . En réponse à la dépêche Sortie du Glorious Haskell Compiler 7.8. Évalué à 2.
WTF ? Et surtout quelle est la suite ? Les nombres n’existent pas en Haskell ? Les listes non plus ? La syntaxe
do
non plus ?Non. Ce concept n’existe pas en Haskell.
Ce n’est pas une fonction, c’est une valeur de type
Num a => IO a
(cf le tuto de SPJ, et les autres commentaires).(Et là, je suis sûr d’avoir marché dans le troll pourtant bien annoncé dans le sujet du thread.)
[^] # Re: Fibo
Posté par neil . En réponse à la dépêche Sortie du Glorious Haskell Compiler 7.8. Évalué à 3. Dernière modification le 16 avril 2014 à 02:07.
Ou, plus sobrement :
On peut vérifier que ça mémoïse bien les résultats dans ghci :
[^] # Re: cat troll.hs
Posté par neil . En réponse à la dépêche Sortie du Glorious Haskell Compiler 7.8. Évalué à 4. Dernière modification le 16 avril 2014 à 01:47.
Le post de Sylvain Henry explique bien pourquoi justement cette IO n’a pas de type caché et est bien pure. La fonction
randomIO
retourne uneIO
qui n’est pas la valeur du nombre aléatoire, mais une monade qui indique comment obtenir une valeur. Mais ce comment reste toujours le même quelque soit le nombre de fois que tu appellesfoo
ourandomIO
.On peut voir ce comment en action en n’appellant qu’une seule fois
randomIO
, afin d’obtenir une seule valeur de retour (de typeIO double
par exemple), et en l’invoquant plusieurs fois.On peut faire de même avec ta fonction
foo
, ne l’appeller qu’une seule fois, et se servir de la monade retournée pour obtenir plusieurs valeurs.IO
ne fournit qu’une méthode pour accéder au monde, mais ne modifie pas le monde en elle même.Le tout est expliqué et formalisé par l’auteur du langage, Simon Peyton Jones, dans son célèbre Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell.