Comment concat deux (IO) les Chaînes de caractères en Haskell?
Je sais ce son très simple, mais je n'ai pas réussi à combiner les deux chaînes en une nouvelle.
Le IO Chaîne de caractères "a" à partir d'un gtk entrée est récupérée par
a <- (entryGetText text_field)
L'objectif est de les combiner comme:
= nouvellechaine de Texte": "+un
Toutes les idées pour le réaliser?
Merci!
newstring <- fmap ("Text: " ++) $ entryGetText text_field
OriginalL'auteur user1415426 | 2012-05-25
Vous devez vous connecter pour publier un commentaire.
Utilisant la concaténation de chaîne:
Plus simplement:
Vous pouvez jouer à des jeux trop:
<$>
est équivalent à`fmap`
comme opérateur infixe. Donc, ce que ce n'est qu'il prend la valeur de la IO Monade(entryGetText text_field)
et s'applique("Text:" ++)
.OriginalL'auteur Don Stewart
Je crois qu'en Haskell, l'opérateur de concaténation de chaîne est
++
.Le
String
type est juste unList
deChar
s, de sorte que++
travaillera également surString
s. Par exemple,"has" ++ "kell"
retourne"haskell"
.C'est vrai. Mon mauvais.
OriginalL'auteur Puppy
L'instant où vous utilisez l'opérateur d'affectation
x <- expr
avecexpr :: m a
etm
d'être une monade,x
n'est pas unm a
mais plutôt una
. Dans votre cas, la variablea
a typeString
et pasIO String
, de sorte que vous pouvez concaténer comme vous le feriez dans le plus pur code, par exemple"hello world " ++ a
.OriginalL'auteur Riccardo T.