J'ai écrit une fonction Haskell qui calcule la factorielle de chaque nombre dans une liste donnée et l'imprime à l'écran.Problème avec le "do" de Haskell
factPrint list =
if null list
then putStrLn ""
else do putStrLn ((show.fact.head) list)
factPrint (tail list)
La fonction fonctionne, mais je trouve la troisième ligne un peu confuse. Pourquoi le compilateur (GHC) n'a-t-il pas signalé d'erreur puisqu'il n'y a pas de "do" avant la fonction "putStrLn" (quasi?)? Si j'omets "do" de la 4ème ligne, une erreur apparaît comme prévu. Je suis assez nouveau à Haskell et ses façons, alors s'il vous plaît pardonnez-moi si j'ai dit quelque chose de trop stupide.
'do' est ici _not_ une fonction, c'est un mot-clé. –
De même, 'si a alors b else c' et' factPrint (queue list) 'ne sont pas des instructions, ce sont des expressions. –