{"id":17153332,"url":"https://github.com/axect/fptools","last_synced_at":"2026-01-06T04:07:38.418Z","repository":{"id":96228450,"uuid":"148423757","full_name":"Axect/FPTools","owner":"Axect","description":"Functional Programming and Efficient Tools for D","archived":false,"fork":false,"pushed_at":"2018-09-14T15:56:27.000Z","size":3476,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-01T22:35:22.973Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"D","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/Axect.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-09-12T04:58:09.000Z","updated_at":"2019-03-28T04:11:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"e6201af4-5cc9-4763-be58-d8c0c1d3e3b9","html_url":"https://github.com/Axect/FPTools","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/Axect/FPTools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Axect%2FFPTools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Axect%2FFPTools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Axect%2FFPTools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Axect%2FFPTools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Axect","download_url":"https://codeload.github.com/Axect/FPTools/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Axect%2FFPTools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28221560,"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":"2026-01-06T02:00:07.049Z","response_time":56,"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":[],"created_at":"2024-10-14T21:45:54.590Z","updated_at":"2026-01-06T04:07:38.369Z","avatar_url":"https://github.com/Axect.png","language":"D","readme":"# FPTools\n\nFunctional Programming \u0026 Efficient Tools for D.\n\n## Why FPTools?\n\nIn Rust, we can use functional programming anywhere because same speed is guaranteed by zero cost abstraction.\nBut in D, we can find functional programming is much slower than OOP or procedural programming.\nIn FPTools, it is also guaranteed like Rust by hand written functions.\n\n## Usage\n\n### Add Dependency\n\n* Add `dependencies` in `dub.json`\n  \n```json\n// In dub.json\n{\n    \"dependencies\": {\n\t    \"fptools\": \"~\u003e0.0.2\"\n    },\n}\n```\n\n### Example\n\n```d\nimport dtools.fp;\n\nvoid main() {\n\tmixin FP!long;                // You can choose any type to use FP (double, string, int, long and etc.)\n\n\tPipe p;                       // Declare pipeline\n\tp.input(seq(1,100));          // Input sequence\n\tp.proc(                       // Write Procedures\n\t\tmap(x =\u003e 2 * x),          // map (Haskell like)\n\t\ttakeWhile(x =\u003e x \u003c 100),  // takeWhile (Haskell like)\n\t\tmap(x =\u003e x / 2),          // map (Haskell like)\n\t\ttake(40),                 // take (Haskell like)\n\t\tdrop(10),                 // drop (Haskell like)\n\t\tdropWhile(x =\u003e x \u003c 30),   // dropWhile (Haskell like)\n\t\treduce((x,y) =\u003e x * y)    // reduce (Haskell like)\n\t);\n\tp.output[0].writeln;          // output function exports result as sequence\n}\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxect%2Ffptools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faxect%2Ffptools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxect%2Ffptools/lists"}