Open4

ReplitでGleamを使う

MzRyuKaMzRyuKa

Replitで利用できるテンプレートには、Gleamも含まれている。

せっかくなので、 ちょっと試してみる。

MzRyuKaMzRyuKa

以前、拙著「Gleamどうわ」の中で使った、シンデレラを探すロジックを実行してみる。

TitleにFindCinderellaと入れる。

その後、「Create Repl」をクリックしてReplitを作成。

gelam newしたときのディレクトリ構成が作られる。

あと、プロジェクト名は、どうやら「my_project」固定の様子。

また、あらかじめ作成されているmy_project.gleammy_project_test.gleamgleam.tomlの中身は、以下の通り。

さらに、画面上部の「Run」を押すと、gleam runが実行され、実行結果が表示される。

この時点では、Hello from my_projectと出力されるだけである。

MzRyuKaMzRyuKa

前述の通り、特定条件に合致した"シンデレラ"を見つけるプログラムを作成する。

import gleam/io
import gleam/string
import gleam/list

pub fn main() {
  io.println("Find Cinderella!")
  find_mygirl()
}

pub fn find_mygirl() {
  girls_profiles()
  |> list.map(find_girl)
  |> list.filter(fn(fg: Exam) { fg.result })
  |> list.first()
  |> string.inspect()
  |> io.println()
}

pub type Girl {
  Girl(name: String, shoesize: Int, hairstyle: String, haircolor: String)
}

pub type Exam {
  Exam(result: Bool, name: String)
}

pub fn find_girl(girl: Girl) {
  let name = girl.name
  let size = girl.shoesize
  let style = girl.hairstyle

  // 条件は、靴のサイズと髪型のみ
  case size, style {
    37, "Long" -> Exam(True, name)
    _, _ -> Exam(False, name)
  }
}

// 少女たちのデータ
pub fn girls_profiles() {
  [
    Girl(
      name: "ミオ",
      shoesize: 35,
      hairstyle: "Long",
      haircolor: "Light-Green",
    ),
    Girl(
      name: "サキ",
      shoesize: 36,
      hairstyle: "Short",
      haircolor: "Light-Blue",
    ),
    Girl(
      name: "ノゾミ",
      shoesize: 40,
      hairstyle: "Short",
      haircolor: "Green",
    ),
    Girl(
      name: "ミラ",
      shoesize: 40,
      hairstyle: "Semi-Long",
      haircolor: "Purple",
    ),
    Girl(
      name: "メグ",
      shoesize: 34,
      hairstyle: "Semi-Long",
      haircolor: "Brown",
    ),
    Girl(
      name: "シオリ",
      shoesize: 37,
      hairstyle: "Long",
      haircolor: "Dark-Red",
    ),
    Girl(
      name: "ビアンカ",
      shoesize: 38,
      hairstyle: "Long",
      haircolor: "Gold",
    ),
    Girl(
      name: "フローラ",
      shoesize: 36,
      hairstyle: "Long",
      haircolor: "Blue",
    ),
    Girl(
      name: "デボラ",
      shoesize: 39,
      hairstyle: "Short",
      haircolor: "Black",
    ),
    Girl(
      name: "ロザリー",
      shoesize: 38,
      hairstyle: "Long",
      haircolor: "Gold",
    ),
    Girl(
      name: "シンシア",
      shoesize: 37,
      hairstyle: "Long",
      haircolor: "Gold",
    ),
  ]
}

上記コードを、my_project.gleamに丸っと上書き貼り付け。

コードの反映が終わったら「Run」をクリックしてgleam runを実行!

無事結果が表示された。

MzRyuKaMzRyuKa

補足:Gleamのバージョンについて

2023.05.06の22時点でのgleamのバージョンは、0.27.0(2023.03.02リリース)だった様子。
Gleam自体の2023.05.06時点での最新バージョンは「0.28.3」(2023.04.17リリース)なので、意外と近い?

Console欄で、./gleam --versionを実施すれば、表示された。