* Add documentation to modules, and some constants and types Signed-off-by: Nick Cameron <nrc@ncameron.org> * Improve the language reference Signed-off-by: Nick Cameron <nrc@ncameron.org> --------- Signed-off-by: Nick Cameron <nrc@ncameron.org>
		
			
				
	
	
	
		
			1.5 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	title, excerpt, layout
| title | excerpt | layout | 
|---|---|---|
| Pipelines | Documentation of the KCL language for the Zoo Design Studio. | manual | 
It can be hard to read repeated function calls, because of all the nested brackets.
i = 1
x = h(g(f(i)))
You can make this easier to read by breaking it into many declarations, but that is a bit annoying.
i  = 1
x0 = f(i)
x1 = g(x0)
x  = h(x1)
Instead, you can use the pipeline operator (|>) to simplify this.
Basically, x |> f(%) is a shorthand for f(x). The left-hand side of the |> gets put into
the % in the right-hand side.
So, this means x |> f(%) |> g(%) is shorthand for g(f(x)). The code example above, with its
somewhat-clunky x0 and x1 constants could be rewritten as
i = 1
x = i
  |> f(%)
  |> g(%)
  |> h(%)
This helps keep your code neat and avoid unnecessary declarations.
Pipelines and keyword arguments
Say you have a long pipeline of sketch functions, like this:
startSketchOn(XZ)
  |> line(%, end = [3, 4])
  |> line(%, end = [10, 10])
  |> line(%, end = [-13, -14])
  |> close(%)
In this example, each function call outputs a sketch, and it gets put into the next function call via
the %, into the first (unlabeled) argument.
If a function call uses an unlabeled first parameter, it will default to % if it's not given. This
means that |> line(%, end = [3, 4]) and |> line(end = [3, 4]) are equivalent! So the above
could be rewritten as
startSketchOn(XZ)
 |> line(end = [3, 4])
 |> line(end = [10, 10])
 |> line(end = [-13, -14])
 |> close()