clustersOf s =
        filter ((== s) . length) . map (take s) . tails

clusters_of size list =
        map (take size)
        $ map (`drop` list) [0..length list - size]

La différence est je pense principalement une question de goût. Je trouve évidemment ma version plus simple à comprendre ;)

Après on peut faire presque pareil comme ça:

clustersOf s lst = map (take s) $ take (length list - size) $ tails lst


Le 23 juin 2017 à 11:03, Marc Chantreux <khatar@phear.org> a écrit :
hello,

On Thu, Jun 22, 2017 at 06:04:34PM +0200, Simon Marechal wrote:
> Je t'ai mis un commentaire dans ton gist avec une technique très classique
> pour compter le nombre d'occurences d'éléments d'une liste.

merci beaucoup! je (re?)découvre l'existence de <$> (comment ai-je pu vivre
sans?)

premiere question qui me vient: tu proposes

clustersOf s =
        filter ((== s) . length) . map (take s) . tails

ou j'ai écris

clusters_of size list =
        map (take size)
        $ map (`drop` list) [0..length list - size]

j'aurais tendance a préferer ma solution qui ne necessite pas de
filtrage. pourrais-tu me dire ce qui te motivait en écrivant ta version?

pour le reste: lecture à la prochaine pause.

--
Marc Chantreux (eiro on github and freenode)
http://eiro.github.com/
http://eiro.github.com/atom.xml
"Don't believe everything you read on the Internet"
    -- Abraham Lincoln
_______________________________________________
Haskell-fr mailing list
Haskell-fr@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-fr