interact
함수를 다시 쓰고 싶지만 String
대신 Text
을 사용하고 싶습니다. 과 동일한 동작을 수행하려면 Data.Text
및/또는 Data.Text.Lazy
을 사용할 수 있습니까? 예를 들어문자열 대신 텍스트를 사용하여
, 나는 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
과 똑같이 행동하기를 바랍니다. *
* DOH하는 것처럼
보인다. 나는 문서를 더주의 깊게 살펴야했다. :)'textInteract'를'T.interact'로 대체하고'Import qualified Data.Text.Lazy.IO'를 T로 추가함으로써, 코드의 후자의 버전은 실제로'String' 대응 물과 똑같이 동작합니다. 항상 * String *과 비슷하게 동작하지만, 지금은 만족 스럽습니다. –