Conversione di una stringa in minuscolo

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