From 09a8a96664fadbc2933024910b95526f7d66843f Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Thu, 4 Jan 2024 20:06:40 +0000 Subject: More content! --- .../chapter0_basics/lesson13_blocks/code.gleam | 13 ++++++++++++ .../chapter0_basics/lesson13_blocks/text.html | 23 ++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 src/content/chapter0_basics/lesson13_blocks/code.gleam create mode 100644 src/content/chapter0_basics/lesson13_blocks/text.html (limited to 'src/content/chapter0_basics/lesson13_blocks') diff --git a/src/content/chapter0_basics/lesson13_blocks/code.gleam b/src/content/chapter0_basics/lesson13_blocks/code.gleam new file mode 100644 index 0000000..31e4729 --- /dev/null +++ b/src/content/chapter0_basics/lesson13_blocks/code.gleam @@ -0,0 +1,13 @@ +import gleam/io + +pub fn main() { + let fahrenheit = { + let degrees = 64 + degrees + } + // io.debug(degrees) // <- This will not compile + + // Changing order of evaluation + let celsius = { fahrenheit - 32 } * 5 / 9 + io.debug(celsius) +} diff --git a/src/content/chapter0_basics/lesson13_blocks/text.html b/src/content/chapter0_basics/lesson13_blocks/text.html new file mode 100644 index 0000000..bc82e39 --- /dev/null +++ b/src/content/chapter0_basics/lesson13_blocks/text.html @@ -0,0 +1,23 @@ +

+ Blocks are one or more expressions grouped together with curly braces. Each + expression is evaluated in order and the value of the last expression is + returned. +

+

+ Any variables assigned within the block can only be used within the block. +

+

+ Try uncommenting io.debug(degrees) to see the compile error from + trying to use a variable that is not in scope. +

+

+ Blocks can also be used to change the order of evaluation of binary operators + expressions. +

+

+ * binds more tightly than + so the expression + 1 + 2 * 3 evaluates to 7. If the 1 + 2 should be + evaluated first to make the expression evaluate to 9 then the expression can be + wrapped in a block: { 1 + 2 } * 3. This is similar to grouping + with parentheses in some other languages. +

-- cgit v1.2.3