Haskell:
Conversione di una stringa in minuscolo
How to:
In Haskell, possiamo utilizzare Data.Text.toLower
per convertire una stringa in minuscolo. Ecco un esempio:
import Data.Text (toLower, pack, unpack)
toLowerCase :: String -> String
toLowerCase = unpack . toLower . pack
main :: IO ()
main = putStrLn $ toLowerCase "Ciao Mondo!"
Output:
ciao mondo!
Deep Dive
La funzione toLower
di Data.Text
è più efficiente delle soluzioni basate su liste, grazie all’ottimizzazione delle operazioni su testi di Data.Text
. Prima di Data.Text
, i programmatori di Haskell utilizzavano funzioni come map toLower
su stringhe, ma queste non gestivano bene la localizzazione e i caratteri speciali.
Utilizzare Data.Text
implica anche migliori performance per le stringhe grandi, in quanto è ottimizzato per gestire grandi blocchi di testo rispetto alle stringhe semplici che sono liste di caratteri. Tuttavia, unpack
e pack
sono necessari per convertire tra String
(una lista di caratteri) e Text
.
Un’alternativa più diretta, benché meno efficiente ed elegante, impiega la funzione toLower
del modulo Data.Char
:
import Data.Char (toLower)
toLowerCaseSimple :: String -> String
toLowerCaseSimple = map toLower
main :: IO ()
main = putStrLn $ toLowerCaseSimple "Ciao Mondo!"
Le operazioni di conversione di case sono complesse in Haskell, come in altri linguaggi, a causa della vasta gamma di regole di capitalizzazione di lettere in diverse lingue e set di caratteri (Unicode). Data.Text.toLower
gestisce molte di queste complicazioni in modo trasparente.
See Also
- Documentazione di
Data.Text
: https://hackage.haskell.org/package/text-1.2.4.1/docs/Data-Text.html - Documentazione di
Data.Char
: https://hackage.haskell.org/package/base-4.16.1.0/docs/Data-Char.html - Una guida alle stringhe in Haskell: http://haskell.org/haskellwiki/String_cheat_sheet