{"id":16590354,"url":"https://github.com/jacopkane/functional-programming-jargon-for-javascripters","last_synced_at":"2026-03-18T20:44:57.119Z","repository":{"id":137922563,"uuid":"116702627","full_name":"JacopKane/Functional-Programming-Jargon-for-JavaScripters","owner":"JacopKane","description":"WIP - Unscientific and Friendly Dummy Explanations of FP Jargons","archived":false,"fork":false,"pushed_at":"2018-01-08T19:15:04.000Z","size":6,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-30T05:53:52.327Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JacopKane.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-08T16:46:28.000Z","updated_at":"2023-03-04T06:16:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"c88a6025-0507-46e3-aa4b-0b42878a00a1","html_url":"https://github.com/JacopKane/Functional-Programming-Jargon-for-JavaScripters","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JacopKane/Functional-Programming-Jargon-for-JavaScripters","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JacopKane%2FFunctional-Programming-Jargon-for-JavaScripters","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JacopKane%2FFunctional-Programming-Jargon-for-JavaScripters/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JacopKane%2FFunctional-Programming-Jargon-for-JavaScripters/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JacopKane%2FFunctional-Programming-Jargon-for-JavaScripters/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JacopKane","download_url":"https://codeload.github.com/JacopKane/Functional-Programming-Jargon-for-JavaScripters/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JacopKane%2FFunctional-Programming-Jargon-for-JavaScripters/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29728503,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T20:09:16.275Z","status":"ssl_error","status_checked_at":"2026-02-22T20:09:13.750Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-10-11T23:12:34.793Z","updated_at":"2026-02-22T21:44:43.368Z","avatar_url":"https://github.com/JacopKane.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Functional Programming Jargon for JavaScripters\nUnscientific and (Maybe) More Friendly Dummy Explanations of FP Jargons\n\n## Immutability\nYou simple don't change the current variables (including their nested data) and\n the data you've got defined.\n\nThere there are many different ways to achieve and apply this with different\nbenefits.\n\nYou should start googling `immutable-js`, `redux`, `ramda` after checking this\nvanilla JavaScript example:\n\n```javascript\nconst data = {\n  irrelavent: 'data',\n  aPropDefinedByAnotherDev: 'dummy'\n}\n\n// mutable way\n// another dev irresponsibly decides to change this\n// without knowing whether he or she if this data\n// affects somewhere else:\ndata['aPropDefinedByAnotherDev'] = 'yolo'\n\n//immutable way\nconst newData = { ...data, aPropDefinedByAnotherDev: 'yolo' }\n// or:\nconst newData = Object.assign({}, data, { aPropDefinedByAnotherDev: 'yolo' })\n// (note the first empty object so we don't touch\n// existing variables)\n```\n\n\n### Benefits\n*Todo...*\n\nHuge.\n\n## Lenses\nGetter and setter functions for your data\n```javascript\nconst adelle = { so: { deep: { roll : { in : 'it' } } } }\n\n// imperative way\nconst theDeepData = adelle.so.deep.roll.in.it\n\n// through lens\nimport { lensProp, compose } from 'ramda'\n\n//atomic selectors (lenses)\nconst [so, deep, roll, in , it] = ['so', 'deep','roll','in','it']\n  .map(lensProp)\n\nexport soDeepSelector = compose(so, deep, roll, in , it)\n\n\n```\n\n### Benefits\naids immutability, composoble functions without defining and\nexporting variables there and there. You can share these\nfunctions and re-use later. Which for example helps sharing\nof data path definitions between universal server and client\nfor an API.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacopkane%2Ffunctional-programming-jargon-for-javascripters","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjacopkane%2Ffunctional-programming-jargon-for-javascripters","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacopkane%2Ffunctional-programming-jargon-for-javascripters/lists"}