aboutsummaryrefslogtreecommitdiff
path: root/src
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
parent9250d4324073874d393282c941f9981ce2686680 (diff)
downloadtour-04ec0d86c8b43d1cca48adc937b3e596a10577a1.tar.gz
tour-04ec0d86c8b43d1cca48adc937b3e596a10577a1.zip
Improve introduction of modules and imports
Thanks @RyanBrewer317!
Diffstat (limited to 'src')
-rw-r--r--src/content/chapter0_basics/lesson01_hello_world/code.gleam2
-rw-r--r--src/content/chapter0_basics/lesson01_hello_world/en.html14
-rw-r--r--src/content/chapter0_basics/lesson02_modules/code.gleam10
-rw-r--r--src/content/chapter0_basics/lesson02_modules/en.html26
-rw-r--r--src/content/chapter0_basics/lesson02_unqualified_imports/en.html15
-rw-r--r--src/content/chapter0_basics/lesson03_unqualified_imports/code.gleam (renamed from src/content/chapter0_basics/lesson02_unqualified_imports/code.gleam)0
-rw-r--r--src/content/chapter0_basics/lesson03_unqualified_imports/en.html15
-rw-r--r--src/content/chapter0_basics/lesson04_type_checking/code.gleam (renamed from src/content/chapter0_basics/lesson03_type_checking/code.gleam)0
-rw-r--r--src/content/chapter0_basics/lesson04_type_checking/en.html (renamed from src/content/chapter0_basics/lesson03_type_checking/en.html)0
-rw-r--r--src/content/chapter0_basics/lesson05_ints/code.gleam (renamed from src/content/chapter0_basics/lesson04_ints/code.gleam)0
-rw-r--r--src/content/chapter0_basics/lesson05_ints/en.html (renamed from src/content/chapter0_basics/lesson04_ints/en.html)0
-rw-r--r--src/content/chapter0_basics/lesson06_floats/code.gleam (renamed from src/content/chapter0_basics/lesson05_floats/code.gleam)0
-rw-r--r--src/content/chapter0_basics/lesson06_floats/en.html (renamed from src/content/chapter0_basics/lesson05_floats/en.html)0
-rw-r--r--src/content/chapter0_basics/lesson07_number_formats/code.gleam (renamed from src/content/chapter0_basics/lesson06_number_formats/code.gleam)0
-rw-r--r--src/content/chapter0_basics/lesson07_number_formats/en.html (renamed from src/content/chapter0_basics/lesson06_number_formats/en.html)0
-rw-r--r--src/content/chapter0_basics/lesson08_equality/code.gleam (renamed from src/content/chapter0_basics/lesson07_equality/code.gleam)0
-rw-r--r--src/content/chapter0_basics/lesson08_equality/en.html (renamed from src/content/chapter0_basics/lesson07_equality/en.html)0
-rw-r--r--src/content/chapter0_basics/lesson09_strings/code.gleam (renamed from src/content/chapter0_basics/lesson08_strings/code.gleam)0
-rw-r--r--src/content/chapter0_basics/lesson09_strings/en.html (renamed from src/content/chapter0_basics/lesson08_strings/en.html)0
-rw-r--r--src/content/chapter0_basics/lesson10_bools/code.gleam (renamed from src/content/chapter0_basics/lesson09_bools/code.gleam)0
-rw-r--r--src/content/chapter0_basics/lesson10_bools/en.html (renamed from src/content/chapter0_basics/lesson09_bools/en.html)0
-rw-r--r--src/content/chapter0_basics/lesson11_assignments/code.gleam (renamed from src/content/chapter0_basics/lesson10_assignments/code.gleam)0
-rw-r--r--src/content/chapter0_basics/lesson11_assignments/en.html (renamed from src/content/chapter0_basics/lesson10_assignments/en.html)0
-rw-r--r--src/content/chapter0_basics/lesson12_discard_patterns/code.gleam (renamed from src/content/chapter0_basics/lesson11_discard_patterns/code.gleam)0
-rw-r--r--src/content/chapter0_basics/lesson12_discard_patterns/en.html (renamed from src/content/chapter0_basics/lesson11_discard_patterns/en.html)0
-rw-r--r--src/content/chapter0_basics/lesson13_type_annotations/code.gleam (renamed from src/content/chapter0_basics/lesson12_type_annotations/code.gleam)0
-rw-r--r--src/content/chapter0_basics/lesson13_type_annotations/en.html (renamed from src/content/chapter0_basics/lesson12_type_annotations/en.html)0
-rw-r--r--src/content/chapter0_basics/lesson14_type_aliases/code.gleam (renamed from src/content/chapter0_basics/lesson13_type_aliases/code.gleam)0
-rw-r--r--src/content/chapter0_basics/lesson14_type_aliases/en.html (renamed from src/content/chapter0_basics/lesson13_type_aliases/en.html)0
-rw-r--r--src/content/chapter0_basics/lesson15_blocks/code.gleam (renamed from src/content/chapter0_basics/lesson14_blocks/code.gleam)0
-rw-r--r--src/content/chapter0_basics/lesson15_blocks/en.html (renamed from src/content/chapter0_basics/lesson14_blocks/en.html)0
-rw-r--r--src/content/chapter0_basics/lesson16_lists/code.gleam (renamed from src/content/chapter0_basics/lesson15_lists/code.gleam)0
-rw-r--r--src/content/chapter0_basics/lesson16_lists/en.html (renamed from src/content/chapter0_basics/lesson15_lists/en.html)0
-rw-r--r--src/content/chapter0_basics/lesson17_constants/code.gleam (renamed from src/content/chapter0_basics/lesson16_constants/code.gleam)0
-rw-r--r--src/content/chapter0_basics/lesson17_constants/en.html (renamed from src/content/chapter0_basics/lesson16_constants/en.html)0
-rw-r--r--src/tour.gleam1
36 files changed, 56 insertions, 27 deletions
diff --git a/src/content/chapter0_basics/lesson01_hello_world/code.gleam b/src/content/chapter0_basics/lesson01_hello_world/code.gleam
index 67cc6b4..30530b2 100644
--- a/src/content/chapter0_basics/lesson01_hello_world/code.gleam
+++ b/src/content/chapter0_basics/lesson01_hello_world/code.gleam
@@ -1,7 +1,5 @@
-// Import a Gleam module from the standard library
import gleam/io
pub fn main() {
- // Print to the console
io.println("Hello, Joe!")
}
diff --git a/src/content/chapter0_basics/lesson01_hello_world/en.html b/src/content/chapter0_basics/lesson01_hello_world/en.html
index a7dfc25..b555160 100644
--- a/src/content/chapter0_basics/lesson01_hello_world/en.html
+++ b/src/content/chapter0_basics/lesson01_hello_world/en.html
@@ -1,16 +1,12 @@
-<p>Here is a program that prints out the text "Hello, Joe!".</p>
<p>
- It does this by using the <code>println</code> function which has been
- imported from the
- <a href="https://hexdocs.pm/gleam_stdlib/gleam/io.html"
- ><code>gleam/io</code></a
- >
- module, which is part of the Gleam standard library.
+ Here is a tiny program that prints out the text "Hello, Joe!". We'll explain
+ how it works shortly.
</p>
<p>
- In a normal Gleam program this program would be run using the command
+ In a normal Gleam project this program would be run using the command
<code>gleam run</code> on the command line, but here in this tour the program
- is automatically compiled and run as the code is edited.
+ is compiled and run inside your web browser, allowing you to try Gleam without
+ installing anything on your computer.
</p>
<p>
Try changing the text being printed to <code>Hello, Mike!</code> and see what
diff --git a/src/content/chapter0_basics/lesson02_modules/code.gleam b/src/content/chapter0_basics/lesson02_modules/code.gleam
new file mode 100644
index 0000000..e258c33
--- /dev/null
+++ b/src/content/chapter0_basics/lesson02_modules/code.gleam
@@ -0,0 +1,10 @@
+import gleam/io
+import gleam/string as text
+
+pub fn main() {
+ // Use a function from the `gleam/io` module
+ io.println("Hello, Mike!")
+
+ // Use a function from the `gleam/string` module
+ io.println(text.reverse("Hello, Joe!"))
+}
diff --git a/src/content/chapter0_basics/lesson02_modules/en.html b/src/content/chapter0_basics/lesson02_modules/en.html
new file mode 100644
index 0000000..ebfd8bc
--- /dev/null
+++ b/src/content/chapter0_basics/lesson02_modules/en.html
@@ -0,0 +1,26 @@
+<p>
+ Gleam code is organized into units called <em>modules</em>. A module is a
+ bunch of definitions (of types, functions, etc.) that seem to belong together.
+ For example, the
+ <a href="https://hexdocs.pm/gleam_stdlib/gleam/io.html">
+ <code>gleam/io</code>
+ </a>
+ module contains a variety of functions for printing, like
+ <code>println</code>.
+</p>
+<p>
+ All gleam code is in <i>some</i> module or other, whose name comes from the
+ name of the file it's in. For example, <code>gleam/io</code> is in a file
+ called <code>io.gleam</code> in a directory called <code>gleam</code>.
+</p>
+<p>
+ For code in one module to access code in another module, we import it using
+ the <code>import</code> keyword, and the name used to refer to it is the last
+ part of the module name. For example, to import the
+ <code>gleam/io</code> module is referred to as <code>io</code> once imported.
+</p>
+<p>
+ The <code>as</code> keyword can be used to refer to a module by a different
+ name. See how the <code>gleam/string</code> module is be referred to as
+ <code>text</code> here.
+</p>
diff --git a/src/content/chapter0_basics/lesson02_unqualified_imports/en.html b/src/content/chapter0_basics/lesson02_unqualified_imports/en.html
deleted file mode 100644
index 8fda45e..0000000
--- a/src/content/chapter0_basics/lesson02_unqualified_imports/en.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<p>
- Normally functions from other modules are used in a qualified fashion, with
- the module qualifier before function name. For example,
- <code>io.println("Hello!")</code>.
-</p>
-<p>
- It is also possible to specify a list of functions to import from a module in
- an unqualified fashion, such as the <code>println</code> function in the code
- editor. Because it has been imported like this it can be referred to as just
- <code>println</code>.
-</p>
-<p>
- Generally it is best to use qualified imports, as this makes it clear where
- the function is defined, making the code easier to read.
-</p>
diff --git a/src/content/chapter0_basics/lesson02_unqualified_imports/code.gleam b/src/content/chapter0_basics/lesson03_unqualified_imports/code.gleam
index 2708f25..2708f25 100644
--- a/src/content/chapter0_basics/lesson02_unqualified_imports/code.gleam
+++ b/src/content/chapter0_basics/lesson03_unqualified_imports/code.gleam
diff --git a/src/content/chapter0_basics/lesson03_unqualified_imports/en.html b/src/content/chapter0_basics/lesson03_unqualified_imports/en.html
new file mode 100644
index 0000000..ca83f2f
--- /dev/null
+++ b/src/content/chapter0_basics/lesson03_unqualified_imports/en.html
@@ -0,0 +1,15 @@
+<p>
+ Normally functions from other modules are used in a
+ <em>qualified</em> fashion, meaning the name used to refer the module goes
+ before function name with a dot between them. For example,
+ <code>io.println("Hello!")</code>.
+</p>
+<p>
+ It is also possible to specify a list of functions to import from a module in
+ an <em>unqualified</em> fashion, meaning the function name can be used without
+ the module <em>qualifier</em> (the name and the dot) before it.
+</p>
+<p>
+ Generally it is best to use qualified imports, as this makes it clear where
+ the function is defined, making the code easier to read.
+</p>
diff --git a/src/content/chapter0_basics/lesson03_type_checking/code.gleam b/src/content/chapter0_basics/lesson04_type_checking/code.gleam
index e068f31..e068f31 100644
--- a/src/content/chapter0_basics/lesson03_type_checking/code.gleam
+++ b/src/content/chapter0_basics/lesson04_type_checking/code.gleam
diff --git a/src/content/chapter0_basics/lesson03_type_checking/en.html b/src/content/chapter0_basics/lesson04_type_checking/en.html
index a9316c4..a9316c4 100644
--- a/src/content/chapter0_basics/lesson03_type_checking/en.html
+++ b/src/content/chapter0_basics/lesson04_type_checking/en.html
diff --git a/src/content/chapter0_basics/lesson04_ints/code.gleam b/src/content/chapter0_basics/lesson05_ints/code.gleam
index cb7991b..cb7991b 100644
--- a/src/content/chapter0_basics/lesson04_ints/code.gleam
+++ b/src/content/chapter0_basics/lesson05_ints/code.gleam
diff --git a/src/content/chapter0_basics/lesson04_ints/en.html b/src/content/chapter0_basics/lesson05_ints/en.html
index 252496a..252496a 100644
--- a/src/content/chapter0_basics/lesson04_ints/en.html
+++ b/src/content/chapter0_basics/lesson05_ints/en.html
diff --git a/src/content/chapter0_basics/lesson05_floats/code.gleam b/src/content/chapter0_basics/lesson06_floats/code.gleam
index 4241ab4..4241ab4 100644
--- a/src/content/chapter0_basics/lesson05_floats/code.gleam
+++ b/src/content/chapter0_basics/lesson06_floats/code.gleam
diff --git a/src/content/chapter0_basics/lesson05_floats/en.html b/src/content/chapter0_basics/lesson06_floats/en.html
index 7175628..7175628 100644
--- a/src/content/chapter0_basics/lesson05_floats/en.html
+++ b/src/content/chapter0_basics/lesson06_floats/en.html
diff --git a/src/content/chapter0_basics/lesson06_number_formats/code.gleam b/src/content/chapter0_basics/lesson07_number_formats/code.gleam
index 7307185..7307185 100644
--- a/src/content/chapter0_basics/lesson06_number_formats/code.gleam
+++ b/src/content/chapter0_basics/lesson07_number_formats/code.gleam
diff --git a/src/content/chapter0_basics/lesson06_number_formats/en.html b/src/content/chapter0_basics/lesson07_number_formats/en.html
index 308219a..308219a 100644
--- a/src/content/chapter0_basics/lesson06_number_formats/en.html
+++ b/src/content/chapter0_basics/lesson07_number_formats/en.html
diff --git a/src/content/chapter0_basics/lesson07_equality/code.gleam b/src/content/chapter0_basics/lesson08_equality/code.gleam
index 70a2b89..70a2b89 100644
--- a/src/content/chapter0_basics/lesson07_equality/code.gleam
+++ b/src/content/chapter0_basics/lesson08_equality/code.gleam
diff --git a/src/content/chapter0_basics/lesson07_equality/en.html b/src/content/chapter0_basics/lesson08_equality/en.html
index e8c2169..e8c2169 100644
--- a/src/content/chapter0_basics/lesson07_equality/en.html
+++ b/src/content/chapter0_basics/lesson08_equality/en.html
diff --git a/src/content/chapter0_basics/lesson08_strings/code.gleam b/src/content/chapter0_basics/lesson09_strings/code.gleam
index ea47e0f..ea47e0f 100644
--- a/src/content/chapter0_basics/lesson08_strings/code.gleam
+++ b/src/content/chapter0_basics/lesson09_strings/code.gleam
diff --git a/src/content/chapter0_basics/lesson08_strings/en.html b/src/content/chapter0_basics/lesson09_strings/en.html
index e5400ca..e5400ca 100644
--- a/src/content/chapter0_basics/lesson08_strings/en.html
+++ b/src/content/chapter0_basics/lesson09_strings/en.html
diff --git a/src/content/chapter0_basics/lesson09_bools/code.gleam b/src/content/chapter0_basics/lesson10_bools/code.gleam
index e5c1d98..e5c1d98 100644
--- a/src/content/chapter0_basics/lesson09_bools/code.gleam
+++ b/src/content/chapter0_basics/lesson10_bools/code.gleam
diff --git a/src/content/chapter0_basics/lesson09_bools/en.html b/src/content/chapter0_basics/lesson10_bools/en.html
index 36daf09..36daf09 100644
--- a/src/content/chapter0_basics/lesson09_bools/en.html
+++ b/src/content/chapter0_basics/lesson10_bools/en.html
diff --git a/src/content/chapter0_basics/lesson10_assignments/code.gleam b/src/content/chapter0_basics/lesson11_assignments/code.gleam
index a030e43..a030e43 100644
--- a/src/content/chapter0_basics/lesson10_assignments/code.gleam
+++ b/src/content/chapter0_basics/lesson11_assignments/code.gleam
diff --git a/src/content/chapter0_basics/lesson10_assignments/en.html b/src/content/chapter0_basics/lesson11_assignments/en.html
index d106fd9..d106fd9 100644
--- a/src/content/chapter0_basics/lesson10_assignments/en.html
+++ b/src/content/chapter0_basics/lesson11_assignments/en.html
diff --git a/src/content/chapter0_basics/lesson11_discard_patterns/code.gleam b/src/content/chapter0_basics/lesson12_discard_patterns/code.gleam
index fa2c0e3..fa2c0e3 100644
--- a/src/content/chapter0_basics/lesson11_discard_patterns/code.gleam
+++ b/src/content/chapter0_basics/lesson12_discard_patterns/code.gleam
diff --git a/src/content/chapter0_basics/lesson11_discard_patterns/en.html b/src/content/chapter0_basics/lesson12_discard_patterns/en.html
index 91cfb42..91cfb42 100644
--- a/src/content/chapter0_basics/lesson11_discard_patterns/en.html
+++ b/src/content/chapter0_basics/lesson12_discard_patterns/en.html
diff --git a/src/content/chapter0_basics/lesson12_type_annotations/code.gleam b/src/content/chapter0_basics/lesson13_type_annotations/code.gleam
index 1299c2f..1299c2f 100644
--- a/src/content/chapter0_basics/lesson12_type_annotations/code.gleam
+++ b/src/content/chapter0_basics/lesson13_type_annotations/code.gleam
diff --git a/src/content/chapter0_basics/lesson12_type_annotations/en.html b/src/content/chapter0_basics/lesson13_type_annotations/en.html
index 8738a15..8738a15 100644
--- a/src/content/chapter0_basics/lesson12_type_annotations/en.html
+++ b/src/content/chapter0_basics/lesson13_type_annotations/en.html
diff --git a/src/content/chapter0_basics/lesson13_type_aliases/code.gleam b/src/content/chapter0_basics/lesson14_type_aliases/code.gleam
index 6125ffe..6125ffe 100644
--- a/src/content/chapter0_basics/lesson13_type_aliases/code.gleam
+++ b/src/content/chapter0_basics/lesson14_type_aliases/code.gleam
diff --git a/src/content/chapter0_basics/lesson13_type_aliases/en.html b/src/content/chapter0_basics/lesson14_type_aliases/en.html
index 9fddd70..9fddd70 100644
--- a/src/content/chapter0_basics/lesson13_type_aliases/en.html
+++ b/src/content/chapter0_basics/lesson14_type_aliases/en.html
diff --git a/src/content/chapter0_basics/lesson14_blocks/code.gleam b/src/content/chapter0_basics/lesson15_blocks/code.gleam
index 31e4729..31e4729 100644
--- a/src/content/chapter0_basics/lesson14_blocks/code.gleam
+++ b/src/content/chapter0_basics/lesson15_blocks/code.gleam
diff --git a/src/content/chapter0_basics/lesson14_blocks/en.html b/src/content/chapter0_basics/lesson15_blocks/en.html
index bc82e39..bc82e39 100644
--- a/src/content/chapter0_basics/lesson14_blocks/en.html
+++ b/src/content/chapter0_basics/lesson15_blocks/en.html
diff --git a/src/content/chapter0_basics/lesson15_lists/code.gleam b/src/content/chapter0_basics/lesson16_lists/code.gleam
index 646ad6e..646ad6e 100644
--- a/src/content/chapter0_basics/lesson15_lists/code.gleam
+++ b/src/content/chapter0_basics/lesson16_lists/code.gleam
diff --git a/src/content/chapter0_basics/lesson15_lists/en.html b/src/content/chapter0_basics/lesson16_lists/en.html
index c29758a..c29758a 100644
--- a/src/content/chapter0_basics/lesson15_lists/en.html
+++ b/src/content/chapter0_basics/lesson16_lists/en.html
diff --git a/src/content/chapter0_basics/lesson16_constants/code.gleam b/src/content/chapter0_basics/lesson17_constants/code.gleam
index aed6fb0..aed6fb0 100644
--- a/src/content/chapter0_basics/lesson16_constants/code.gleam
+++ b/src/content/chapter0_basics/lesson17_constants/code.gleam
diff --git a/src/content/chapter0_basics/lesson16_constants/en.html b/src/content/chapter0_basics/lesson17_constants/en.html
index f610dcd..f610dcd 100644
--- a/src/content/chapter0_basics/lesson16_constants/en.html
+++ b/src/content/chapter0_basics/lesson17_constants/en.html
diff --git a/src/tour.gleam b/src/tour.gleam
index e755b67..7b7272b 100644
--- a/src/tour.gleam
+++ b/src/tour.gleam
@@ -764,7 +764,6 @@ fn everything_page_html(chapters: List(Chapter)) -> Html {
/// Renders the /everything page to a string
pub fn everything_page_render(chapters: List(Chapter)) -> String {
- // TODO: use proper values for location and such
render_page(PageConfig(
path: path_everything,
title: "Everything!",