aboutsummaryrefslogtreecommitdiff
path: root/lessons/src/lesson023_variable_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/lesson023_variable_patterns
parent819cc743eba34cdd25e25f3c6ba5891a8cb6077d (diff)
downloadtour-b0840f22e53f6a820b11ba538fb3a9b926fb9b29.tar.gz
tour-b0840f22e53f6a820b11ba538fb3a9b926fb9b29.zip
More lessons
Diffstat (limited to 'lessons/src/lesson023_variable_patterns')
-rw-r--r--lessons/src/lesson023_variable_patterns/code.gleam16
-rw-r--r--lessons/src/lesson023_variable_patterns/text.html17
2 files changed, 33 insertions, 0 deletions
diff --git a/lessons/src/lesson023_variable_patterns/code.gleam b/lessons/src/lesson023_variable_patterns/code.gleam
new file mode 100644
index 0000000..78eb050
--- /dev/null
+++ b/lessons/src/lesson023_variable_patterns/code.gleam
@@ -0,0 +1,16 @@
+import gleam/io
+import gleam/int
+
+pub fn main() {
+ let x = int.random(0, 5)
+ io.debug(x)
+
+ let result = case x {
+ // Match specific values
+ 0 -> "Zero"
+ 1 -> "One"
+ // Match any other value
+ _ -> "Other"
+ }
+ io.debug(result)
+}
diff --git a/lessons/src/lesson023_variable_patterns/text.html b/lessons/src/lesson023_variable_patterns/text.html
new file mode 100644
index 0000000..8154979
--- /dev/null
+++ b/lessons/src/lesson023_variable_patterns/text.html
@@ -0,0 +1,17 @@
+<p>
+ The case expression is the most common kind of flow control in Gleam code. It
+ is similar to `switch` in some other languages, but more powerful than most.
+</p>
+<p>
+ It allows the programmer to say "if the data has this shape then run this
+ code", a process called called <em>pattern matching</em>.
+</p>
+<p>
+ Gleam performs <em>exhaustiveness checking</em> to ensure that the patterns in
+ a case expression cover all possible values. With this you can have confidence
+ that your logic is up-to-date for the design of the data you are working with.
+</p>
+<p>
+ Try commenting out patterns or adding new redundant ones, and see what
+ problems the compiler reports.
+</p>