トラック
/
Haskell
Haskell
/
演習
/
ロボットの名前
ロボットの名前

ロボットの名前

中級

説明

ロボットの工場出荷時の設定を管理します。

ロボットが工場のラインから出てきたとき、名前はまだありません。

ロボットの電源を初めて入れると、大文字2文字のあとに3桁の数字が続く形式のランダムな名前が生成されます。たとえばRX837やBC811のような名前です。

ときどき、ロボットを工場出荷時の設定にリセットする必要があります。これは、その名前が消去されることを意味します。 次に名前を尋ねると、そのロボットは新しいランダムな名前で応答します。

名前はランダムでなければなりません。予測できる並びになってはいけません。 ランダムな名前を使うということは、名前が重複するリスクを伴います。 解答では、存在するすべてのロボットが一意の名前を持つようにする必要があります。

ヒント

この演習を完了するには、データ型Robotを可変変数として作成し、データ型RunStateも作成する必要があります。また、次の関数を実装する必要があります。

  • initialState
  • mkRobot
  • resetName
  • robotName

ダミーのデータ宣言と型シグネチャはすでに用意されていますが、関数を定義し、意味のあるデータ型、newtype、または型シノニムを作成するのは自分で行う必要があります。この演習では、状態をモデル化するためにStateモナドを使います。より具体的には、StateTモナドトランスフォーマーを使ってStateモナドとIOモナドを組み合わせます。すべてのテストは、initialStateをevalStateTに渡す状態として実行されます。


出典

gSchoolでのPaul Blackwellとのデバッグセッション。
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Haskell Exercism

ロボットの名前を始める準備はできましたか?

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