aboutsummaryrefslogtreecommitdiff
path: root/src/content/chapter1_functions/lesson07_pipelines
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2024-01-18 16:44:27 +0000
committerLouis Pilfold <louis@lpil.uk>2024-01-18 16:44:27 +0000
commitf92661980deac22b54e79cd44c25caba17910c95 (patch)
tree165923d00aab8e7a5d5944d388dbb182c6d57b51 /src/content/chapter1_functions/lesson07_pipelines
parente35f26eb4a034aad8a531986bf876075ffb02e3c (diff)
downloadtour-f92661980deac22b54e79cd44c25caba17910c95.tar.gz
tour-f92661980deac22b54e79cd44c25caba17910c95.zip
Last of the content!
Diffstat (limited to 'src/content/chapter1_functions/lesson07_pipelines')
-rw-r--r--src/content/chapter1_functions/lesson07_pipelines/code.gleam19
-rw-r--r--src/content/chapter1_functions/lesson07_pipelines/text.html25
2 files changed, 44 insertions, 0 deletions
diff --git a/src/content/chapter1_functions/lesson07_pipelines/code.gleam b/src/content/chapter1_functions/lesson07_pipelines/code.gleam
new file mode 100644
index 0000000..ec9b805
--- /dev/null
+++ b/src/content/chapter1_functions/lesson07_pipelines/code.gleam
@@ -0,0 +1,19 @@
+import gleam/io
+import gleam/string
+
+pub fn main() {
+ // Without the pipe operator
+ io.debug(string.drop_left(string.drop_right("Hello, Joe!", 1), 7))
+
+ // With the pipe operator
+ "Hello, Mike!"
+ |> string.drop_right(1)
+ |> string.drop_left(7)
+ |> io.debug
+
+ // Changing order with function capturing
+ "1"
+ |> string.append("2")
+ |> string.append("3", _)
+ |> io.debug
+}
diff --git a/src/content/chapter1_functions/lesson07_pipelines/text.html b/src/content/chapter1_functions/lesson07_pipelines/text.html
new file mode 100644
index 0000000..783ade9
--- /dev/null
+++ b/src/content/chapter1_functions/lesson07_pipelines/text.html
@@ -0,0 +1,25 @@
+<p>
+ It's common to want to call a series of functions, passing the result of one
+ to the next. With the regular function call syntax this can be a little
+ difficult to read as you have to read the code from the inside out.
+</p>
+<p>
+ Gleam's pipe operator <code>|></code> helps with this problem by allowing you
+ to write code top-to-bottom.
+</p>
+<p>
+ The pipe operator takes the result of the expression on its left and passes it
+ as an argument to the function on its right.
+</p>
+<p>
+ It will first check to see if the left-hand value could be used as the first
+ argument to the call. For example, <code>a |> b(1, 2)</code> would become
+ <code>b(a, 1, 2)</code>. If not, it falls back to calling the result of the
+ right-hand side as a function, e.g., <code>b(1, 2)(a)</code>
+</p>
+<p>
+ Gleam code is typically written with the "subject" of the function as the
+ first argument, to make it easier to pipe. If you wish to pipe to a different
+ position then a function capture can be used to insert the argument to the
+ desired position.
+</p>