Fast pipe, pipe first as a syntax transform
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ppx
test
.gitignore
.travis.yml
README.md
dune
dune-project
esy.lock.json
package.json
ppx_pipe_first.opam

README.md

Pipe First ppx Build Status

Pipe first as a syntax transform. Transforms expressions containing the |. (Ocaml) or -> (Reason) operator. Pipes the left side as first argument of the right side.

Reason

/* validateAge(getAge(parseData(person))) */
person
->parseData
->getAge
->validateAge;

/* Some(preprocess(name)); */
name->preprocess->Some;

/* f(a, ~b, ~c) */
a->f(~b, ~c)

Ocaml

(* validateAge (getAge (parseData person)) *)
person
|. parseData
|. getAge
|. validateAge

(* Some(preprocess name) *)
name |. preprocess |. Some;

(*f a ~b ~c *)
a |. f ~b ~c

Usage with Dune

dune file

(executable
  (name hello_world)
  (preprocess  (pps ppx_pipe_first))

Reason: implementation of the hello_world.re file

let () =
  1000
  ->string_of_int
  ->print_endline;

Ocaml: implementation of the hello_world.ml file

let () =
  1000
  |. string_of_int
  |. print_endline

Developing:

npm install -g esy
git clone <this-repo>
esy install
esy build

Running Tests:

esy test