{"id":34636891,"url":"https://github.com/p-samuel/anonymous-methods","last_synced_at":"2025-12-24T17:05:07.734Z","repository":{"id":196300833,"uuid":"529665945","full_name":"p-samuel/anonymous-methods","owner":"p-samuel","description":"Using higher-order logic to copy JavaScript's \"filter\", \"map\" and \"reduce\" functions in Delphi. ","archived":false,"fork":false,"pushed_at":"2024-12-05T14:36:36.000Z","size":66,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-08T21:58:35.207Z","etag":null,"topics":["anonymous-functions","delphi","delphi10","filter","find","foreach-loop","higher-order-functions","higher-order-logic","javascript","map","pascal","reduce"],"latest_commit_sha":null,"homepage":"","language":"Pascal","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/p-samuel.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}},"created_at":"2022-08-27T18:26:44.000Z","updated_at":"2024-12-05T14:37:39.000Z","dependencies_parsed_at":"2023-09-24T07:25:11.716Z","dependency_job_id":null,"html_url":"https://github.com/p-samuel/anonymous-methods","commit_stats":null,"previous_names":["p-samuel/anonymous-methods"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/p-samuel/anonymous-methods","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p-samuel%2Fanonymous-methods","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p-samuel%2Fanonymous-methods/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p-samuel%2Fanonymous-methods/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p-samuel%2Fanonymous-methods/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/p-samuel","download_url":"https://codeload.github.com/p-samuel/anonymous-methods/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p-samuel%2Fanonymous-methods/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28005408,"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","status":"online","status_checked_at":"2025-12-24T02:00:07.193Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["anonymous-functions","delphi","delphi10","filter","find","foreach-loop","higher-order-functions","higher-order-logic","javascript","map","pascal","reduce"],"created_at":"2025-12-24T17:03:03.367Z","updated_at":"2025-12-24T17:05:07.729Z","avatar_url":"https://github.com/p-samuel.png","language":"Pascal","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Filter\n\n``` pascal\n\n  LNumbers := TArray\u003cInteger\u003e.Create(1, 3, 4, 5, 6, 14, 15, 17, 22, 23, 25, 32);\n  \n  FilteredNumbers := TUtil.Filter\u003cInteger\u003e(LNumbers, \n    function (ANumber: Integer): Boolean\n    begin\n      Result := (ANumber mod 3 = 0);\n    end);\n\n```\n\n## Map\n\n``` pascal\n\n  LWords := TArray\u003cString\u003e.Create('a', 'b', 'c', 'd', 'e');\n  UpperCaseWords := TUtil.Map\u003cString\u003e(LWords, \n    function (AWord: String): String\n    begin\n      Result := UpperCase(AWord);\n    end\n  );\n\n```\n\n## Reduce\n\n``` pascal \n\n  LScores := TArray\u003cDouble\u003e.Create(8.5, 6.5, 7.8, 10);\n  LTotal := TUtil.Reduce\u003cDouble\u003e(LScores, \n    function (Acc, Item: Double): Double\n    begin\n      Result := Acc + Item;\n    end, 0);\n\n```\n\n## Find\n\n``` pascal \n\n  //Find first item which price is equal to 200.\n  LCart := TArray\u003cTItem\u003e.Create(\n    TItem.Create('Bike', 400),\n    TItem.Create('Clock', 15),\n    TItem.Create('Closet', 200),\n    TItem.Create('Cabin', 200),\n    TItem.Create('Stove', 100),\n    TItem.Create('Pots', 20)\n  );\n  \n  LItem := TUtil.Find\u003cTItem\u003e(LCart, \n    function (Item: TItem): Boolean\n    begin\n      Result := Item.Price = 200;\n    end);\n\n```\n\n## Every\n\n```pascal\n\n  LNames := TArray\u003cString\u003e.Create('Samuel', 'Bob', 'Obama', 'Andrew', 'Julia');\n  LEvery := TUtil.Every\u003cString\u003e(LNames, \n    function (Name: String): Boolean\n    begin\n      Result := Name.ToLower().Contains('a');\n    end);\n\n```\n\n## Some\n\n```pascal\n\n  LNumbers := TArray\u003cInteger\u003e.Create(0, 1, 2, 3, 4);\n  LSome := TUtil.Some\u003cInteger\u003e(LNumbers, \n    function (Number: Integer): Boolean\n    begin\n      Result := Number \u003e 5;\n    end);\n\n```\n\n\n## ForEach\n\n``` pascal\n\n  LNumbers := TArray\u003cInteger\u003e.Create(1, 2, 3, 4, 5);\n  TUtil.ForEach\u003cInteger\u003e(LNumbers, \n    function (Number: Integer): Integer\n    begin\n      Result := Number + 1000;\n    end);\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fp-samuel%2Fanonymous-methods","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fp-samuel%2Fanonymous-methods","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fp-samuel%2Fanonymous-methods/lists"}