]> Nishi Git Mirror - gwion.git/commitdiff
Added pipe documentation (#15)
authorjan Jenwa <24357776+jenra-uwu@users.noreply.github.com>
Mon, 16 Jan 2023 18:24:09 +0000 (13:24 -0500)
committerGitHub <noreply@github.com>
Mon, 16 Jan 2023 18:24:09 +0000 (19:24 +0100)
* Added Pipes.mdr to document pipes

* Documented multiple underscores in pipes

docs/Reference/Functions/Pipes.mdr [new file with mode: 0644]
docs/Reference/Functions/list

diff --git a/docs/Reference/Functions/Pipes.mdr b/docs/Reference/Functions/Pipes.mdr
new file mode 100644 (file)
index 0000000..9a709e7
--- /dev/null
@@ -0,0 +1,65 @@
+# Pipes
+## Motivation
+Sometimes when writing code, you have a situation such as this:
+```gwion,editable
+fun int incr(int i) {
+  return i + 1;
+}
+
+<<< incr(incr(incr(incr(1)))) >>>;
+```
+
+This code looks rather unappealing due to the nested functions. Instead, you can use pipes!
+
+## Usage
+
+Instead of nesting functions over and over again, you can pipe the functions in a nice line.
+
+```gwion,editable
+fun int incr(int i) {
+  return i + 1;
+}
+
+<<< 1 => incr => incr => incr => incr >>>;
+```
+
+As you can see, the `1` is piped into the `incr` function, and the result of that is piped into the `incr` function, and so on.
+
+### Multiple arguments
+
+Piping works a little differently if your function has multiple arguments. If a function has multiple arguments, there are two ways to pipe.
+
+First off, you can pipe all arguments directly.
+
+```gwion,editable
+fun int add(int i, int j) {
+  return i + j;
+}
+
+<<< (1, 2) => add >>>;
+```
+
+Second off, you can pipe arguments one at a time.
+
+```gwion,editable
+fun int add(int i, int j) {
+  return i + j;
+}
+
+<<< 1 => add(_, 2) >>>;
+<<< 2 => add(1, _) >>>;
+```
+
+The underscore determines where the piped argument goes. In the first line, `1` goes into the first argument, whereas in the second line, `2` goes into the second argument.
+
+You can also have multiple underscores.
+
+```gwion,editable
+fun int add3(int i, int j, int k) {
+  return i + j + k;
+}
+
+<<< (1, 3) => add3(_, 2, _) >>>;
+```
+
+The arguments go into their respective underscores. In this case, `1` goes into the first argument and `3` goes into the third.
\ No newline at end of file
index b2dd05b1c659c55938ed87d7e56250cc96c03d70..8e9abdedb6ce50734ebb30a3330120058b3ddae1 100644 (file)
@@ -2,3 +2,4 @@ README.md
 function.md
 Lambdas.md
 Variadic.md
+Pipes.md