2016-04-16 1 views
1

Comment puis-je utiliser printf dans une liste? J'ai une liste de nombres et je veux les imprimer tous en respectant un format (ex: %.3f). J'ai essayé d'utiliser la carte sur printf, mais cela ne fonctionne pas. Donc, je n'en ai aucune idée. Quelqu'un peut-il m'aider avec ça? Toutes les idées sont acceptables. Est-il possible de créer une chaîne à partir d'une liste respectant un format personnalisé?L'utilisation de "printf" dans une liste dans Haskell

+0

pouvez-vous s'il vous plaît ajouter ce que vous avez essayé - parce que je recommanderais en effet d'utiliser 'map' et je ne vois pas pourquoi cela ne devrait pas fonctionner – Carsten

+0

dupliquer possible: https://stackoverflow.com/questions/36658890/is-there -a-way-to-use-print-avec-les-formats-de-printf-in-haskell – Carsten

+0

Le résultat de 'printf' est polymorphique et ne peut pas être décidé sans contexte, essayez d'ajouter plus de signatures de type. – zakyggaps

Répondre

1

printf peut produire des chaînes au lieu de simplement les imprimer sur stdout. Ce est parce qu'il est surchargé sur son type de résultat (c'est aussi une partie de la machinerie qui le rend variadique).

import Text.Printf 

main :: IO() 
main = putStrLn . unwords $ printf "%.3f" <$> ([1..10] :: [Double]) 

Cela devrait faire l'affaire.


BTW, printf est de type pas sûr et peut souffler au moment de l'exécution. Je vous recommande d'utiliser quelque chose comme formatting.