diff options
author | Louis Pilfold <louis@lpil.uk> | 2024-02-20 12:20:16 +0000 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2024-02-20 12:20:16 +0000 |
commit | 938f49fc7835501192ccc7db7c1ab3174f050b34 (patch) | |
tree | 3e515fa15b6812df9947df80b8c16afd20faa436 /src/content | |
parent | e7d45ec089262e8b6731ddf87e65a06f4de07841 (diff) | |
download | tour-938f49fc7835501192ccc7db7c1ab3174f050b34.tar.gz tour-938f49fc7835501192ccc7db7c1ab3174f050b34.zip |
Let assert
Diffstat (limited to 'src/content')
-rw-r--r-- | src/content/chapter5_advanced_features/lesson04_let_assert/code.gleam | 16 | ||||
-rw-r--r-- | src/content/chapter5_advanced_features/lesson04_let_assert/en.html | 15 | ||||
-rw-r--r-- | src/content/chapter5_advanced_features/lesson05_externals/code.gleam (renamed from src/content/chapter5_advanced_features/lesson04_externals/code.gleam) | 0 | ||||
-rw-r--r-- | src/content/chapter5_advanced_features/lesson05_externals/en.html (renamed from src/content/chapter5_advanced_features/lesson04_externals/en.html) | 0 | ||||
-rw-r--r-- | src/content/chapter5_advanced_features/lesson06_multi_target_externals/code.gleam (renamed from src/content/chapter5_advanced_features/lesson05_multi_target_externals/code.gleam) | 0 | ||||
-rw-r--r-- | src/content/chapter5_advanced_features/lesson06_multi_target_externals/en.html (renamed from src/content/chapter5_advanced_features/lesson05_multi_target_externals/en.html) | 0 | ||||
-rw-r--r-- | src/content/chapter5_advanced_features/lesson07_external_gleam_fallbacks/code.gleam (renamed from src/content/chapter5_advanced_features/lesson06_external_gleam_fallbacks/code.gleam) | 0 | ||||
-rw-r--r-- | src/content/chapter5_advanced_features/lesson07_external_gleam_fallbacks/en.html (renamed from src/content/chapter5_advanced_features/lesson06_external_gleam_fallbacks/en.html) | 0 |
8 files changed, 31 insertions, 0 deletions
diff --git a/src/content/chapter5_advanced_features/lesson04_let_assert/code.gleam b/src/content/chapter5_advanced_features/lesson04_let_assert/code.gleam new file mode 100644 index 0000000..2ba907a --- /dev/null +++ b/src/content/chapter5_advanced_features/lesson04_let_assert/code.gleam @@ -0,0 +1,16 @@ +import gleam/io + +pub fn main() { + let a = unsafely_get_first_element([123]) + io.debug(a) + + let b = unsafely_get_first_element([]) + io.debug(b) +} + +pub fn unsafely_get_first_element(items: List(a)) -> a { + // This will panic if the list is empty. + // A regular `let` would not permit this partial pattern + let assert [first, ..] = items + first +} diff --git a/src/content/chapter5_advanced_features/lesson04_let_assert/en.html b/src/content/chapter5_advanced_features/lesson04_let_assert/en.html new file mode 100644 index 0000000..29fd06c --- /dev/null +++ b/src/content/chapter5_advanced_features/lesson04_let_assert/en.html @@ -0,0 +1,15 @@ +<p> + <code>let assert</code> is the final way to intentionally crash your Gleam + program. It is similar to the <code>panic</code> keyword in that it crashes + when the program has reached a point that should never be reached. +</p> +<p> + <code>let assert</code> is similar to <code>let</code> in that it is a way to + assign values to variables, but it is different in that the pattern can be + <i>partial</i>. The pattern does not need to match every possible value of the + type being assigned. +</p> +<p> + Like <code>panic</code> this feature should be used sparingly, and likely not + at all in libraries. +</p> diff --git a/src/content/chapter5_advanced_features/lesson04_externals/code.gleam b/src/content/chapter5_advanced_features/lesson05_externals/code.gleam index 1101b82..1101b82 100644 --- a/src/content/chapter5_advanced_features/lesson04_externals/code.gleam +++ b/src/content/chapter5_advanced_features/lesson05_externals/code.gleam diff --git a/src/content/chapter5_advanced_features/lesson04_externals/en.html b/src/content/chapter5_advanced_features/lesson05_externals/en.html index 8815fa7..8815fa7 100644 --- a/src/content/chapter5_advanced_features/lesson04_externals/en.html +++ b/src/content/chapter5_advanced_features/lesson05_externals/en.html diff --git a/src/content/chapter5_advanced_features/lesson05_multi_target_externals/code.gleam b/src/content/chapter5_advanced_features/lesson06_multi_target_externals/code.gleam index b62a735..b62a735 100644 --- a/src/content/chapter5_advanced_features/lesson05_multi_target_externals/code.gleam +++ b/src/content/chapter5_advanced_features/lesson06_multi_target_externals/code.gleam diff --git a/src/content/chapter5_advanced_features/lesson05_multi_target_externals/en.html b/src/content/chapter5_advanced_features/lesson06_multi_target_externals/en.html index 6e02d36..6e02d36 100644 --- a/src/content/chapter5_advanced_features/lesson05_multi_target_externals/en.html +++ b/src/content/chapter5_advanced_features/lesson06_multi_target_externals/en.html diff --git a/src/content/chapter5_advanced_features/lesson06_external_gleam_fallbacks/code.gleam b/src/content/chapter5_advanced_features/lesson07_external_gleam_fallbacks/code.gleam index a97b8fc..a97b8fc 100644 --- a/src/content/chapter5_advanced_features/lesson06_external_gleam_fallbacks/code.gleam +++ b/src/content/chapter5_advanced_features/lesson07_external_gleam_fallbacks/code.gleam diff --git a/src/content/chapter5_advanced_features/lesson06_external_gleam_fallbacks/en.html b/src/content/chapter5_advanced_features/lesson07_external_gleam_fallbacks/en.html index 243c7ea..243c7ea 100644 --- a/src/content/chapter5_advanced_features/lesson06_external_gleam_fallbacks/en.html +++ b/src/content/chapter5_advanced_features/lesson07_external_gleam_fallbacks/en.html |