From a69f26d5271ff42ed1a8938644efcdc1d2306890 Mon Sep 17 00:00:00 2001 From: xxKeefer Date: Thu, 25 Apr 2024 23:40:09 +1000 Subject: refactor: address feedback from code review use correct terms, clean up code example, explain everything that need to be #56 --- .../lesson04_record_destructuring/code.gleam | 25 ---------------------- .../lesson04_record_destructuring/en.html | 12 ----------- .../lesson04_record_pattern_matching/code.gleam | 15 +++++++++++++ .../lesson04_record_pattern_matching/en.html | 12 +++++++++++ 4 files changed, 27 insertions(+), 37 deletions(-) delete mode 100644 src/content/chapter3_data_types/lesson04_record_destructuring/code.gleam delete mode 100644 src/content/chapter3_data_types/lesson04_record_destructuring/en.html create mode 100644 src/content/chapter3_data_types/lesson04_record_pattern_matching/code.gleam create mode 100644 src/content/chapter3_data_types/lesson04_record_pattern_matching/en.html diff --git a/src/content/chapter3_data_types/lesson04_record_destructuring/code.gleam b/src/content/chapter3_data_types/lesson04_record_destructuring/code.gleam deleted file mode 100644 index 2b99576..0000000 --- a/src/content/chapter3_data_types/lesson04_record_destructuring/code.gleam +++ /dev/null @@ -1,25 +0,0 @@ -import gleam/io - -pub type Fish { - Starfish(name: String, favourite_color: String) - // Jellyfish(name: String, jiggly: Bool) - // Swordfish(name: String) -} - -pub fn main() { - let lucy = Starfish("Lucy", "Pink") - let cassie = Starfish("Cassie", "Orange") - // let james = Jellyfish("James", True) - // let sammy = Swordfish("Sammy") - - let Starfish(lucy_name, lucy_colour) = lucy - let Starfish(cassie_name, ..) = cassie - // let Jellyfish(_, is_jiggly) = james - // let Swordfish(sammy_name) = sammy - - let names = [lucy_name, cassie_name] - - io.debug(names) - io.debug(lucy_colour) - // io.debug(is_jiggly) -} diff --git a/src/content/chapter3_data_types/lesson04_record_destructuring/en.html b/src/content/chapter3_data_types/lesson04_record_destructuring/en.html deleted file mode 100644 index 6774fc6..0000000 --- a/src/content/chapter3_data_types/lesson04_record_destructuring/en.html +++ /dev/null @@ -1,12 +0,0 @@ -

- Record destructuring is syntax that allows the extraction of multiple field values - from a record into distinct variables in a concise and efficient way. -

-

- To destructure a record without the use more rigorous pattern matching, - all variants of the record must have the same arity and each field must have the same type. -

-

- It is possible to use underscore _ or the spread syntax .. to - discard fields that are not required. -

diff --git a/src/content/chapter3_data_types/lesson04_record_pattern_matching/code.gleam b/src/content/chapter3_data_types/lesson04_record_pattern_matching/code.gleam new file mode 100644 index 0000000..1c58b0d --- /dev/null +++ b/src/content/chapter3_data_types/lesson04_record_pattern_matching/code.gleam @@ -0,0 +1,15 @@ +import gleam/io + +pub type Fish { + Starfish(name: String, favourite_color: String) + Jellyfish(name: String, jiggly: Bool) +} + +pub fn main() { + let lucy = Starfish("Lucy", "Pink") + + case lucy { + Starfish(_, favourite_color) -> io.debug(favourite_color) + Jellyfish(name, ..) -> io.debug(name) + } +} diff --git a/src/content/chapter3_data_types/lesson04_record_pattern_matching/en.html b/src/content/chapter3_data_types/lesson04_record_pattern_matching/en.html new file mode 100644 index 0000000..2c0c2fa --- /dev/null +++ b/src/content/chapter3_data_types/lesson04_record_pattern_matching/en.html @@ -0,0 +1,12 @@ +

+ It is possible to pattern match on a record, this allows for the extraction + of multiple field values from a record into distinct variables in a concise and efficient way. +

+

+ the let key word can only match on single variant custom types. For types with more variants + a case statement must be used. +

+

+ It is possible to use underscore _ or the spread syntax .. to + discard fields that are not required. +

-- cgit v1.2.3