{"id":21730247,"url":"https://github.com/matt-mcmahon/functional","last_synced_at":"2025-06-11T22:33:09.204Z","repository":{"id":45291691,"uuid":"127017822","full_name":"matt-mcmahon/functional","owner":"matt-mcmahon","description":"A learning-friendly functional library with a focus on clear source-code and readable function signatures. ","archived":false,"fork":false,"pushed_at":"2024-01-21T18:47:00.000Z","size":1331,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-01T11:52:38.660Z","etag":null,"topics":["experimental","functional-programming","learn-to-code"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/@mwm/functional","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matt-mcmahon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-03-27T16:47:00.000Z","updated_at":"2022-01-05T20:52:35.000Z","dependencies_parsed_at":"2024-01-21T19:55:56.330Z","dependency_job_id":"6b04b812-65e9-44bd-9e59-6485036a2ca0","html_url":"https://github.com/matt-mcmahon/functional","commit_stats":null,"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/matt-mcmahon/functional","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt-mcmahon%2Ffunctional","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt-mcmahon%2Ffunctional/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt-mcmahon%2Ffunctional/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt-mcmahon%2Ffunctional/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matt-mcmahon","download_url":"https://codeload.github.com/matt-mcmahon/functional/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt-mcmahon%2Ffunctional/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259354989,"owners_count":22844968,"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":["experimental","functional-programming","learn-to-code"],"created_at":"2024-11-26T04:14:12.971Z","updated_at":"2025-06-11T22:33:09.183Z","avatar_url":"https://github.com/matt-mcmahon.png","language":"TypeScript","readme":"# @mwm/functional\n\nYou're looking at an experimental, extremely-minimal, functional library with a\nfocus on clear source-code and readable function signatures. I've tried to\ndesign each function so that browsers and IDEs will generate readable function\nsignatures and easy to debug code. Further, every exported function has an even\nsimpler, [haskell-style][3], `\u003cfunction\u003e.signature` string that you can examine.\n\n## Rational\n\nSome of the challenges I've encountered learning [Functional Programming][6] in\nJavaScript are obtuse function signatures and implementations that are hard to\ndebug. This project is designed to remedy these issues.\n\nThe goal is to provide simple, debuggable, functional programming building\nblocks that anyone can use while learning FP concepts. Implementations should be\nlargely stand-alone, easy to read, and easy to debug. As a consequence, many of\nthe included functions will contain duplicate and unoptimized code, but easier\nreading and reduced cognitive load should make the trade-off worthwhile.\n\nThis library is **not** meant to replace well-tested and engineered libraries\nlike [lodash/fp][7] or [Ramda][8]. Instead, it's primarily meant to be a\nlearning aid. I'll be using this library as part of the tutorials you can find\nat my [website][1] and [GitHub][2] profile. Please check them out … eventually!\n\n## Compatibility\n\n_Functional_ implements a subset of the [Ramda][8] API, but not the entire API.\nWhen you're ready, you can easily replace the _Functional_ dependency with\n_Ramda_, without needing to refactor your code.\n\n## Credits\n\nTo keep this library simple and easily debuggable, I'll occasionally copy code\nfrom projects that have a compatible license into this project (instead of\nimporting it as a dependency). When this is done, I'll include the original\nlicense with the source-code for that module, and (with permission) I'll give\ncredit both here and in _package.json_'s `contributor` field. Programming is\nhard work, and I can't thank the open-source community enough for the enormity\nof their multitudinous efforts!\n\n## Special Thanks To:\n\n- [Tim Davis][5], `clone` was based heavily on his [deep-clone][4]\n  implementation.\n- [Pierre-Antoine Mills][11], for his\n  [How to master advanced TypeScript patterns][9] article on [freeCodeCamp][10]\n  and [ts-toolbelt][12] library. His step-by-step guide on advanced TypeScript\n  types is invaluable.\n\n[1]: http://matthewcodes.com/\n[2]: https://github.com/matt-mcmahon\n[3]: https://www.holger-peters.de/haskell-by-types.html\n[4]: https://www.npmjs.com/package/deep-clone\n[5]: https://www.npmjs.com/~thebearingedge\n[6]: https://medium.com/javascript-scene/master-the-javascript-interview-what-is-functional-programming-7f218c68b3a0\n[7]: https://github.com/lodash/lodash/wiki/FP-Guide\n[8]: https://ramdajs.com/\n[9]: https://www.freecodecamp.org/news/typescript-curry-ramda-types-f747e99744ab/\n[10]: https://www.freecodecamp.org/\n[11]: https://github.com/millsp\n[12]: https://github.com/millsp/ts-toolbelt\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatt-mcmahon%2Ffunctional","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatt-mcmahon%2Ffunctional","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatt-mcmahon%2Ffunctional/lists"}