web-dev-qa-db-fra.com

Comment concaténer deux (IO) cordes dans Haskell?

Je connais ce son très simple, mais je n'ai pas réussi à combiner deux cordes en une nouvelle.

La chaîne IO "a" d'une entrée gtk est récupérée par

      a <- (entryGetText text_field)

Le but est de le combiner comme:

newstring = "Texte:" + a

Des idées pour y arriver? Merci!

17
user1415426

Utilisation de la concaténation de chaînes:

 do a <- entryGetText text_field
    let b = "Text:" ++ a
    return b

Plus simplement:

 do a <- entryGetText text_field
    return $ "Text:" ++ a

Vous pouvez également jouer à des jeux:

 ("Text:" ++) <$> (entryGetText text_field)
26
Don Stewart

Je crois que dans Haskell, l'opérateur de concaténation de chaînes est ++.

14
Puppy

Au moment même où vous utilisez l'opérateur d'affectation x <- expr avec expr :: m a et m étant une monade, x n'est pas un m a mais plutôt un a. Dans votre cas, la variable a a le type String et non IO String, vous pouvez donc le concaténer comme vous le feriez en code pur, par exemple "hello world " ++ a.

6
Riccardo T.