{"id":18446134,"url":"https://github.com/grrr-amsterdam/garp-functional","last_synced_at":"2025-04-08T00:31:46.033Z","repository":{"id":46147465,"uuid":"78719002","full_name":"grrr-amsterdam/garp-functional","owner":"grrr-amsterdam","description":"PHP utility library embracing functional programming paradigms.","archived":false,"fork":false,"pushed_at":"2023-10-16T15:36:37.000Z","size":520,"stargazers_count":31,"open_issues_count":2,"forks_count":4,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-04-14T12:48:15.588Z","etag":null,"topics":["currying","data-last","functional-programming","hacktoberfest","php"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grrr-amsterdam.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-01-12T07:14:34.000Z","updated_at":"2024-06-18T19:49:01.298Z","dependencies_parsed_at":"2024-06-18T19:48:59.867Z","dependency_job_id":"a4ad6401-02eb-4843-9272-12af48644196","html_url":"https://github.com/grrr-amsterdam/garp-functional","commit_stats":{"total_commits":163,"total_committers":9,"mean_commits":18.11111111111111,"dds":"0.21472392638036808","last_synced_commit":"3d60de1e2b368d86da5830f5122950fd327b73e6"},"previous_names":[],"tags_count":54,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grrr-amsterdam%2Fgarp-functional","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grrr-amsterdam%2Fgarp-functional/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grrr-amsterdam%2Fgarp-functional/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grrr-amsterdam%2Fgarp-functional/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grrr-amsterdam","download_url":"https://codeload.github.com/grrr-amsterdam/garp-functional/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247755353,"owners_count":20990616,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["currying","data-last","functional-programming","hacktoberfest","php"],"created_at":"2024-11-06T07:08:28.667Z","updated_at":"2025-04-08T00:31:44.917Z","avatar_url":"https://github.com/grrr-amsterdam.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![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)\n\n# Garp Functional\n\nUtility library embracing functional programming paradigms.\n\n[Documentation](https://grrr-amsterdam.github.io/garp-functional/)\n\n## Developed with ❤️ by [GRRR](https://grrr.nl)\n\n- GRRR is a [B Corp](https://grrr.nl/en/b-corp/)\n- GRRR has a [tech blog](https://grrr.tech/)\n- GRRR is [hiring](https://grrr.nl/en/jobs/)\n- [@GRRRTech](https://twitter.com/grrrtech) tweets\n\n## Philosophy\n\n`Garp\\Functional` is a practical functional library that strives to embrace functional paradigms.\n\n- Functions are pure, referentially transparent, without side-effects.\n- Data immutability is favored over mutating existing properties of given parameters.\n- In general, functions are curried. Almost all of the functions in the library can be called\n    partially applied, to a point where this makes sense.\n- Function parameters are ordered to promote currying. Data is usually the last thing to go in,\n    making every function a fine candidate to pass to native `array_map`, `array_filter` and the\n    like, without having to create a closure around the call.\n- Higher-order functions are provided to fill the gaps. Functions like `compose`, `partial`,\n    `partial_right` or `not` are legos for you to use in your own implementation.\n- Nothing is type-hinted too strictly. I don't care if you pass a\n    string or an array to `prop`, as long as it allows accessing members thru bracket syntax `[]`,\n    I'll allow it. Nothing irks me more about PHP than not being able to toss a `Traversable` \n    object into the native `array_map`. \n- Typeclasses are added, broadening the applicability of the functions. Next to primitives, they will \n    now work with your objects as well, so long as they implement the right interface.\n\n## Usage\n\nInstallation:\n\n```\ncomposer require grrr-amsterdam/garp-functional\n```\n\nThat'll do, all functions are available to you.\n\n[Read the docs for a complete\nreference](https://grrr-amsterdam.github.io/garp-functional/)\n\n\n## Thanks\n\nThis library is inspired by beautiful languages like [Haskell](https://www.haskell.org/) and [Clojure](https://clojure.org/),  \nas well as the awesome [RamdaJS](https://ramdajs.com/) library.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrrr-amsterdam%2Fgarp-functional","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrrr-amsterdam%2Fgarp-functional","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrrr-amsterdam%2Fgarp-functional/lists"}