Skip to editor
Psalm
Docs
Playground
Plugins
Blog
Paid support
Share
Fix issues
Show original
PHP
Settings
<?php /** * @template A * @template TInit */ final class FoldOperation { /** * @param iterable<A> $iterator * @param TInit $init */ public function __construct( public iterable $iterator, public mixed $init, ) {} /** * @template TFold * * @param callable(TInit, A): TFold $callback * @return TFold|TInit */ public function __invoke(callable $callback): mixed { $acc = $this->init; foreach ($this->iterator as $value) { /** @psalm-suppress PossiblyInvalidArgument */ $acc = $callback($acc, $value); } return $acc; } } /** * @template TV * @template TInit * * @param TInit $init * @param iterable<TV> $collection * @return FoldOperation<TV, TInit> */ function fold(mixed $init, iterable $collection): FoldOperation { return new FoldOperation($collection, $init); } /** * @param callable(int): bool $predicate */ function everyViaFold(callable $predicate): bool { return fold(true, [1, 2, 3, 4, 5])(fn($cond, $num) => $cond && $predicate($num)); }
Issues
Types
idle
Saved Nov 17 2022 17:59 UTC
⌘/Ctrl+Enter
run
⌘/Ctrl+S
share
F8
/
⇧F8
next/prev issue