February 2018
Intermediate to advanced
350 pages
7h 35m
English
A pipe function takes a T value and invokes a (T) -> R function with it:
import arrow.syntax.function.pipefun main(args: Array<String>) { val strong: (String) -> String = { body -> "<strong>$body</strong>" } "From a pipe".pipe(strong).pipe(::println)}
A pipe is similar to function composition, but instead of generating new functions, we can chain function invocations to produce new values, reducing nesting calls. Pipes are known in other languages, such as Elm and Ocaml, as the operator |>:
fun main(args: Array<String>) { splitter(filterBills(calculatePrice(Quote(20.0, "Foo", "Shoes", 1)))) //Nested Quote(20.0, "Foo", "Shoes", 1) pipe ::calculatePrice pipe ::filterBills pipe ::splitter //Pipe}
Both lines are equivalent, but the first ...
Read now
Unlock full access