From ab2b9a982ede817362072623ff9ae2aa42e083da Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Thu, 18 Jan 2024 20:34:43 +0000 Subject: Move recursion lessons together --- .../lesson10_pattern_aliases/code.gleam | 15 +++++++++++++++ .../lesson10_pattern_aliases/text.html | 7 +++++++ 2 files changed, 22 insertions(+) create mode 100644 src/content/chapter2_flow_control/lesson10_pattern_aliases/code.gleam create mode 100644 src/content/chapter2_flow_control/lesson10_pattern_aliases/text.html (limited to 'src/content/chapter2_flow_control/lesson10_pattern_aliases') diff --git a/src/content/chapter2_flow_control/lesson10_pattern_aliases/code.gleam b/src/content/chapter2_flow_control/lesson10_pattern_aliases/code.gleam new file mode 100644 index 0000000..ee40a26 --- /dev/null +++ b/src/content/chapter2_flow_control/lesson10_pattern_aliases/code.gleam @@ -0,0 +1,15 @@ +import gleam/io + +pub fn main() { + io.debug(get_first_non_empty([[], [1, 2, 3], [4, 5]])) + io.debug(get_first_non_empty([[1, 2], [3, 4, 5], []])) + io.debug(get_first_non_empty([[], [], []])) +} + +fn get_first_non_empty(lists: List(List(t))) -> List(t) { + case lists { + [[_, ..] as first, ..] -> first + [_, ..rest] -> get_first_non_empty(rest) + [] -> [] + } +} diff --git a/src/content/chapter2_flow_control/lesson10_pattern_aliases/text.html b/src/content/chapter2_flow_control/lesson10_pattern_aliases/text.html new file mode 100644 index 0000000..b737eb8 --- /dev/null +++ b/src/content/chapter2_flow_control/lesson10_pattern_aliases/text.html @@ -0,0 +1,7 @@ +

+ The as operator can be used to assign sub patterns to variables. +

+

+ The pattern [_, ..] as it will match any non-empty list and + assign that list to the variable it. +

-- cgit v1.2.3