Как объединить две строки (IO) в Haskell?

Я знаю, это звучит очень просто, но мне не удалось объединить две строки в одну новую.

строка ввода-вывода " a " из записи gtk извлекается

      a <- (entryGetText text_field)

цель состоит в том, чтобы сочетать его как:

newstring = "Text:" +a

есть идеи для этого? Спасибо!

3 ответов


С помощью конкатенации строк:

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

просто:

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

вы также можете играть в игры:

 ("Text:" ++) <$> (entryGetText text_field)

Я считаю, что в Haskell оператор конкатенации строк ++.


тот самый момент, когда вы используете оператор присваивания x <- expr с expr :: m a и m одни монады, x - это не m a, а a. В вашем случае переменная a типа String, а не IO String, поэтому вы можете объединить его, как в чистом коде, например "hello world " ++ a.