Download the PHP package andres-ml/fpl without Composer
On this page you can find all versions of the php package andres-ml/fpl. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download andres-ml/fpl
More information about andres-ml/fpl
Files in andres-ml/fpl
Package fpl
Short Description Functional PHP library
License MIT
Informations about the package fpl
Functional PHP Library
This library provides a series of curried, data-last functions commonly used within the functional programming paradigm.
The new PHP 8.5 pipe operator and the recent variadic placeholder make this library less necessary, but you still may find it useful if you dislike the boilerplate and the lack of partial application.
API
Full api documentation can be found in docs/api.md
Installation
Non-curried functions
If you want, you can use the original function definitions instead. Note that these are not curried and don't have their corresponding const versions.
Arrays and iterators
List-related functions return an array when they receive an array parameter, but they return iterators when receiving iterators (and can thus behave lazily). You can force laziness over an initial array by previously using toIterator or finish off with an array by ending with toArray:
Code generation
Functions are defined on src/api/*.php. They are split among different files but share the Aml\Fpl\functions namespace. All functions defined on those files not beginning with an underscore _ will be parsed and added to build/api.php as calls to their curried versions.
Code can be generated by running make code, which uses src/build.php.
Documentation is also automatically generated through make docs, which uses src/make-docs.php.
Testing
Testing is done through phpunit: ./vendor/bin/phpunit tests or make test
Note on performance
Automatic currying and automatic array/iter support have a performance overhead. Be wary of using them in a time-critical loop; a native array_map will always be faster than other implementations of map.