aboutsummaryrefslogtreecommitdiff
path: root/src/content/chapter5_advanced_features/lesson08_external_gleam_fallbacks/code.gleam
blob: a97b8fca30d538c9e956f6489257fa6339244db2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import gleam/io

@external(erlang, "lists", "reverse")
pub fn reverse_list(items: List(e)) -> List(e) {
  tail_recursive_reverse(items, [])
}

fn tail_recursive_reverse(items: List(e), reversed: List(e)) -> List(e) {
  case items {
    [] -> reversed
    [first, ..rest] -> tail_recursive_reverse(rest, [first, ..reversed])
  }
}

pub fn main() {
  io.debug(reverse_list([1, 2, 3, 4, 5]))
  io.debug(reverse_list(["a", "b", "c", "d", "e"]))
}