@ c'est l'opérateur de concaténation de listes. [1;2]@[3;4];; (* [1;2;3;4] *)
return n'est pas un mot clé. Dans la mesure où le langage est fonctionnel et où toute expression et tout statement retourne une valeur, ça serait inutile d'avoir ce mot clef [http://caml.inria.fr/pub/docs/manual-ocaml/manual044.html]
En haskell non plus ce n'est pas un mot clef.
let _ = foo
ça évalue foo puis ça jette le résultat. _ est un nom de variable valide, mais qui n'est accessible qu'en écriture. Tu peux donc faire let x = 3 in x mais pas let _ = 3 in _. C'est une info pour le compilo qui peut économiser des registres en ne sauvant pas la valeur retournée.
La raison est que (>>) ne garde pas son résultat, alors que concatMap va me rendre une liste. Idéalement, il faudrait que je code une autre fonction qui me retourne la liste vide, mais j'ai eu la flemme, et le code ci-dessus a la même sémantique. (Et si tu te demandes l'intérêt d'évaluer une expression pour jeter son résultat, rappelle toi qu'on peut faire des effets de bord, donc que let _ = foo () in 42 et 42 ne sont pas pareil.)
Pour ne pas comprendre let test () = foo, tu n'as pas du faire beaucoup de d'Ocaml.
Ça déclare la *fonction* test qui n'a aucun argument. À chaque fois que tu l'appelles, foo est évalué. let test = foo déclare la *variable* test. foo n'est évalué qu'une fois, lors de la déclaration de test dont la valeur —qui ne changera plus jamais— est le résultat de l'évaluation de foo.
Bon, le code ci-dessous est crade, mais dériver EQ, c'est juste associer un nombre qui s'incrémente à chaque nouveau constructeur.
C'est d'ailleurs ainsi que c'est implanté en Caml, et sans doute en Haskell.
Et ça se fait en CL assez facilement.
(Après, il serait sans doute judicieux de passer par des méthodes génériques pour pouvoir traverser automatiquement des listes, vecteurs…)
Dire qu'il y a des monades en Haskell, mais pas en OCaml, c'est un peu comme dire qu'il y a des design pattern en C++ mais pas en Java…
let concatMap f x = List.fold_left (@) [] (List.map f x);;
let return x = [x];;
let (>>=) v f = concatMap f v;;
let (>>) v f = let _ = concatMap f v in [];;
let test () =
[0;1;2;3;4;5] >>=
(fun x -> ["A";"B";"C";"D";"E"] >>=
(fun y -> return (x,y)));;
Et voila le travail.
Les monades, quand on code, c'est rien d'autre qu'une interface…
Et vu qu'OCaml a une couche objet, j'imagine qu'on peut même coder ça proprement, avec l'inférence de type qui se charge d'appeler les méthodes ">>=", ">>" et "return" correspondant à l'usage précis dans le code.
Et alors, ça change quoi ?
Ça veut dire que moins de programmes valides qu'on écrit en CL seront acceptés par Go, c'est tout !
Puis coller un typeur à CL (ou un sous-ensemble) c'est pas dur…
Tant qu'à faire, si je devais coder en Go, je programmerais sans doute en CL, pour compiler vers Go après au début, jusqu'à ce que les gens autour se rendent compte qu'il n'est en fait pas nécessaire d'utiliser Go…
>> - Comme dit sur l'article et qui tombe sous le sens, je ne vois pas comment Google peut être sûr qu'un terme particulier est lié au piratage.
>> Je peux très bien chercher un logiciel de rippage de DVD disponible en torrent...
Oui. Et dans les faits, ni « logiciel » ni « rippage » ni « DVD » ni « torrent » ne sont classés par google comme des termes liés au piratage. J'imagine qu'il y a assez de geeks là-bas pour qu'ils s'y connaissent un tant soit peu.
Ensuite, il est possible que le site laisse passer « torrent truite omble » mais pas « torrent le-dernier-flim-qui-vient-de-sortir. »
>> La censure n'est désormais plus réservée aux dictatures,
Et ne l'a jamais été.
Tu as toi-même du expérimenter la censure via tes parents bien avant, avec l'interdiction de regarder des films d'horreur ou de cul avant tes 10 ans. Ou même qu'ils t'avaient caché l'existence de ces films. Honte sur tes parents totalitaires, dictatoriaux et hadopistes. Et honte sur toi aussi, le fruit de leur union.
>> et en plus elle relève maintenant des désidérata d'entreprises et non de gouvernements.
En plus, google, c'est vraiment des connards : ils censurent le spam qui arrive chez moi ! Quelle bande d'enflures ! Ils censurent viagra, cyalis, online pharmacy, alors que si ça se trouve, y a plein de clients de gmail qui ont des besoins de soutient (pénien).
Non, seulement les frustrés qui sont coincés avec leur GPL manichéenne qui demande tout ou rien, et qui ne peuvent en conséquence pas avoir accès à ZFS comme ils le voudraient.
>> C'est à dire que l'ensemble du logiciel DOIT être distributé sous GPL (et ce sans violer les conditions des autres licences).
Distribué ou distribuable ?
C'est pas pareil du tout.
Distribué veut dire que je ne peux plus privatiser un bout de code en BSD fourni avec le logiciel GPL. Distribuable veut dire que si.
Si c'est le premier cas, je trouve que ça pue vraiment.
Ouais, enfin, on fait pas le concours pour des clous, hein !
Il peut très bien participer pour gagner le lot. Et à moins que vous ayez prévu un lot par personne qui a participé à la CSS gagnante, je trouve que l'accès publique aux données et la notion même de concours sont incompatibles…
Alors bon, un concours où le gagnant (celui qui a bossé) n'est même pas sûr d'avoir son prix, raflé par un autre (celui qui a pompé), j'appelle ça un piège à con.
Dans les concours, les appels d'offre, je crois bien que ne pas dévoiler son travail en cours est ce qu'on appelle couramment du bon sens…
Si on avait le choix de se tirer une balle dans le pied, pourquoi pas, mais ça n'a même pas l'air d'être le cas…
Oui, mais comme j'ai qu'un seul port ethernet, je ne peux plus avoir de réseau local après car j'ai qu'un seul port ethernet (ça me dérange pas du tout de filer une IP statique sur le LAN.)
Donc je ne cherche pas tant que ça à partager le modem… Étant seul utilisateur, c'est pas un souci…
Dans ma conf, j'ai
>> ((modm, xK_space ), sendMessage NextLayout)
Mais des layouts, j'en utilise beaucoup beaucoup…
Et de temps en temps, je vais trop vite…
Le message PreviousLayout n'existe pas.
Comment je fais pour revenir au layout précédent sans faire le tour ?
Dis-donc, t'as pas l'impression d'être un peu culotté là ?
Ça fait une semaine que t'as créé ton compte, t'es pas foutu de comprendre le bon sens et de communiquer clairement, et tu oses dire à un gars qui est là depuis 9 ans d'aller jouer ailleurs parce qu'il te dit comment faut s'y prendre ?
>> Excellente initiative d'avoir mis le texte en latex !
Je me demande si docbook n'aurait pas été mieux.
Toujours plus facile de compiler d'un langage contextuel vers un langage non contextuel que l'inverse… (ie, on peut exporter docbook vers latex, mais je ne me risquerais pas à faire l'inverse…)
1/ « ce » code.
2/ si tu dis pas quelle est l'erreur, on ne va pas deviner à ta place.
3/ « //Test sur les methodes imbriquées. » Au hasard : le test échoue, c'est donc que les méthodes imbriquées ne marchent pas en Java.
[^] # Re: typage mou
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 5.
[1;2]@[3;4];; (* [1;2;3;4] *)
return n'est pas un mot clé. Dans la mesure où le langage est fonctionnel et où toute expression et tout statement retourne une valeur, ça serait inutile d'avoir ce mot clef [http://caml.inria.fr/pub/docs/manual-ocaml/manual044.html]
En haskell non plus ce n'est pas un mot clef.
let _ = foo
ça évalue foo puis ça jette le résultat. _ est un nom de variable valide, mais qui n'est accessible qu'en écriture. Tu peux donc faire
let x = 3 in x
mais paslet _ = 3 in _
. C'est une info pour le compilo qui peut économiser des registres en ne sauvant pas la valeur retournée.La raison est que (>>) ne garde pas son résultat, alors que concatMap va me rendre une liste. Idéalement, il faudrait que je code une autre fonction qui me retourne la liste vide, mais j'ai eu la flemme, et le code ci-dessus a la même sémantique. (Et si tu te demandes l'intérêt d'évaluer une expression pour jeter son résultat, rappelle toi qu'on peut faire des effets de bord, donc que
let _ = foo () in 42
et42
ne sont pas pareil.)Pour ne pas comprendre
let test () = foo
, tu n'as pas du faire beaucoup de d'Ocaml.Ça déclare la *fonction* test qui n'a aucun argument. À chaque fois que tu l'appelles, foo est évalué.
let test = foo
déclare la *variable* test. foo n'est évalué qu'une fois, lors de la déclaration de test dont la valeur —qui ne changera plus jamais— est le résultat de l'évaluation de foo.[^] # Re: typage mou
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 2.
C'est d'ailleurs ainsi que c'est implanté en Caml, et sans doute en Haskell.
Et ça se fait en CL assez facilement.
(Après, il serait sans doute judicieux de passer par des méthodes génériques pour pouvoir traverser automatiquement des listes, vecteurs…)
(defmacro init-order-table ()
(defvar *order-table* (make-hash-table :test #'eql)))
(defmacro defconstant-ordered (&rest constants)
(cons 'progn
(loop for c in constants
for i from 0
collect
`(setf (gethash ',c *order-table*) ,i))))
(defmacro compare (sym1 sym2)
`(let ((v1 (gethash ',sym1 *order-table*))
(v2 (gethash ',sym2 *order-table*)))
(cond
((= v1 v2) 'EQ)
((< v1 v2) 'LT)
(t 'GT))))
(init-order-table)
(defconstant-ordered cFoo cBar)
(list
(compare cFoo cBar)
(compare cBar cFoo)
(compare cBar cBar))
type foo = Foo | Bar;;
[(compare Foo Bar);
(compare Bar Foo);
(compare Bar Bar)];;
[^] # Re: typage mou
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 4.
let concatMap f x = List.fold_left (@) [] (List.map f x);;
let return x = [x];;
let (>>=) v f = concatMap f v;;
let (>>) v f = let _ = concatMap f v in [];;
let test () =
[0;1;2;3;4;5] >>=
(fun x -> ["A";"B";"C";"D";"E"] >>=
(fun y -> return (x,y)));;
Et voila le travail.
Les monades, quand on code, c'est rien d'autre qu'une interface…
Et vu qu'OCaml a une couche objet, j'imagine qu'on peut même coder ça proprement, avec l'inférence de type qui se charge d'appeler les méthodes ">>=", ">>" et "return" correspondant à l'usage précis dans le code.
[^] # Re: Mais sinon, pourquoi je devrais m'intéresser à ce énième langage
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 2.
Ça veut dire que moins de programmes valides qu'on écrit en CL seront acceptés par Go, c'est tout !
Puis coller un typeur à CL (ou un sous-ensemble) c'est pas dur…
Tant qu'à faire, si je devais coder en Go, je programmerais sans doute en CL, pour compiler vers Go après au début, jusqu'à ce que les gens autour se rendent compte qu'il n'est en fait pas nécessaire d'utiliser Go…
[^] # Re: Oui
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Humeur 4 : Couvrez cette information que je ne saurais voir. Évalué à 4.
# Tout à fait d'accord (mais pas avec toi)
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Google: vers un contrôle assumé des résultats. Évalué à 2.
>> Je peux très bien chercher un logiciel de rippage de DVD disponible en torrent...
Oui. Et dans les faits, ni « logiciel » ni « rippage » ni « DVD » ni « torrent » ne sont classés par google comme des termes liés au piratage. J'imagine qu'il y a assez de geeks là-bas pour qu'ils s'y connaissent un tant soit peu.
Ensuite, il est possible que le site laisse passer « torrent truite omble » mais pas « torrent le-dernier-flim-qui-vient-de-sortir. »
>> La censure n'est désormais plus réservée aux dictatures,
Et ne l'a jamais été.
Tu as toi-même du expérimenter la censure via tes parents bien avant, avec l'interdiction de regarder des films d'horreur ou de cul avant tes 10 ans. Ou même qu'ils t'avaient caché l'existence de ces films. Honte sur tes parents totalitaires, dictatoriaux et hadopistes. Et honte sur toi aussi, le fruit de leur union.
>> et en plus elle relève maintenant des désidérata d'entreprises et non de gouvernements.
En plus, google, c'est vraiment des connards : ils censurent le spam qui arrive chez moi ! Quelle bande d'enflures ! Ils censurent viagra, cyalis, online pharmacy, alors que si ça se trouve, y a plein de clients de gmail qui ont des besoins de soutient (pénien).
# Ça commence mal
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Quand Oracle parle à Hudson. Évalué à 2.
Ouais, enfin, fallait écrire « lectrice » quand même alors…
# Le serveur web ?
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Le serveur de la FSF piraté?. Évalué à 3.
[^] # Re: Mais que ce qu'il a de si spécial ce ZFS ?
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal ZFS sous GPL grâce à GRUB ?. Évalué à 5.
Non, seulement les frustrés qui sont coincés avec leur GPL manichéenne qui demande tout ou rien, et qui ne peuvent en conséquence pas avoir accès à ZFS comme ils le voudraient.
[^] # Re: Pourquoi compliquer ?
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal ZFS sous GPL grâce à GRUB ?. Évalué à 2.
Distribué ou distribuable ?
C'est pas pareil du tout.
Distribué veut dire que je ne peux plus privatiser un bout de code en BSD fourni avec le logiciel GPL. Distribuable veut dire que si.
Si c'est le premier cas, je trouve que ça pue vraiment.
[^] # Re: attention
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal ZFS sous GPL grâce à GRUB ?. Évalué à 1.
[^] # Re: Erreur URL de ma feuille
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal On peut se copier dessus ? Concours linuxfr.. Évalué à 10.
Il peut très bien participer pour gagner le lot. Et à moins que vous ayez prévu un lot par personne qui a participé à la CSS gagnante, je trouve que l'accès publique aux données et la notion même de concours sont incompatibles…
Alors bon, un concours où le gagnant (celui qui a bossé) n'est même pas sûr d'avoir son prix, raflé par un autre (celui qui a pompé), j'appelle ça un piège à con.
Dans les concours, les appels d'offre, je crois bien que ne pas dévoiler son travail en cours est ce qu'on appelle couramment du bon sens…
Si on avait le choix de se tirer une balle dans le pied, pourquoi pas, mais ça n'a même pas l'air d'être le cas…
[^] # Re: je vais surement dire une betise
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au message network-manager, DSL et MTU. Évalué à 2.
Donc je ne cherche pas tant que ça à partager le modem… Étant seul utilisateur, c'est pas un souci…
# Wow !
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au sondage Combien de spams recevez-vous par jour ?. Évalué à 2.
Eh ben, c'était calme à l'époque…
Puis personne ne recevait plus de 50 mails de spam par jour ?
Eh ben, c'était calme à l'époque…
[^] # Re: tiling : ion3, wmii, xmonad
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au message WM sans bureau et sans barre de tâche. Évalué à 2.
Dans ma conf, j'ai
>> ((modm, xK_space ), sendMessage NextLayout)
Mais des layouts, j'en utilise beaucoup beaucoup…
Et de temps en temps, je vais trop vite…
Le message PreviousLayout n'existe pas.
Comment je fais pour revenir au layout précédent sans faire le tour ?
[^] # Re: Y'a-t-il un flic dans la tombe ?
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Y'a-t-il un flic dans la tombe ?. Évalué à 1.
J'ai trouvé ce film d'une nullité. Même pas digne de passer sur M6 lors d'une soirée séries B…
[^] # Re: Que dire ?
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Y'a-t-il un flic dans la tombe ?. Évalué à 6.
(ceci est une intervention d'apparence aigrie à l'intention d'un probable comique de répétition, vu l'ancienneté de la moule.)
# Si t'insistes
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Pour que DLFP 2.0 roxxe les ours. Évalué à 2.
Mais c'est vraiment pour te faire plaisir alors, car je fais ça à contre-cœur.
[^] # Re: c'est pas gagné...
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au message Installation d'un .deb sous Mandriva 2009. Évalué à 5.
Ça fait une semaine que t'as créé ton compte, t'es pas foutu de comprendre le bon sens et de communiquer clairement, et tu oses dire à un gars qui est là depuis 9 ans d'aller jouer ailleurs parce qu'il te dit comment faut s'y prendre ?
Eh ben…
# Trop de précautions
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Microsoft soutient et contribue à Open Street Map. Évalué à -2.
Oui, et c'est d'ailleurs forcément le cas. Il n'est pas possible qu'il en soit autrement.
>> Mais il reste encore plein d'inconnues avant de pouvoir soit applaudir des deux mains soit cracher sur cette annonce.
Non, c'est MS, alors on peut tout de suite cracher dessus. Avec MS, y a pas de juste milieu : soit ils ont tort, soit on a raison.
Alors crachons ! crachons !
Sus à la modération !
[^] # Re: Discrimination ?
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Temps de démarrage. Évalué à 3.
>> j'ai eu tord.
torT.
(rassure-moi, tu parlais bien de ça en disant qu'il allait manger cher ?)
[^] # Re: Déjà pris
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Généralisation de la décentralisation & XMPP ?. Évalué à 4.
[^] # Re: En voilà une nouvelle qu'elle est bonne
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Mise à dispo des sources Latex de la traduction de The Island. Évalué à 3.
Je me demande si docbook n'aurait pas été mieux.
Toujours plus facile de compiler d'un langage contextuel vers un langage non contextuel que l'inverse… (ie, on peut exporter docbook vers latex, mais je ne me risquerais pas à faire l'inverse…)
[^] # Re: Comment on compile ?
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Mise à dispo des sources Latex de la traduction de The Island. Évalué à 2.
Jette un coup d'œil à [http://perso.enstimac.fr/~gaborit/latex/latex-in-french.html] à tout hasard…
[^] # Re: Résultat des test.
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au message portée des méthodes. Évalué à 2.
1/ « ce » code.
2/ si tu dis pas quelle est l'erreur, on ne va pas deviner à ta place.
3/ « //Test sur les methodes imbriquées. » Au hasard : le test échoue, c'est donc que les méthodes imbriquées ne marchent pas en Java.