Bob

Bob

初級

はじめに

ボブは、無気力な10代の少年です。 自分はとてもクールだと思っています。 そして、物事に興奮することなんて絶対にありません。 そんなのはクールじゃありませんから。

誰かが話しかけても、返ってくる言葉はごく限られています。

説明

Bobが誰かに何か話しかけられたり、質問されたりしたときに、Bobが何と答えるかを判断するのが課題です。

Bobの答えは、必ず次の5つのうちのどれかになります。

  • "Sure." これは、質問をされたときの返事です。たとえば"How are you?"のような質問です。 質問とみなす条件は、疑問符で終わっていることです。
  • "Whoa, chill out!" これは、Bobに向かって怒鳴られたときの答えです。 怒鳴っているとみなす条件は、すべて大文字で書かれていることです。
  • "Calm down, I know what I'm doing!" これは、怒鳴りながら質問されたときに言う言葉です。
  • "Fine. Be that way!" これは、何も言われなかったときの返事です。 無言とみなす条件は、何も書かれていないか、空白文字をいろいろ組み合わせただけであることです。
  • "Whatever." これは、それ以外のすべてに対する答えです。

ヒント

与えられた入力に対してボブの返答を返すresponseFor関数を実装してください。型がわからない場合は、用意されているシグネチャを使ってもかまいませんが、それを創造性の制約にしないでください。

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に登録すれば、107個の演習、そして本物の人間によるメンタリングとともに、Haskellを学んでマスターできます。すべて無料です。