J'ai une question très simple: Étant donné une fonction acceptant un caractère et renvoyant une chaîne
test :: Char -> [String]
comment peut-on convertir le caractère en chaîne? Je suis confus sur les deux types.
Dans Haskell, String
est un alias pour [Char]
:
type String = [Char]
Si vous voulez juste une fonction qui convertit un seul caractère en une chaîne, vous pouvez par exemple faire
charToString :: Char -> String
charToString c = [c]
Si vous préférez le style Pointfree, vous pouvez aussi écrire
charToString :: Char -> String
charToString = (:[])
Une chaîne n'est qu'un [Caractère]
Mais c'est juste une bonne façon de dire
'H':'E':'L':'L':'O':[]
Donc, pour en faire une [chaîne], nous pourrions faire:
['H':'E':'L':'L':'O':[]]
Une autre façon serait d'utiliser
return . return
Puisque return
pour les listes est défini comme :[]
Notez que vous pouvez convertir tout type implémentant la classe de type Show
en une chaîne à l'aide de show
:
(Show a) => a -> String
Comme Char
l'implémente, la fonction est déjà écrite pour vous!