Exemplo n.º 1
0
 public static function range($low = null, $high = null)
 {
     if ($low === null) {
         $low = 1;
     }
     if ($low == $high) {
         return Stream::make($low);
     }
     return new Stream($low, function () use($low, $high) {
         return Stream::range($low + 1, $high);
     });
 }
Exemplo n.º 2
0
 public function test_scale_multiplies_stream_by_constant()
 {
     $capture = function ($x) use(&$vals) {
         $vals[] = $x;
     };
     $s = Stream::range(1, 3);
     $m = $s->scale(10);
     $vals = array();
     $m->walk($capture);
     $this->assertEquals(array(10, 20, 30), $vals);
     $vals = array();
     $s->add($m)->walk($capture);
     $this->assertEquals(array(11, 22, 33), $vals);
 }
Exemplo n.º 3
0
 /**
  * an absolutely necessary unit test
  */
 function test_eratosthenes_sieve()
 {
     $capture = function ($x) use(&$vals) {
         $vals[] = $x;
     };
     function sieve($s)
     {
         $h = $s->head();
         return new Stream($h, function () use($h, $s) {
             return sieve($s->tail()->filter(function ($x) use($h) {
                 return $x % $h != 0;
             }));
         });
     }
     $vals = array();
     sieve(Stream::range(2))->take(10)->walk($capture);
     $this->assertEquals(array(2, 3, 5, 7, 11, 13, 17, 19, 23, 29), $vals);
 }