aboutsummaryrefslogtreecommitdiff
path: root/src/content/chapter0_basics/lesson15_blocks
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2024-03-26 11:36:11 +0000
committerLouis Pilfold <louis@lpil.uk>2024-03-26 11:36:11 +0000
commit04ec0d86c8b43d1cca48adc937b3e596a10577a1 (patch)
tree8624097a135e0e879588279eed82c4c2f82bfbab /src/content/chapter0_basics/lesson15_blocks
parent9250d4324073874d393282c941f9981ce2686680 (diff)
downloadtour-04ec0d86c8b43d1cca48adc937b3e596a10577a1.tar.gz
tour-04ec0d86c8b43d1cca48adc937b3e596a10577a1.zip
Improve introduction of modules and imports
Thanks @RyanBrewer317!
Diffstat (limited to 'src/content/chapter0_basics/lesson15_blocks')
-rw-r--r--src/content/chapter0_basics/lesson15_blocks/code.gleam13
-rw-r--r--src/content/chapter0_basics/lesson15_blocks/en.html23
2 files changed, 36 insertions, 0 deletions
diff --git a/src/content/chapter0_basics/lesson15_blocks/code.gleam b/src/content/chapter0_basics/lesson15_blocks/code.gleam
new file mode 100644
index 0000000..31e4729
--- /dev/null
+++ b/src/content/chapter0_basics/lesson15_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/lesson15_blocks/en.html b/src/content/chapter0_basics/lesson15_blocks/en.html
new file mode 100644
index 0000000..bc82e39
--- /dev/null
+++ b/src/content/chapter0_basics/lesson15_blocks/en.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>