[Haskell-fr] Demande de revue de code

Arnaud Bailly arnaud.oqube at gmail.com
Thu Apr 3 20:29:27 UTC 2014


Voici les pragmas avec lesquelles ton programme compile (ghc 7.6.3):

{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE FlexibleInstances #-}

FYI, cela fait environ 8 ans que je présente des confs, surtout dans les milieux agiles, sur la prof. fonctionnelle en gênéral et Haskell en particulier.

IMHO, les concepts de base sont déjà suffisamment éloignés de la réalité quotidienne de 95% Des programmeurs pour ne pas en rajouter dans la complexité. En plus le plaisir de faire du Haskell vient aussi de la légèreté de la syntaxe, de la transparence référentielle qui te permet de factoriser et abstraire n’importe quel bout de code. Dérouler des fonctions de base, des types simples, les “abstraire” simplement dans d’autres fonctions, construire éventuellement des fonctions d’ordre supérieur, et faire tout ça de manière sûre parce que fortement typée et testée, c’est déjà beaucoup. 

Les lens, les monades, les applicatifs, c’est du bruit pour les hipster. Personne n’est Edward Kmett ou Simon Peyton-Jones donc ça ne sert à rien de faire semblant. 

En informatique il y a deux principes pour réussir: Keep It Simple and Loose Couping.

Bon travail,
Arnaud

On 03 Apr 2014, at 19:32, Gautier DI FOLCO <gautier.difolco at gmail.com> wrote:

> Le 3 avril 2014 16:33, Arnaud Bailly <arnaud.oqube at gmail.com> a écrit :
> Je ne vois pas trop la partie TDD, je trouve personnellement les tests peu expressifs.
> 
> Je pensais le faire vis-à-vis de la "distillation" des spécifications, je m'explique.
> J'ai un diaporama qui va contenir les instructions que je dévoilerais au fur et à mesure :
>   - Les températures sont envoyées soit en °C soit en °F, la précision est d'une décimale.
>                         * T(°C) = (T(°F) - 32)/1.8
>                         * T(°F) = T(°C) * 1.8 + 32
> 
>  - Les températures sont récoltées matin et soir et sont envoyées par ordre de récolte, en commençant par un matin.
> 
>  - On veut les statistiques suivantes pour toutes les valeurs reçues : Minimum / Maximum / Moyenne
>     On veut le résultat en °F uniquement si toutes les valeurs sont en °F.
> 
>  - On veut ces statistiques uniquement pour les mesures du matin ou uniquement pour les mesures l'après midi.
> 
>  - On veut ces statistiques par semaine.
> 
>  - On veut ces statistiques par mois.
> 
>  - On veut ces statistiques par mois pour les lundi matin des semaines paires.
> 
> L'idée est d'instaurer un certain rythme.
> 
> IMHO illustrer le TDD en Haskell implique de partir de Quickcheck. Tes tests sur l'égalité et les propriétés des Temperatures pourraient tirer parti de cet outil par exemple.
> 
> J'ai un peu de mal à voir quelles propriétés tester.
>  
> Par ailleurs si tu veux utiliser HSpec alors je te suggérerai de "suivre le grain" de l'API. 
> 
> describe "Both Fahrenheit" $ do
>                 it "same" $ do
> 
> c'est pas trés "beau", il serait plus logique d'avoir quelque chose du genre:
> 
> describe "Both Fahrenheit" $ do
>                 it "should be equal given same value" $ do
>                 it "should be different given different values" $ do
> 
> 
> Je plaide coupable, mais j'aurais le même problème de nommage avec RSpec.
>  
> Dans le code principal, je ne vois pas trop le problème que tu as avec ta classe: j'arrive à compiler ce code sans problème en rajoutant les flags qui vont bien (ghc me le dit...). 
> 
> Au moment de l'appel du programme via le shell ? J'utilise cabal, du coup je suppose que je dois regarder comment l'ajouter dedans.
>  
> Je ne suis pas sûr non plus que l'utilisation intensive d'une notation "point-free" aide à la compréhension.... Surtout avec un pipeline de 10 fonctions. Je te suggérerai de détailler chaque partie de la fonction.
> 
> ok, mais le but n'est pas qu'ils comprennent l'intégralité de la fonction, toujours est-il que ça ne me coûte rien de le faire.
>  
> 
> _______________________________________________
> Haskell-fr mailing list
> Haskell-fr at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-fr

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-fr/attachments/20140403/922fffa1/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 496 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://www.haskell.org/pipermail/haskell-fr/attachments/20140403/922fffa1/attachment-0001.sig>


More information about the Haskell-fr mailing list