PHPackages                             grrr-amsterdam/garp-functional - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. grrr-amsterdam/garp-functional

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

grrr-amsterdam/garp-functional
==============================

Utility library embracing functional programming paradigms.

v6.3.0(1y ago)32116.1k↓40%4[1 PRs](https://github.com/grrr-amsterdam/garp-functional/pulls)5BSD-3-ClausePHPPHP &gt;=7.2.0CI passing

Since Jan 30Pushed 4mo ago2 watchersCompare

[ Source](https://github.com/grrr-amsterdam/garp-functional)[ Packagist](https://packagist.org/packages/grrr-amsterdam/garp-functional)[ RSS](/packages/grrr-amsterdam-garp-functional/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (3)Versions (61)Used By (5)

[![PHPUnit](https://github.com/grrr-amsterdam/garp-functional/actions/workflows/phpunit.yml/badge.svg)](https://github.com/grrr-amsterdam/garp-functional/actions/workflows/phpunit.yml) [![PHPCS](https://github.com/grrr-amsterdam/garp-functional/actions/workflows/phpcs.yml/badge.svg)](https://github.com/grrr-amsterdam/garp-functional/actions/workflows/phpcs.yml) [![PHPStan](https://github.com/grrr-amsterdam/garp-functional/actions/workflows/phpstan.yml/badge.svg)](https://github.com/grrr-amsterdam/garp-functional/actions/workflows/phpstan.yml)

Garp Functional
===============

[](#garp-functional)

Utility library embracing functional programming paradigms.

[Documentation](https://grrr-amsterdam.github.io/garp-functional/)

Developed with ❤️ by [GRRR](https://grrr.nl)
--------------------------------------------

[](#developed-with-️-by-grrr)

- GRRR is a [B Corp](https://grrr.nl/en/b-corp/)
- GRRR has a [tech blog](https://grrr.tech/)
- GRRR is [hiring](https://grrr.nl/en/jobs/)
- [@GRRRTech](https://twitter.com/grrrtech) tweets

Philosophy
----------

[](#philosophy)

`Garp\Functional` is a practical functional library that strives to embrace functional paradigms.

- Functions are pure, referentially transparent, without side-effects.
- Data immutability is favored over mutating existing properties of given parameters.
- In general, functions are curried. Almost all of the functions in the library can be called partially applied, to a point where this makes sense.
- Function parameters are ordered to promote currying. Data is usually the last thing to go in, making every function a fine candidate to pass to native `array_map`, `array_filter` and the like, without having to create a closure around the call.
- Higher-order functions are provided to fill the gaps. Functions like `compose`, `partial`, `partial_right` or `not` are legos for you to use in your own implementation.
- Nothing is type-hinted too strictly. I don't care if you pass a string or an array to `prop`, as long as it allows accessing members thru bracket syntax `[]`, I'll allow it. Nothing irks me more about PHP than not being able to toss a `Traversable`object into the native `array_map`.
- Typeclasses are added, broadening the applicability of the functions. Next to primitives, they will now work with your objects as well, so long as they implement the right interface.

Usage
-----

[](#usage)

Installation:

```
composer require grrr-amsterdam/garp-functional

```

That'll do, all functions are available to you.

[Read the docs for a complete reference](https://grrr-amsterdam.github.io/garp-functional/)

Thanks
------

[](#thanks)

This library is inspired by beautiful languages like [Haskell](https://www.haskell.org/) and [Clojure](https://clojure.org/),
as well as the awesome [RamdaJS](https://ramdajs.com/) library.

###  Health Score

53

—

FairBetter than 97% of packages

Maintenance61

Regular maintenance activity

Popularity41

Moderate usage in the ecosystem

Community24

Small or concentrated contributor base

Maturity72

Established project with proven stability

 Bus Factor1

Top contributor holds 74.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~52 days

Recently: every ~149 days

Total

56

Last Release

480d ago

Major Versions

v1.0.17 → v2.0.02018-07-04

v2.0.7 → v3.0.02019-02-06

v3.1.1 → v4.0.02019-04-28

v4.0.2 → v5.0.02020-12-03

v5.0.3 → v6.0.02023-06-07

PHP version history (3 changes)v0.1.0PHP &gt;=5.3.0

v3.0.0PHP &gt;=7.1.0

v6.0.0PHP &gt;=7.2.0

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/803176?v=4)[Harmen Janssen](/maintainers/harmenjanssen)[@harmenjanssen](https://github.com/harmenjanssen)

![](https://www.gravatar.com/avatar/cf6699e100eaa1b3fb2389b044e2365fb73add031d3e91ecf6cf4507c99643a5?d=identicon)[RamiroGrrr](/maintainers/RamiroGrrr)

---

Top Contributors

[![harmenjanssen](https://avatars.githubusercontent.com/u/803176?v=4)](https://github.com/harmenjanssen "harmenjanssen (171 commits)")[![martijngastkemper](https://avatars.githubusercontent.com/u/250662?v=4)](https://github.com/martijngastkemper "martijngastkemper (43 commits)")[![Hansterdam](https://avatars.githubusercontent.com/u/28623671?v=4)](https://github.com/Hansterdam "Hansterdam (5 commits)")[![MarcoWorms](https://avatars.githubusercontent.com/u/7863230?v=4)](https://github.com/MarcoWorms "MarcoWorms (3 commits)")[![schoenkaft](https://avatars.githubusercontent.com/u/1607628?v=4)](https://github.com/schoenkaft "schoenkaft (3 commits)")[![HammenWS](https://avatars.githubusercontent.com/u/1799286?v=4)](https://github.com/HammenWS "HammenWS (2 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")

---

Tags

curryingdata-lastfunctional-programminghacktoberfestphp

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/grrr-amsterdam-garp-functional/health.svg)

```
[![Health](https://phpackages.com/badges/grrr-amsterdam-garp-functional/health.svg)](https://phpackages.com/packages/grrr-amsterdam-garp-functional)
```

###  Alternatives

[react/stream

Event-driven readable and writable streams for non-blocking I/O in ReactPHP

689126.8M194](/packages/react-stream)[aimeos/map

Easy and elegant handling of PHP arrays as array-like collection objects similar to jQuery and Laravel Collections

4.2k412.9k11](/packages/aimeos-map)[mageplaza/module-core

Mageplaza Core for Magento 2

7910.7M53](/packages/mageplaza-module-core)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
