interact
関数を書き直したいのですが、Text
代わりにString
. と同じ動作を使用Data.Text
および/または達成することは可能ですか?Data.Text.Lazy
interact
たとえば、次を使用してこのプログラムを実行するとString
:
main = interact (unlines . map f . lines)
where f "hello" = "wassup"
f _ = "wat?"
1 行の入力を待ってから、応答として 1 行を出力し、次の入力行を待ちます。同じコードを書いて、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
すべての状況で同じように動作するようにします。