Bob

Bob

쉬움

소개

Bob은 나태한 십 대예요. 자기가 아주 쿨하다고 생각하길 좋아하죠. 그리고 어떤 일에도 절대 신나 하지 않아요. 그럼 쿨하지 않으니까요.

사람들이 말을 걸어도 돌아오는 대답은 몇 가지뿐이에요.

지침

이번 과제는 누군가 Bob에게 말을 걸거나 질문을 했을 때 Bob이 무엇이라고 답할지 판단하는 거예요.

Bob은 언제나 다섯 가지 중 하나로만 답해요.

  • "Sure." 질문을 하면 이렇게 답해요. 예를 들어 "How are you?" 같은 질문이죠. 질문의 규칙은 물음표로 끝난다는 거예요.
  • "Whoa, chill out!" 소리를 지르면 이렇게 답해요. 소리치는 규칙은 모든 글자를 대문자로 쓰는 거예요.
  • "Calm down, I know what I'm doing!" 소리치면서 질문을 하면 이렇게 말해요.
  • "Fine. Be that way!" 침묵에는 이렇게 답해요. 침묵의 규칙은 아무 말도 하지 않거나, 여러 가지 공백 문자를 조합하는 거예요.
  • "Whatever." 그 밖의 다른 모든 것에는 이렇게 답해요.

힌트

responseFor 함수를 구현해야 해요. 이 함수는 주어진 입력에 대한 Bob의 응답을 반환해요. 타입이 확실하지 않다면 제공된 시그니처를 사용해도 되지만, 그것이 창의성을 제한하도록 두지는 마세요:

responseFor :: String -> String

이 연습 문제를 풀려면 다음 내용을 읽어볼 수 있어요:

이 연습 문제는 텍스트 데이터를 다뤄요. 역사적인 이유로 Haskell의 String 타입은 문자들의 배열인 [Char]와 같은 의미예요. 텍스트 데이터를 더 효율적으로 다루려면 Text 타입을 사용할 수 있어요.

이 연습 문제를 선택적으로 확장해서 다음과 같은 것도 해볼 수 있어요.

  • Haskell의 문자열 타입에 대해 읽어봐요.

  • package.yaml의 의존성 목록에 - text를 추가해요.

  • 다음과 같은 방식으로 Data.Text를 임포트해요:

    import qualified Data.Text as T
    import           Data.Text (Text)
    
  • 이제 예를 들어 responseFor :: Text -> Text라고 작성하고, Data.Text의 콤비네이터를 예를 들어 T.isSuffixOf처럼 사용할 수 있어요.

  • Data.Text의 문서를 찾아봐요,

  • 그런 다음 Bob.hs에서 String을 모두 Text로 바꿀 수 있어요:

    responseFor :: Text -> Text
    

이 부분은 전부 선택 사항이에요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Haskell Exercism

Bob 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Haskell 트랙을 연습 문제 107개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.