#2151 Le 11/12/2010, à 11:53
- grim7reaper
Re : /* Topic des codeurs couche-tard [2] */
C'est chaud d'étudier un code haskell qu'on a pas écrit oO !
Merci, j'étudie ça.
Ce n'est pas spécifique au Haskell (c'est juste que c'est amplifié par le fait que tu débutes, et moi aussi d'ailleurs, en Haskell).
Si tu as des questions .
Dernière modification par grim7reaper (Le 11/12/2010, à 11:56)
Hors ligne
#2152 Le 11/12/2010, à 14:23
- Elzen
Re : /* Topic des codeurs couche-tard [2] */
Il faudrait que je regarde le Haskell, tiens, quand j'aurais du temps, ça a l'air sympa (avec le nombre de trucs que j'ai à regarder, "quand j'aurais du temps", ça doit vouloir dire pas avant dix ans )
Autant (au temps) pour moi
Les deux sont corrects, ça dépend de ce qu'on veut dire.
@ArkSeth tu m'intéresses avec ton lisp, faut qu'on en parle un de ces jours
Plaît-il ? *a peur*
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#2153 Le 11/12/2010, à 14:28
- grim7reaper
Re : /* Topic des codeurs couche-tard [2] */
Il faudrait que je regarde le Haskell, tiens, quand j'aurais du temps, ça a l'air sympa (avec le nombre de trucs que j'ai à regarder, "quand j'aurais du temps", ça doit vouloir dire pas avant dix ans )
Idem, je n'ose même pas faire de todo list, je crains qu'elle ne tienne pas sur mon DD…
Sinon, ouais Haskell c'est sympa (c'est ce qui m'a fait aimer le paradigme fonctionnel).
Les grosses différences avec les langages de la famille Lisp c'est :
- la syntaxe
- la paresse
- le typage statique fort
- l'inférence de type
- le pattern matching
- Haskell est un langage fonctionnel pur
kinouchou a écrit :@ArkSeth tu m'intéresses avec ton lisp, faut qu'on en parle un de ces jours
Plaît-il ? *a peur*
Fuis, il me semble qu'elle utilise Emacs
Dernière modification par grim7reaper (Le 11/12/2010, à 14:30)
Hors ligne
#2154 Le 11/12/2010, à 15:16
- grim7reaper
Re : /* Topic des codeurs couche-tard [2] */
Dans ma solution, je trouvais cette partie particulièrement moche (utiliser case of pour extraire l'index)
problem_12 :: String
problem_12 = case findIndex solution (map (divisor primes) triangle) of
Just index -> show $ triangle !! index
Nothing -> "There's something rotten in the state of Denmark"
Mais je ne savais pas faire autrement pour appliquer l'opérateur !! avec mon résultat.
Mais là je suis en train de lire le chapitre sur les foncteurs applicatifs et je connais maintenant une meilleure solution
import Control.Applicative
problem_12 :: (Integral a) => Maybe a
problem_12 = (!!) <$> Just triangle <*> findIndex solution (map (divisor primes) triangle)
Dernière modification par grim7reaper (Le 11/12/2010, à 15:19)
Hors ligne
#2155 Le 11/12/2010, à 15:22
- helly
Re : /* Topic des codeurs couche-tard [2] */
Hump, j'en suis encore au chapitre sur les fonctions, jvais peut être étudier les suivants avant de continuer.
Par contre je trouve bizarre que en haskell il existe pas des fonctions simple genre renvoyer le nombre d'occurence d'un terme dans une liste ou ce genre de choses.
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#2156 Le 11/12/2010, à 15:28
- grim7reaper
Re : /* Topic des codeurs couche-tard [2] */
Oui, mais en même temps ça se fait en une ligne ce genre de fonction donc bon.
count n = foldl (\acc x -> if x == n then acc + 1 else acc) 0
Et hop, ça fonctionne
Prelude> let count n = foldl (\acc x -> if x == n then acc + 1 else acc) 0
Prelude> count 3 []
0
Prelude> count 2 [0, 3, 4]
0
Prelude> count 2 [2, 3, 4]
1
Prelude> count 2 [2, 3, 4, 2, 2, 3]
3
Prelude> count 'a' ""
0
Prelude> count 'o' "Hello World!"
2
Prelude> count 'l' "Hello World!"
3
Prelude> count 'z' "Hello World!"
0
Dernière modification par grim7reaper (Le 11/12/2010, à 15:36)
Hors ligne
#2157 Le 11/12/2010, à 19:53
- compte supprimé
Re : /* Topic des codeurs couche-tard [2] */
Je me suis mis au Haskell o/
Voila ma première fonction :
isSquareTriangle :: Float -> Float -> Float -> Bool
isSquareTriangle a b c = if a > 0 && b > 0 && c > 0 && a^2 + b^2 == c^2
then True
else False
*Main> isSquareTriangle 6 8 10
True
*Main> isSquareTriangle 10 8 6
False
#2158 Le 11/12/2010, à 20:10
- grim7reaper
Re : /* Topic des codeurs couche-tard [2] */
Utiliser un opérateur de mise à la puissance pour une simple mise au carré ça pue.
Shame on you !
Sinon, j'en profite pour signaler qu'il y a 3 opérateurs de mise à la puissance en Haskell
** : Takes two floating point numbers and uses logarithms to compute the power.
^^ : Takes a fractional number (i.e. a floating point or a ratio, of which more later) and raises it to a positive or negative integer power.
^ : Takes any numerical type and raises it to a positive integer power.
On est 3 Haskellers maintenant :]
Dernière modification par grim7reaper (Le 11/12/2010, à 20:22)
Hors ligne
#2159 Le 11/12/2010, à 20:30
- compte supprimé
Re : /* Topic des codeurs couche-tard [2] */
a*a
C'est mieux ?
#2160 Le 11/12/2010, à 20:33
- grim7reaper
Re : /* Topic des codeurs couche-tard [2] */
Oui clairement. Ça évite de mettre un route un « gros » algo pour rien (même pas un gain de caractère alors…)
Dernière modification par grim7reaper (Le 11/12/2010, à 20:33)
Hors ligne
#2161 Le 11/12/2010, à 20:37
- Elzen
Re : /* Topic des codeurs couche-tard [2] */
Mon projet à rendre en Compilation porte sur un genre de calculatrice programmable (vous savez, des calculs, des variables et des boucles, comme quand on jouait avec nos CASIO ou nos TI quand on était p'tit) en yacc+flex.
Le truc doit pouvoir lire un fichier et faire toutes les opérations qu'il y a dedans.
Juste pour le fun, j'vais essayer de faire une interface graphique dessus, ce sera mon premier vrai truc en CGTK.
Dernière modification par ArkSeth (Le 11/12/2010, à 20:38)
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#2162 Le 11/12/2010, à 20:40
- helly
Re : /* Topic des codeurs couche-tard [2] */
On est 3 Haskellers maintenant :]
Bépo, wmii, uzbl, haskell…
C'est fou ce que les tdc?t lancent des modes !
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#2163 Le 11/12/2010, à 20:45
- grim7reaper
Re : /* Topic des codeurs couche-tard [2] */
J'ai fait ça il y a pas longtemps. Voilà un exemple de programme que je pouvais interpréter
i := 5;
read(j);
write(i);
write(j);
i := i + j;
write(i);
i := let x := i + j in
let x := x + 1 in 2 * x tel
+ x
tel;
write(i);
qui produit
entrer une valeur pour j : 3
i = 5
j = 3
i = 8
i = 35
ou ça
if (b + 2) then d := a; else c := a-5; e := 4; endif;
while a do
c := 2*a;
a := a - 1;
enddo
Bon, en même temps avec (yacc|bison) et flex le mérite n'est pas énorme…
Mais effectivement, ça peut te faire un bon entraînement à GTK+ (c'est plus « joli » et plus correct que CGTK ) si tu veux faire une GUI.
grim7reaper a écrit :On est 3 Haskellers maintenant :]
Bépo, wmii, uzbl, haskell…
C'est fou ce que les tdc?t lancent des modes !
J'utilise ni le bépo, ni wmii ni uzbl…
Je dois être réfractaire aux modes
Dernière modification par grim7reaper (Le 11/12/2010, à 20:50)
Hors ligne
#2164 Le 11/12/2010, à 21:16
- Elzen
Re : /* Topic des codeurs couche-tard [2] */
Bon, en même temps avec (yacc|bison) et flex le mérite n'est pas énorme…
Bah disons que c'est sur yacc et flex que portent les TP ^^
(C'est un cours de compil', quoi, on apprend à faire des grammaires et compagnie…
mais ch'uis bien d'accord pour dire que le truc serait super simple (vu que l'interface, j'vais la faire de ma propre volonté, c'est pas demandé) si on avait pas pleins d'autres trucs à faire sur la même période…
'fin d'un autre côté, je trouve à peu près tout ce qu'on fait en TP super simple, et plein de mes camarades de promo sont pas d'accord )
Mais effectivement, ça peut te faire un bon entraînement à GTK+ (c'est plus « joli » et plus correct que CGTK ) si tu veux faire une GUI.
J'hésitais entre deux significations pour le "+" : soit "GTK en C++" auquel cas ça ne s'appliquait pas au C, soit "version améliorée de GTK", auquel cas ça s'appliquait à GTK dans tous les langages.
Et donc je disais CGTK pour différencier de PyGTK. J'me plantais ?
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#2165 Le 11/12/2010, à 21:33
- grim7reaper
Re : /* Topic des codeurs couche-tard [2] */
Bah disons que c'est sur yacc et flex que portent les TP ^^
Oui, moi aussi.
Mais bon, dans pas mal de « cas réels » ils ne suffisent pas (gcc n'est pas codé avec flex et bison). D'où l'intérêt des cours qui te montre comment faire « à la main ». C'est d'ailleurs une des raisons qui font que, pour cette matière, j'ai préféré les cours aux TP.
'fin d'un autre côté, je trouve à peu près tout ce qu'on fait en TP super simple, et plein de mes camarades de promo sont pas d'accord )
Moi aussi…
J'hésitais entre deux significations pour le "+" : soit "GTK en C++" auquel cas ça ne s'appliquait pas au C, soit "version améliorée de GTK", auquel cas ça s'appliquait à GTK dans tous les langages.
Et donc je disais CGTK pour différencier de PyGTK. J'me plantais ?
Oui, le nom originel (donc la version C) c'est GTK+.
Au tout début il y a bien eu GTK (qui a eu une durée de vie plutôt courte, moins d'un an), le + est venu lors de la réécriture en orienté objet.
Pour le C++, il me semble qu'il y a eu GTK-- qui est maintenant remplacé par Gtkmm.
Pour une liste des noms selon le langage, tu peux voir ici.
Dernière modification par grim7reaper (Le 11/12/2010, à 21:37)
Hors ligne
#2166 Le 11/12/2010, à 22:27
- helly
Re : /* Topic des codeurs couche-tard [2] */
BN, j'ai rien fait :'(.
edit : .
Dernière modification par helly (Le 12/12/2010, à 01:36)
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#2167 Le 11/12/2010, à 22:40
- Rolinh
Re : /* Topic des codeurs couche-tard [2] */
@grim7 et helly: vous êtes en cours ensemble?
Hors ligne
#2168 Le 11/12/2010, à 22:45
- grim7reaper
Hors ligne
#2169 Le 11/12/2010, à 23:02
- Rolinh
Re : /* Topic des codeurs couche-tard [2] */
Bah j'avais l'impression. Ça parle de cours et de TP et ça fait de l'Haskell en même temps...
Hors ligne
#2170 Le 11/12/2010, à 23:08
- grim7reaper
Re : /* Topic des codeurs couche-tard [2] */
Et hop, un patch publié (donc un bug, une SIGSEGV, de résolu)
Bah j'avais l'impression. Ça parle de cours et de TP
Probablement parce que le TdCCT est fréquenté, entre autres, par des étudiant en info.
et ça fait de l'Haskell en même temps...
Ça c'est mon influence :]
Dernière modification par grim7reaper (Le 11/12/2010, à 23:09)
Hors ligne
#2171 Le 11/12/2010, à 23:22
- Rolinh
Re : /* Topic des codeurs couche-tard [2] */
Marrant, vu que tu as dit avoir été traumatisé par Scheme, j'ai pensé que tu n'aimais pas le paradigme fonctionnel et je croyais que tu faisais de l'Haskell parce que tu y étais obligé.
Je suis aussi passé par la case Scheme mais celui qui m'a vraiment traumatisé, c'est Prolog...
Il parait que pour quelqu'un qui n'a jamais programmé, c'est plus simple parce que très naturel (à ce qu'on dit hein) mais franchement moi je n'arrive pas à m'y faire...
Hors ligne
#2172 Le 11/12/2010, à 23:25
- compte supprimé
Re : /* Topic des codeurs couche-tard [2] */
Bn;
#2173 Le 11/12/2010, à 23:33
- grim7reaper
Re : /* Topic des codeurs couche-tard [2] */
Marrant, vu que tu as dit avoir été traumatisé par Scheme, j'ai pensé que tu n'aimais pas le paradigme fonctionnel et je croyais que tu faisais de l'Haskell parce que tu y étais obligé.
Oui le Scheme m'a un peu dégouté de la prog fonctionnel, mais je sentais quand même qu'il y avait un concept super intéressant derrière.
Quand j'ai découvert Haskell, j'ai redécouvert le paradigme fonctionnel (et toute sa puissance ).
Je suis aussi passé par la case Scheme mais celui qui m'a vraiment traumatisé, c'est Prolog...
Il parait que pour quelqu'un qui n'a jamais programmé, c'est plus simple parce que très naturel (à ce qu'on dit hein) mais franchement moi je n'arrive pas à m'y faire...
C'est possible, le fonctionnel aussi c'est censé être simple mais quand tu fais de l'impératif depuis des années bah ça fait un peu choc culturel. C'est la même dans l'autre sens, le mec qui débute en prog avec du fonctionnel (j'en connais un), bah il s'arrache les cheveux devant du C.
Mais objectivement, c'est vrai que l'impératif est sûrement moins abordable que le fonctionnel pour un novice complet (pour la prog logique, je ne sais pas vu que j'en ai jamais fait).
Changer de langage ou en apprendre un nouveau c'est simple et relativement rapide. Quand on change de paradigme par contre…
Dernière modification par grim7reaper (Le 11/12/2010, à 23:34)
Hors ligne
#2174 Le 11/12/2010, à 23:42
- Rolinh
Re : /* Topic des codeurs couche-tard [2] */
(pour la prog logique, je ne sais pas vu que j'en ai jamais fait).
Jettes-y un oeil. Il y en a qui adorent ça. Je crois que c'est les japonais qui voulaient à l'époque l'imposer. C'est très proche de la sémantique formelle et donc devrait être assez naturel. Mais moi, j'ai beau essayé, je ne peux pas.
Changer de langage ou en apprendre un nouveau c'est simple et relativement rapide. Quand on change de paradigme par contre…
Je ne te fais pas dire... Quand je râle après prolog, on me rétorque que pour quelqu'un qui n'a jamais programmé, c'est évident. Mais quand tu viens du procédural, c'est catastrophique...
Hors ligne
#2175 Le 11/12/2010, à 23:50
- Pylades
Re : /* Topic des codeurs couche-tard [2] */
[…]
Sinon, j'en profite pour signaler qu'il y a 3 opérateurs de mise à la puissance en Haskell** : Takes two floating point numbers and uses logarithms to compute the power.
^^ : Takes a fractional number (i.e. a floating point or a ratio, of which more later) and raises it to a positive or negative integer power.
^ : Takes any numerical type and raises it to a positive integer power.
Normal. L'élévation à la puissance est définie à trois niveaux en mathématiques.
On est 3 Haskellers maintenant :]
Bientôt tout le TdCCT ?
Oui clairement. Ça évite de mettre un route un « gros » algo pour rien (même pas un gain de caractère alors…)
Ben justement, le fait que Haskell sépare les différentes élévations à la puissance évite de faire tourner de gros algos pour rien. Je peut me tromper, mais j'ai comme l'intuition que a*a et a^2, ça revient au même. Il faudrait compiler avec les optimisations et comparer pour se faire une idée.
Dernière modification par Pylade (Le 12/12/2010, à 00:13)
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne