Bonjour Gautier,
Je ne vois pas trop la partie TDD, je trouve personnellement les tests peu expressifs. 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. 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
Mais encore une fois, l'exemple choisi se prêterait pas mal à l'utilisation de quickcheck.
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...).
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.
Une approche que j'aime bien utiliser et qui fonctionne bien en Haskell c'est de partir de la fonction principale qui ne fait rien, puis de la décomposer.