aboutsummaryrefslogtreecommitdiff
path: root/src/content/chapter0_basics/lesson16_blocks/en.html
blob: b19c586d6ac42d344b5198e2990c44a8e9a2ec3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<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 
  <a href="https://hexdocs.pm/gleam_stdlib/gleam/io.html#debug" target="_blank">
    <code>io.debug(degrees)</code>
  </a> 
  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>