Ich bin verwirrt. Ich versuche, print
zu verwenden, aber ich weiß, dass Leute putStrLn
anwenden. Was sind die wirklichen Unterschiede zwischen ihnen?Unterschied zwischen Print und PutStrLn in Haskell
print $ function
putStrLn $ function
Ich bin verwirrt. Ich versuche, print
zu verwenden, aber ich weiß, dass Leute putStrLn
anwenden. Was sind die wirklichen Unterschiede zwischen ihnen?Unterschied zwischen Print und PutStrLn in Haskell
print $ function
putStrLn $ function
Die Funktion putStrLn
eine String
nimmt und zeigt sie auf dem Bildschirm, die von einem Neue-Zeile-Zeichen folgt (setzen eine Str Ing durch einen neuen L gefolgt i n e).
Weil es nur mit String
s arbeitet, ein gemeinsames Idiom ist ein beliebiges Objekt zu nehmen, wandelt es in ein String
und dann putStrLn
anwenden, um sie anzuzeigen. Die generische Art und Weise, ein Objekt zu einem String
ist mit der show
Funktion zu konvertieren, so dass Ihr Code würde mit vielen
putStrLn (show 1)
putStrLn (show [1, 2, 3])
putStrLn (show (Just 42))
am Ende Sobald Sie feststellen, dass, es ist nicht eine sehr große Strecke eine Funktion, die Konvertiten zu definieren zu einer String
und zeigt die Zeichenfolge in einem Schritt
print x = putStrLn (show x)
was genau das ist, was der print
Funktion ist.
'putStrLn' kann Nicht-ASCII-Zeichen wie" я "anzeigen, während' print' das nicht kann. Ich weiß nicht wirklich warum. Probieren Sie 'putStrLn" я "' vs 'print" я "'. – CMCDragonkai
@CMCDragonkai Es ist aus dem Grund, den ich in der Antwort gebe. Die Funktion 'print' ruft' putStrLn' auf der Ausgabe von 'show' auf, und die Funktion' show' wandelt Zeichenfolgen in ihre Unicode-Darstellung um, um sie anzuzeigen. Der Unicode-Punkt für 'я' (kyrillischer Buchstabe "ya") ist U + 044F, oder 1103 in Dezimal, weshalb 'show 'я" 'Ausgaben' "\" \\ 1103 \ "" '- das ist, was Sie müsste ghci eingeben, um die aus den sieben Zeichen "\ 1103" bestehende Zeichenfolge zu erhalten (probier es aus!) –
Bedeutet das nicht, dass es besser wäre, 'putStrLn' zu verwenden, wenn man mit Text im Allgemeinen arbeitet? – CMCDragonkai
'print = putStrLn. show' – Satvik
Haben Sie versucht, 'print 3',' putStrLn3', 'print" drei ",' putStrLn "drei" 'in ghci auszuprobieren? Dies ist wirklich eine Frage, die durch ein bisschen Experimentieren beantwortet werden kann. –