Как конкатрировать две (IO) строки в Haskell?
Я знаю, что этот звук очень прост, но мне не удалось объединить две строки в новую.
Строка IO "a" из записи gtk выбирается
a <- (entryGetText text_field)
Цель состоит в том, чтобы объединить его, как:
newstring = "Текст:" + a
Любые идеи для этого?
Спасибо!
Ответы
Ответ 1
Использование конкатенации строк:
do a <- entryGetText text_field
let b = "Text:" ++ a
return b
Проще говоря:
do a <- entryGetText text_field
return $ "Text:" ++ a
Вы также можете играть в игры:
("Text:" ++) <$> (entryGetText text_field)
Ответ 2
Я считаю, что в Haskell оператор конкатенации строк ++
.
Ответ 3
В тот самый момент, когда вы используете оператор присваивания x <- expr
с expr :: m a
и m
, являющийся некоторой монадой, x
не является m a
, а скорее a
. В вашем случае переменная a
имеет тип String
, а не IO String
, поэтому вы можете объединить ее так же, как в чистом коде, например. "hello world " ++ a
.