Open4
ReplitでGleamを使う
以前、拙著「Gleamどうわ」の中で使った、シンデレラを探すロジックを実行してみる。
TitleにFindCinderella
と入れる。
その後、「Create Repl」をクリックしてReplitを作成。
gelam new
したときのディレクトリ構成が作られる。
あと、プロジェクト名は、どうやら「my_project」固定の様子。
また、あらかじめ作成されているmy_project.gleam
やmy_project_test.gleam
、gleam.toml
の中身は、以下の通り。
さらに、画面上部の「Run」を押すと、gleam run
が実行され、実行結果が表示される。
この時点では、Hello from my_project
と出力されるだけである。
前述の通り、特定条件に合致した"シンデレラ"を見つけるプログラムを作成する。
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
を実行!
無事結果が表示された。