[Haskell-fr] Contexte nul

Gautier DI FOLCO gautier.difolco at gmail.com
Mon Apr 7 09:25:58 UTC 2014


Bonjour,

Je suis toujours sur mon coding dojo (qui s'est transformer en kata FP pour
moi) et du coup je me pose des questions là dessus :
getStats :: Extractor -> [MonthStmt] -> Statistics
getStats f = makeStatistics . extract f

weeklyStats :: Extractor -> [MonthStmt] -> [Statistics]
weeklyStats e d = map ((\f -> getStats f d) . filterByMonth) [first,
second, third, forth]
    where filterByMonth m = Extractor (\w -> catMaybes [m w]) allDaysF
allTemperaturesF `mappend` e

monthlyStats :: Extractor -> [MonthStmt] -> [Statistics]
monthlyStats e = map (\m -> getStats e [m])

(pour info, le reste du code est là :
https://github.com/blackheaven/dojo_14-04-10/blob/master/fonctionnel/haskell/src/Thermometre.hs#L121
)

Mon idée c'est que je suis arrivé à factoriser les filtres (Extractor) et
maintenant je veux factoriser les groupements.

Je veux pouvoir faire : getStats monthly mondays data
Ce qui donnerait :
getStats :: (Functor t) => (Extractor -> [MonthStmt] -> t Statistics) ->
Extractor -> [MonthStmt] -> t Statistics
getStats g e d = makeStatistics <$> g e d

Le soucis que je rencontre c'est que pour le getStats original, ma donnée
n'a pas de contexte (je veux dire qu'elle n'est pas dans une structure de
données), du coup je suis un peu eu.

Est-ce qu'il y a un moyen d'avoir un contexte optionnel ou dois-je passer
par les type classes ?

Merci par avance pour votre réponse.

NB : Ce questionnement est indépendant de l'autre, je veux juste renforcer
ma compréhension du système de types.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-fr/attachments/20140407/e62e28d7/attachment.html>


More information about the Haskell-fr mailing list