1

interact関数を書き直したいのですが、Text代わりにString. と同じ動作を使用Data.Textおよび/または達成することは可能ですか?Data.Text.Lazyinteract

たとえば、次を使用してこのプログラムを実行すると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すべての状況で同じように動作するようにします。

4

1 に答える 1

5

http://hackage.haskell.org/packages/archive/text/0.11.2.0/doc/html/Data-Text-Lazy-IO.html

あなたのためにすでに持ってinteractいます:)

そうみたいhttp://hackage.haskell.org/packages/archive/text/0.11.2.0/doc/html/Data-Text-IO.html

于 2012-08-13T21:30:15.747 に答える