web-dev-qa-db-fra.com

Newline dans Haskell String?

Comment puis-je créer une nouvelle ligne dans une chaîne? Est-ce possible sans utiliser IO ()?

formatRow :: Car -> String
formatRow (a, d:ds, c, x:xs) = a ++ " | " ++ x ++ concat xs ++ " | " ++ show c ++ " | " ++ d ++ concat ds ++ (show '\n')
31
Ash

Pour créer une chaîne contenant une nouvelle ligne, écrivez simplement "\n".

Si vous exécutez votre programme sous Windows, il sera automatiquement converti en "\r\n".

Notez que l'appel de show dessus échappera à la nouvelle ligne (ou à tout autre méta-caractère), donc ne faites pas foo ++ (show "\n") ou foo ++ (show '\n') - utilisez simplement foo ++ "\n".

Notez également que si vous évaluez simplement une expression de chaîne dans GHCi sans utiliser putStr ou putStrLn, elle appellera simplement show dessus, donc par exemple la chaîne "foo\n" s'affichera comme "foo\n" dans GHCi, mais cela ne change pas le fait qu'il s'agit d'une chaîne contenant un retour à la ligne et il s'imprimera de cette façon, une fois que vous l'avez sorti en utilisant putStr.

57
sepp2k