diff options
author | Louis Pilfold <louis@lpil.uk> | 2023-12-21 14:03:41 +0000 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2023-12-21 14:03:41 +0000 |
commit | 4efb34bd728732101432843ed0bfbeb971272287 (patch) | |
tree | 71b3b767c417809d92280cec64424c31c9a475be /src/content/chapter1_functions/lesson05_pipelines | |
parent | 2a6ae1fa5408247c95bf4a7d59e5038342a2a125 (diff) | |
download | tour-4efb34bd728732101432843ed0bfbeb971272287.tar.gz tour-4efb34bd728732101432843ed0bfbeb971272287.zip |
Add chapters
Diffstat (limited to 'src/content/chapter1_functions/lesson05_pipelines')
-rw-r--r-- | src/content/chapter1_functions/lesson05_pipelines/code.gleam | 19 | ||||
-rw-r--r-- | src/content/chapter1_functions/lesson05_pipelines/text.html | 25 |
2 files changed, 44 insertions, 0 deletions
diff --git a/src/content/chapter1_functions/lesson05_pipelines/code.gleam b/src/content/chapter1_functions/lesson05_pipelines/code.gleam new file mode 100644 index 0000000..ec9b805 --- /dev/null +++ b/src/content/chapter1_functions/lesson05_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/lesson05_pipelines/text.html b/src/content/chapter1_functions/lesson05_pipelines/text.html new file mode 100644 index 0000000..783ade9 --- /dev/null +++ b/src/content/chapter1_functions/lesson05_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> |