no22/sloth

simple lazy application iterator

dev-master 2013-05-04 07:36 UTC

This package is not auto-updated.

Last update: 2024-09-14 14:24:29 UTC


README

Sloth is a simple lazy application iterator for PHP 5.2 or later.

Setup

    require "Sloth/Autoload.php";

Create iterator object

    $iter = Sloth::iter($array_or_iterator);

or

    $iter = Sloth::iter($initialValue, $functionCallback);

Lazy map

    function foo($n)    
    {
        echo "foo called.\n";
        return $n * $n;
    }
    
    $iter = Sloth::iter(array(1,2,3,4,5))->map('foo');

    foreach ($iter as $e) {
        echo $e . "\n";
    }
    foo called.
    1
    foo called.
    4
    foo called.
    9
    foo called.
    16
    foo called.
    25

Infinite sequense

for PHP 5.2

    $even = Sloth::iter(0, Sloth::fn('$n + 2'));
    $evenLessThan10 = $even->takeWhile(Sloth::fn('$n < 10'));
    foreach ($evenLessThan10 as $e) {
        echo $e . "\n";
    }

for PHP 5.3

    $even = Sloth::iter(0, function($n){return $n + 2;});
    $evenLessThan10 = $even->takeWhile(function($n){return $n < 10;});
    foreach ($evenLessThan10 as $e) {
        echo $e . "\n";
    }

License

Sloth is dual Licensed MIT and GPLv3. You may choose the license that fits best for your project.