diff --git a/manual/src/ch04-05-scopes.md b/manual/src/ch04-05-scopes.md
index ed4521956fdc3fbd525fca63b0d03f8e2a598cfb..43e311583b6dda79ec34327f9c795775bb5f8a82 100644
--- a/manual/src/ch04-05-scopes.md
+++ b/manual/src/ch04-05-scopes.md
@@ -23,6 +23,27 @@ if test 1 == 1
   # end of scope, y is deleted since it's owned by it
 end
 
-echo "$x" # prints 2
-echo "$y" # prints nothing, y is deleted already
+echo $x # prints 2
+echo $y # prints nothing, y is deleted already
+```
+
+## Functions
+
+Functions have the scope they were defined in.
+This ensures they don't use any unintended local variables that only work in some cases.
+Once again, this matches the behavior of most other languages, apart from perhaps LOLCODE.
+
+```ion
+let x = 5 # defines x
+
+fn print_vars
+  echo $x # prints 2 because it was updated before the function was called
+  echo $y # prints nothing, y is owned by another scope
+end
+
+if test 1 == 1
+  let x = 2 # updates existing x
+  let y = 3 # defines y
+  print_vars
+end
 ```