diff options
author | Louis Pilfold <louis@lpil.uk> | 2023-12-21 14:03:41 +0000 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2023-12-21 14:03:41 +0000 |
commit | 4efb34bd728732101432843ed0bfbeb971272287 (patch) | |
tree | 71b3b767c417809d92280cec64424c31c9a475be /src/content/chapter0_basics/lesson12_blocks | |
parent | 2a6ae1fa5408247c95bf4a7d59e5038342a2a125 (diff) | |
download | tour-4efb34bd728732101432843ed0bfbeb971272287.tar.gz tour-4efb34bd728732101432843ed0bfbeb971272287.zip |
Add chapters
Diffstat (limited to 'src/content/chapter0_basics/lesson12_blocks')
-rw-r--r-- | src/content/chapter0_basics/lesson12_blocks/code.gleam | 13 | ||||
-rw-r--r-- | src/content/chapter0_basics/lesson12_blocks/text.html | 23 |
2 files changed, 36 insertions, 0 deletions
diff --git a/src/content/chapter0_basics/lesson12_blocks/code.gleam b/src/content/chapter0_basics/lesson12_blocks/code.gleam new file mode 100644 index 0000000..31e4729 --- /dev/null +++ b/src/content/chapter0_basics/lesson12_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/lesson12_blocks/text.html b/src/content/chapter0_basics/lesson12_blocks/text.html new file mode 100644 index 0000000..bc82e39 --- /dev/null +++ b/src/content/chapter0_basics/lesson12_blocks/text.html @@ -0,0 +1,23 @@ +<p> + 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. +</p> +<p> + Any variables assigned within the block can only be used within the block. +</p> +<p> + Try uncommenting <code>io.debug(degrees)</code> to see the compile error from + trying to use a variable that is not in scope. +</p> +<p> + Blocks can also be used to change the order of evaluation of binary operators + expressions. +</p> +<p> + <code>*</code> binds more tightly than <code>+</code> so the expression + <code>1 + 2 * 3</code> evaluates to 7. If the <code>1 + 2</code> should be + evaluated first to make the expression evaluate to 9 then the expression can be + wrapped in a block: <code>{ 1 + 2 } * 3</code>. This is similar to grouping + with parentheses in some other languages. +</p> |