Use the other pipe operators

|> is the pipe you will reach for most, but pipescript offers several variants for common patterns. This page covers the ones you will use day to day; Operators has the complete table with the exact Python each one expands to.

Assignment pipe (|>>)

The assignment pipe writes the left-hand value into the variable named on the right, and then evaluates to that same value so the pipeline can continue:

>>> 2 |> $ + 2 |>> two_plus_two |> $ + 3 |>> two_plus_two_plus_three
7
>>> (two_plus_two, two_plus_two_plus_three)
(4, 7)

Varargs pipe (*|>)

The varargs pipe unpacks the iterable on its left before passing the values as positional arguments to the function on its right:

# Add two numbers
>>> (2, 3) *|> $ + $
5

A common use is expanding an undetermined pipeline inside a map[...]:

>>> consecutive_pairs = range(10) |> list |> ($v[::2], $v[1::2]) *|> zip
>>> consecutive_pairs |> map[$ *|> $ * $] |> list
[0, 6, 20, 42, 72]

There is a matching **|> that unpacks a dict as keyword arguments.

Function pipe (.>)

The function pipe composes two functions rather than applying them to a value. The left function runs first (this is the reverse of the mathematical convention, but it follows the flow of data):

>>> reverse = reversed .> list
>>> [1, 2, 3] |> reverse
[3, 2, 1]

Backward pipes

Every operator except |>> has a backward variant that flips which side is the value and which is the function. <| is the backward form of |> – a low-precedence apply:

>>> reversed .> list <| [1, 2, 3]
[3, 2, 1]

Precedence

All pipe operators are left-associative and share the precedence of | (bitwise or). Consequently, any pipeline stage that itself contains a bare | must be wrapped in parentheses. See Operators for the full list, including the optional (?>) and partial ($>) pipe families.