neil a écrit 428 commentaires

  • [^] # Re: simple ?

    Posté par  . 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ù :

    square :: Num a => a -> a
    square = join (*)

    et de la même façon, mais twice pouvant prendre une fonction plus générale :

    Num a => b -> (b -> a) -> a
    twice = flip (join (+) .)
  • [^] # Re: simple ?

    Posté par  . 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.

  • [^] # Re: Self-destructing cookies et Adblock / Element Hiding Helper

    Posté par  . 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  . 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  . 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  . 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  . 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  . 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  . 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 vieux sudo halt n’éteindra plus la machine, se contentant de l’arrêter.

  • [^] # Re: nos élus à l'heure du numerique

    Posté par  . En réponse au journal "Numérisons les intérêts des parlementaires". Évalué à 2.

    a EUX de payer quelqu'un pour le faire

    Tu as bien conscience que ce faisant ça serait TOI qui paierait (comme tous les autres contribuables) ?

  • # WTF?

    Posté par  . En réponse au journal Téléphoner à ma mère: gratuité, simplicité, liberté ou vie privée?. Évalué à 5.

    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.

  • [^] # Re: Un peu de bike shedding: je n'aime pas leur syntaxe des format string

    Posté par  . 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  . En réponse au journal LibReSLL déjà dans les bacs !. Évalué à 6.

  • [^] # Re: Petit retour d'expérience

    Posté par  . 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  . En réponse au journal Google détient-il vos emails. Évalué à 4.

    Effectivement. Perso, GMail c’est du bruit dans ma boîte.

    gmail over time

  • [^] # Re: cat troll.hs

    Posté par  . 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 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).

  • [^] # Re: et ca compile ?

    Posté par  . 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.

    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.

  • [^] # Re: et ca compile ?

    Posté par  . En réponse au journal OpenSSL est mort, vive (le futur) LibreSSL. Évalué à 10. Dernière modification le 23 avril 2014 à 02:08.

    Pour le reste, c'est quand meme marrant que plein de projets arrivent a gerer tout ce que tu cites de maniere bien plus propre qu'OpenSSL…

    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  . 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  . 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  . En réponse à la dépêche GNOME 3.12 : sans domicile. Évalué à 3.

    je ne crois pas qu'il existe un seul DE universel qui plaise à tout le monde

    C’est pour ça que les autres DE proposent des outils de configuration (gnome-tweak-tool ? MOUAHAHAHAHA).

  • [^] # Re: Encodage

    Posté par  . 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  . En réponse à la dépêche Sortie du Glorious Haskell Compiler 7.8. Évalué à 2.

    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.)

  • [^] # Re: Fibo

    Posté par  . 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 :

    fibs   = scanl (*) 1 [1..]
    nthFib = (fibs !!)
    

    On peut vérifier que ça mémoïse bien les résultats dans ghci :

    ghci> :sprint fibs
    fibs = _
    ghci> nthFib 3
    6
    ghci> :sprint fibs
    fibs = 1 : 1 : 2 : 6 : _
    ghci> nthFib 8
    40320
    ghci> :sprint fibs
    fibs = 1 : 1 : 2 : 6 : 24 : 120 : 720 : 5040 : 40320 : _
    
  • [^] # Re: cat troll.hs

    Posté par  . 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 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.

    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.