2017 © Pedro Peláez
 

library compose

Function composition.

image

igorw/compose

Function composition.

  • Monday, February 10, 2014
  • by igorw
  • Repository
  • 5 Watchers
  • 79 Stars
  • 12,563 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 5 Forks
  • 1 Open issues
  • 4 Versions
  • 4 % Grown

The README.md

igorw/compose

Function composition., (*1)

Allows you to stitch functions together to form a pipeline. This can be useful if you have to transform data in many steps and you want to describe those steps on a high level., (*2)

compose

Generally, function composition means taking two functions f and g, and producing a new function z, which applies f to the result of g., (*3)

z = compose(f, g)
; z(x) => f(g(x))

This library provides a compose function that does just this., (*4)

$z = igorw\compose($f, $g);
var_dump($z($x));

It supports an arbitrary number of functions to be composed via varargs., (*5)

$z = igorw\compose($f, $g, $h, $i);

The innermost function (the last one in the list) can take an arbitrary number of arguments, whereas the others may only take a single argument., (*6)

$z = igorw\compose($f, $g);
$z('a', 'b', 'c');
// => $f($g('a', 'b', 'c'))

pipeline

pipeline is the same as compose, but the arguments are reversed. This is more easy to read in some cases, because you can list the functions in the order they will be called., (*7)

It is quite similar to a unix pipe in that regard., (*8)

Examples

function transform_data($data) {
    return [
        'name' => $data['firstname'].' '.$data['lastname'],
    ];
}

$transformJson = igorw\pipeline(
    function ($json) { return json_decode($json, true); },
    'transform_data',
    'json_encode'
);

$json = <<<EOF
{"firstname": "Igor", "lastname": "Wiedler"}
{"firstname": "Beau", "lastname": "Simensen"}
EOF;

$list = explode("\n", $json);
$newList = array_map($transformJson, $list);
$newJson = implode("\n", $newList);

// =>
// {"name": "Igor Wiedler"}
// {"name": "Beau Simensen"}

The Versions

10/02 2014

dev-retain-type-hints

dev-retain-type-hints

Function composition.

  Sources   Download

MIT

functional composition

20/04 2013

dev-master

9999999-dev

Function composition.

  Sources   Download

MIT

functional composition

20/04 2013

v1.0.1

1.0.1.0

Function composition.

  Sources   Download

MIT

functional composition

18/04 2013

v1.0.0

1.0.0.0

Function composition.

  Sources   Download

MIT

functional composition