{"id":20931327,"url":"https://github.com/ssteele/curry-town","last_synced_at":"2026-04-14T12:32:09.413Z","repository":{"id":43171576,"uuid":"510104383","full_name":"ssteele/curry-town","owner":"ssteele","description":"FP curried restaurant bill calculation","archived":false,"fork":false,"pushed_at":"2022-08-17T19:16:22.000Z","size":126,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-27T22:44:21.916Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ssteele.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-07-03T18:28:26.000Z","updated_at":"2022-07-07T15:12:25.000Z","dependencies_parsed_at":"2022-08-28T20:41:42.257Z","dependency_job_id":null,"html_url":"https://github.com/ssteele/curry-town","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ssteele/curry-town","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssteele%2Fcurry-town","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssteele%2Fcurry-town/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssteele%2Fcurry-town/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssteele%2Fcurry-town/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ssteele","download_url":"https://codeload.github.com/ssteele/curry-town/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssteele%2Fcurry-town/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31797370,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T11:13:53.975Z","status":"ssl_error","status_checked_at":"2026-04-14T11:13:53.299Z","response_time":153,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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-11-18T21:41:17.465Z","updated_at":"2026-04-14T12:32:09.387Z","avatar_url":"https://github.com/ssteele.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Curry Town\n\nCurrying is a functional programming (FP) paradigm that breaks down functions that take multiple arguments into a sequence of functions each taking only one argument.\n\nWhy would you want to do such a thing?\n\nCurrying encourages the creation of pure functions with single responsibilities. It increases maintainability and fits within the greater idea of functional programming that seeks to avoid tedious bugs arising from side effects or collisions with application state/context. These are the kind of bugs that tend to crop up in large applications.\n\nThis pattern is completely in-line with JavaScript guiding principles and is well established in the language. If you've ever used or written a [closure](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures#closure), you've performed basic currying:\n\n```\nconst greeting = (message) =\u003e {\n   return (name) =\u003e {\n        return `${message} ${name}`;\n   }\n}\nlet sayHi = greeting('Hi');\nlet sayHello = greeting('Hello');\n\nconsole.log(sayHi('John'));     // Hi John\nconsole.log(sayHello('John'));  // Hello John\n```\n\nThis is a sandbox to play around with and learn currying. Here is a [helpful resource](https://javascript.info/currying-partials) to learn more about practical currying.\n\n### develop\n```\ncd curry-town\nnpm i\nnpm run watch\n```\n\nOpen `dist/index.html` in your preferred browser.\n\n### deploy\n```\nnpm run build\ncopy `dist/*` to web server\n```\n\nhttp://curry-town.steve-steele.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fssteele%2Fcurry-town","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fssteele%2Fcurry-town","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fssteele%2Fcurry-town/lists"}