1
我想重寫interact
函數,但使用Text
而不是String
。是否可以使用Data.Text
和/或Data.Text.Lazy
來完成與interact
相同的行爲?`交互式`使用文本而不是字符串
例如,當我運行使用String
此程序:
main = interact (unlines . map f . lines)
where f "hello" = "wassup"
f _ = "wat?"
它等待一個線路輸入的,然後打印出在響應一條線,並等待輸入的下一行。我想編寫相同的代碼並使其適用於Text
。
{-# LANGUAGE OverloadedStrings #-}
import Data.Text.Lazy (Text)
import qualified Data.Text.Lazy as T
textInteract :: (Text -> Text) -> IO()
textInteract = undefined
main = textInteract (T.unlines . map f . T.lines)
where f "hello" = "wassup"
f _ = "wat?"
但是,這個用例不僅僅是特例textInteract
。我希望它在所有情況下的行爲與interact
一樣。
*衛生署*。我應該仔細看看這些文檔。 :)通過用'T.interact'替換'textInteract'並添加'import qualified Data.Text.Lazy.IO as T',後面的代碼版本確實的行爲就像它的'String'對應。它仍然有待證明它*總是*表現得像它的'String'對應,但現在我很滿意。 – 2012-08-13 21:41:14