diff options
author | Louis Pilfold <louis@lpil.uk> | 2024-03-26 11:36:11 +0000 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2024-03-26 11:36:11 +0000 |
commit | 04ec0d86c8b43d1cca48adc937b3e596a10577a1 (patch) | |
tree | 8624097a135e0e879588279eed82c4c2f82bfbab /src | |
parent | 9250d4324073874d393282c941f9981ce2686680 (diff) | |
download | tour-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.gleam | 2 | ||||
-rw-r--r-- | src/content/chapter0_basics/lesson01_hello_world/en.html | 14 | ||||
-rw-r--r-- | src/content/chapter0_basics/lesson02_modules/code.gleam | 10 | ||||
-rw-r--r-- | src/content/chapter0_basics/lesson02_modules/en.html | 26 | ||||
-rw-r--r-- | src/content/chapter0_basics/lesson02_unqualified_imports/en.html | 15 | ||||
-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.html | 15 | ||||
-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.gleam | 1 |
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!", |