Sono confuso. Provo ad usare print
, ma so che le persone applicano putStrLn
. Quali sono le reali differenze tra loro?Differenza tra Stampa e putStrLn in Haskell
print $ function
putStrLn $ function
Sono confuso. Provo ad usare print
, ma so che le persone applicano putStrLn
. Quali sono le reali differenze tra loro?Differenza tra Stampa e putStrLn in Haskell
print $ function
putStrLn $ function
La funzione putStrLn
prende una String
e la visualizza sullo schermo, seguito da un carattere di nuova riga (mettere un ing Str seguito da una nuova L i n e).
Perché funziona solo con i String
s, un idioma comune è quello di prendere qualsiasi oggetto, convertirlo in un String
, e quindi applicare putStrLn
per visualizzarlo. Il modo generico per convertire un oggetto in un String
è con la funzione show
, in modo che il codice sarebbe finire con un sacco di
putStrLn (show 1)
putStrLn (show [1, 2, 3])
putStrLn (show (Just 42))
Una volta si nota che, non è un tratto molto grande per definire una funzione che converte ad un String
e visualizza la stringa in un solo passo
print x = putStrLn (show x)
che è esattamente quello che la funzione print
è.
'putStrLn' può mostrare caratteri non ASCII come" я "mentre' print' non può. Però non so davvero perché. Prova 'putStrLn" я "' vs 'print" я "'. – CMCDragonkai
@CMCDragonkai È per la ragione per cui do la risposta. La funzione 'print' chiama' putStrLn' sull'output di 'show', e le funzioni' show' converte le stringhe nella loro rappresentazione unicode per visualizzarle. Il punto unicode per 'я' (lettera cirillica "ya") è U + 044F, o 1103 in decimale, motivo per cui "show" я "output" "\" \\ 1103 \ "" '- questo è ciò che dovrebbe digitare ghci per ottenere la stringa composta dai sette caratteri '" \ 1103 "' (provalo!) –
Non significa che sarebbe meglio usare 'putStrLn' quando si lavora con il testo in generale? – CMCDragonkai
'print = putStrLn. show' – Satvik
Hai provato a eseguire 'print 3',' putStrLn 3', 'print" three "', 'putStrLn" three "' in ghci? Questa è davvero una domanda alla quale si può rispondere con un po 'di sperimentazione. –