2016-04-16 9 views
1

Wie kann ich printf über eine Liste verwenden? Ich habe eine Liste von Zahlen und ich möchte sie alle unter Berücksichtigung eines Formats (zB: %.3f) ausdrucken. Ich habe versucht, Karte über printf zu verwenden, aber es funktioniert nicht. Also, ich habe keine Ahnung. Kann mir jemand dabei helfen? Irgendwelche Ideen sind akzeptabel. Gibt es eine Möglichkeit, eine Zeichenfolge aus einer Liste unter Berücksichtigung eines benutzerdefinierten Formats zu erstellen?Verwenden von "printf" auf einer Liste in Haskell

+0

können Sie bitte hinzufügen, was Sie versucht haben - weil ich tatsächlich empfehlen würde mit 'map' und ich sehe nicht, warum es nicht funktionieren sollte – Carsten

+0

möglich duplizieren: https://stackoverflow.com/questions/36658890/is-there -a-way-to-use-Drucken-mit-den-Formaten-von-printf-in-haskell – Carsten

+0

das Ergebnis von 'printf' ist polymorph und kann nicht ohne Kontext entschieden werden, versuchen Sie, weitere Typ-Signaturen hinzuzufügen. – zakyggaps

Antwort

1

printf können Strings erzeugen, anstatt sie nur auf stdout zu drucken. Dieses ist, weil es auf seinen Resultattyp überladen ist (es ist auch Teil der Maschinerie , die es variadic macht).

import Text.Printf 

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

, die den Trick tun sollten.


BTW, printf ist nicht typsicher und während der Laufzeit blasen kann. Ich empfehle Ihnen, etwas wie formatting zu verwenden.

Verwandte Themen