aboutsummaryrefslogtreecommitdiff
path: root/lessons/src/lesson025_list_patterns
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2023-12-12 15:29:01 +0000
committerLouis Pilfold <louis@lpil.uk>2023-12-12 15:29:05 +0000
commitb0840f22e53f6a820b11ba538fb3a9b926fb9b29 (patch)
tree055996a034409f7e401cdd853ba5895eb93add84 /lessons/src/lesson025_list_patterns
parent819cc743eba34cdd25e25f3c6ba5891a8cb6077d (diff)
downloadtour-b0840f22e53f6a820b11ba538fb3a9b926fb9b29.tar.gz
tour-b0840f22e53f6a820b11ba538fb3a9b926fb9b29.zip
More lessons
Diffstat (limited to 'lessons/src/lesson025_list_patterns')
-rw-r--r--lessons/src/lesson025_list_patterns/code.gleam17
-rw-r--r--lessons/src/lesson025_list_patterns/text.html15
2 files changed, 32 insertions, 0 deletions
diff --git a/lessons/src/lesson025_list_patterns/code.gleam b/lessons/src/lesson025_list_patterns/code.gleam
new file mode 100644
index 0000000..a5619aa
--- /dev/null
+++ b/lessons/src/lesson025_list_patterns/code.gleam
@@ -0,0 +1,17 @@
+import gleam/io
+import gleam/int
+import gleam/list
+
+pub fn main() {
+ let x = list.repeat(int.random(0, 5), times: int.random(0, 3))
+ io.debug(x)
+
+ let result = case x {
+ [] -> "Empty list"
+ [1] -> "List of just 1"
+ [4, ..] -> "List starting with 4"
+ [_, _] -> "List of 2 elements"
+ _ -> "Some other list"
+ }
+ io.debug(result)
+}
diff --git a/lessons/src/lesson025_list_patterns/text.html b/lessons/src/lesson025_list_patterns/text.html
new file mode 100644
index 0000000..de55eef
--- /dev/null
+++ b/lessons/src/lesson025_list_patterns/text.html
@@ -0,0 +1,15 @@
+<p>
+ Lists and the values they contain can be pattern matched on in case
+ expressions.
+</p>
+<p>
+ List patterns match on specific lengths of lists. The pattern <code>[]</code>
+ matches an empty list, and the pattern <code>[_]</code> matches a list with
+ one element. They will not match on lists with other lengths.
+</p>
+<p>
+ The spread pattern <code>..</code> can be used to match the rest of the list.
+ The pattern <code>[1, ..]</code> matches any list that starts with
+ <code>1</code>. The pattern <code>[_, _, ..]</code> matches any list that has
+ at least two elements.
+</p>