2010-08-30 3 views
2

question rapide, je l'ai rencontré tout en obtenant sous moi dans Haskell mes pieds liés à ce test rapide:meilleure façon d'effectuer E/S simple principal

module Main where 
main :: IO() 
main = putStrLn (show (inc 3)) 

inc :: (Num a) => a -> a 
inc x = x+1 

Y at-il une meilleure façon de sortir la valeur de la fonction inc? Je ne pouvais pas obtenir de sortie sans utiliser des parens imbriqués pour forcer l'ordre d'évaluation. Avec moins de parens, je reçois des erreurs de type. Il suffit de comprendre qu'il doit y avoir un meilleur moyen.

Merci si vous pouvez effacer ma tête :)

Répondre

12

d'abord: entre parenthèses ne force pas l'ordre d'évaluation. Pour se débarrasser des parenthèses, vous pouvez utiliser $ qui a une très faible priorité et vous permet ainsi de vous débarrasser des parenthèses pour le dernier argument.

Pour ce cas particulier, il y a aussi la fonction print qui est définie comme putStrLn . show, vous pouvez donc faire print (inc 3) ou print $ inc 3.

+0

Une grande aide, très obligé. C'est toujours les choses simples qui me font :) – JohnCohorn

Questions connexes