aboutsummaryrefslogtreecommitdiff
path: root/lessons/src/lesson016_function_captures
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2023-12-09 12:23:02 +0000
committerLouis Pilfold <louis@lpil.uk>2023-12-09 12:23:02 +0000
commitc093b83c9c5ad3ba92e9153569be6e27476403ea (patch)
tree2c51eb3320985e4a79889e14d5027f5d3c97f3ed /lessons/src/lesson016_function_captures
parent52a4e31a356e212ba537a241a3722848d9f0c93c (diff)
downloadtour-c093b83c9c5ad3ba92e9153569be6e27476403ea.tar.gz
tour-c093b83c9c5ad3ba92e9153569be6e27476403ea.zip
Functions
Diffstat (limited to 'lessons/src/lesson016_function_captures')
-rw-r--r--lessons/src/lesson016_function_captures/code.gleam14
-rw-r--r--lessons/src/lesson016_function_captures/text.html11
2 files changed, 25 insertions, 0 deletions
diff --git a/lessons/src/lesson016_function_captures/code.gleam b/lessons/src/lesson016_function_captures/code.gleam
new file mode 100644
index 0000000..35f3412
--- /dev/null
+++ b/lessons/src/lesson016_function_captures/code.gleam
@@ -0,0 +1,14 @@
+import gleam/io
+
+pub fn main() {
+ // These two statements are equivalent
+ let add_one_v1 = fn(x) { add(1, x) }
+ let add_one_v2 = add(1, _)
+
+ io.debug(add_one_v1(10))
+ io.debug(add_one_v2(10))
+}
+
+fn add(a: Int, b: Int) -> Int {
+ a + b
+}
diff --git a/lessons/src/lesson016_function_captures/text.html b/lessons/src/lesson016_function_captures/text.html
new file mode 100644
index 0000000..afa87a3
--- /dev/null
+++ b/lessons/src/lesson016_function_captures/text.html
@@ -0,0 +1,11 @@
+<p>
+ Gleam has a shorthand syntax for creating anonymous functions that take one
+ argument and immediately call another function with that argument: the
+ function capture syntax.
+</p>
+<p>
+ The anonymous function <code>fn(a) { some_function(..., a, ...) }</code> can
+ be written as <code>some_function(..., _, ...)</code>, with any number of
+ other arguments passed to the inner function. The underscore <code>_</code> is
+ a placeholder for the final argument.
+</p>