blob: 938f5b3bb9d1d4535b084e0fe0ee92d1eec44b4a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
import gleam/list
import gleam/int
import gleam/io
import gleam/result as res
import gleam/erlang.{start_arguments}
fn get_day(handler: fn(Int) -> Nil) -> Result(Nil, String) {
let args = start_arguments()
use first <- res.then(
args
|> list.first()
|> res.replace_error("Pass the day as first argument!"),
)
use day <- res.then(
first
|> int.parse()
|> res.replace_error("The day argument must be a number!"),
)
handler(day)
Ok(Nil)
}
pub fn with_day(handler: fn(Int) -> Nil) -> Nil {
handler
|> get_day
|> res.map_error(io.println)
|> res.unwrap(or: Nil)
}
|