25Fermer27
SallyLe 22/12/2008 à 01:28
moumou > tu as oublié le map ^^

En fait ça correspond à ce que j'ai écrit en caml (je suppose que "all" = "List.for_all" cheeky) sauf que, euh, pourquoi ne pas définir une fonction, comme moi ? cheeky
ah je crois que je comprends : c'est parce que haskell est paresseux c'est ça ? donc en fait "map taille m" ne va pas calculer la taille de tous les éléments ?

_all (( = ) (length m)) (map length m)
en caml on peut écrire la même chose :open List
let carre m = for
bon ça marche mais c'est un peu nul parce que ça calcule (peut-être inutilement) la taille de *tous* les éléments de la liste (quand il évalue le map) et ensuite seulement ça va évaluer le for_all et faire les tests. Mais haskell ne fait pas ça je suppose (c'est call-by-need, donc il ne calcule effectivement la longueur qu'au moment de tester l'égalité, c'est bien ça ?)

t carre m = for_all (compose (( = ) (length m)) length) m
(par contre ce qui poutre vachement plus c'est bien sûr :let compose f g x = f (g x)
le
trilove
ength m) *** length) m
ou avec un opérateur :let ( *** ) f g x = f (g x)
let carre m = for_all (( = ) (l
trilove²)