Пример #1
0
 /**
  * turns a list of generators into a generator of a list
  *
  * @param Generator[]|\Iterator $ms
  * @return Generator
  */
 private static function sequence($ms)
 {
     return FP::reduce(function (Generator $acc, Generator $elem) {
         return $acc->bindGen(function ($xs) use($elem) {
             return $elem->bindGen(function ($y) use($xs) {
                 return self::pureGen(FP::push($xs, $y));
             });
         });
     }, $ms, self::pureGen([]));
 }