我知道這個聲音很簡單,但我沒有將兩個字符串合併成一個新字符串。如何在Haskell中連接兩個(IO)字符串?
的IO字符串 「a」 從GTK條目由
a <- (entryGetText text_field)
中提取的目標是結合它喜歡:
newstring = 「文字:」 +一
任何想法完成那個? 謝謝!
我知道這個聲音很簡單,但我沒有將兩個字符串合併成一個新字符串。如何在Haskell中連接兩個(IO)字符串?
的IO字符串 「a」 從GTK條目由
a <- (entryGetText text_field)
中提取的目標是結合它喜歡:
newstring = 「文字:」 +一
任何想法完成那個? 謝謝!
使用字符串連接:
do a <- entryGetText text_field
let b = "Text:" ++ a
return b
更簡單地說:
do a <- entryGetText text_field
return $ "Text:" ++ a
你可以玩遊戲太:
("Text:" ++) <$> (entryGetText text_field)
要擴展最後一行代碼:'<$>'等同於'\'fmap \''作爲中綴運算符。所以它做的是從IO Monad'(entryGetText text_field)'中取出值,並將'(「Text:」++)'應用於它。 – lucidbrot
您使用賦值操作符x <- expr
與expr :: m a
的非常時刻, m
是一些單子,x
不是m a
而是a
。在你的情況下,變量a
的類型爲String
,而不是IO String
,所以你可以像在純代碼中那樣連接它,例如。 "hello world " ++ a
。
'newstring < - fmap(「Text:」++)$ entryGetText text_field' – applicative