web-dev-qa-db-fra.com

Différence entre print et putStrLn à Haskell

Je suis confus. J'ai essayé d'utiliser print, mais je sais que les gens appliquent putStrLn. Quelles sont les vraies différences entre eux?

print $ function 
putStrLn $ function
47
Amir Nabaei

La fonction putStrLn prend un String et l'affiche à l'écran, suivi d'un caractère de nouvelle ligne (put a Str ing suivi d'un nouveau L i n e).

Comme il ne fonctionne qu'avec Strings, un idiome courant consiste à prendre n'importe quel objet, à le convertir en String, puis à appliquer putStrLn pour l'afficher. La façon générique de convertir un objet en String est avec la fonction show, donc votre code se retrouverait avec beaucoup de

putStrLn (show 1)
putStrLn (show [1, 2, 3])
putStrLn (show (Just 42))

Une fois que vous avez remarqué cela, il n'est pas très difficile de définir une fonction qui se convertit en String et affiche la chaîne en une seule étape

print x = putStrLn (show x)

qui est exactement ce qu'est la fonction print.

79
Chris Taylor