yuyat/piper

Helps functional programming in OO style.

v0.0.1 2014-10-09 16:57 UTC

This package is auto-updated.

Last update: 2024-03-25 20:22:16 UTC


README

Helps functional programming in OO style.

It is recommended to combine this library with other functional libraries like iter.

Usage

Basic Piper

<?php
use yuyat\Piper;

use function iter\fn\operator;
use function iter\range;

$result = Piper::from(range(1, 10))
    ->pipe('iter\map', [operator('*', 2)])
    ->pipe(function ($iter) { return reduce(operator('+'), $iter, 0); })
    ->get();

echo $result, PHP_EOL;
// => 110

Your custom Piper

<?php
use yuyat\Piper;

use function iter\fn\operator;
use function iter\range;
use function iter\map;
use function iter\reduce;

class IterPiper extends Piper
{
    public function map($fn)
    {
        return new static(map($fn, $this->get()));
    }

    public function reduce($fn, $initial = null)
    {
        return new static(reduce($fn, $this->get(), $initial));
    }
}

$result = IterPiper::from(range(1, 10))
    ->map(operator('*', 2))
    ->reduce(operator('+'), 0)
    ->get();

echo $result, PHP_EOL;
// => 110

Author

Yuya Takeyama