{"id":16579983,"url":"https://github.com/tfausak/flow","last_synced_at":"2026-01-24T01:32:53.913Z","repository":{"id":29732477,"uuid":"33275764","full_name":"tfausak/flow","owner":"tfausak","description":":droplet: Write more understandable Haskell.","archived":false,"fork":false,"pushed_at":"2025-03-17T14:22:50.000Z","size":118,"stargazers_count":200,"open_issues_count":0,"forks_count":11,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-23T09:05:41.663Z","etag":null,"topics":["haskell","operator"],"latest_commit_sha":null,"homepage":"https://hackage.haskell.org/package/flow","language":"Haskell","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/tfausak.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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":"2015-04-01T22:12:06.000Z","updated_at":"2025-03-17T14:22:43.000Z","dependencies_parsed_at":"2022-08-27T16:23:29.478Z","dependency_job_id":"0c2640cc-e137-4047-b9f5-48f312e1e853","html_url":"https://github.com/tfausak/flow","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tfausak%2Fflow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tfausak%2Fflow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tfausak%2Fflow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tfausak%2Fflow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tfausak","download_url":"https://codeload.github.com/tfausak/flow/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250403834,"owners_count":21424794,"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":["haskell","operator"],"created_at":"2024-10-11T22:19:46.658Z","updated_at":"2026-01-24T01:32:48.873Z","avatar_url":"https://github.com/tfausak.png","language":"Haskell","readme":"# [Flow][]\n\n[![CI](https://github.com/tfausak/flow/actions/workflows/ci.yml/badge.svg)](https://github.com/tfausak/flow/actions/workflows/ci.yml)\n[![Hackage](https://badgen.net/hackage/v/flow)](https://hackage.haskell.org/package/flow)\n\nWrite more understandable Haskell.\n\nFlow is a package that provides functions and operators for writing more\nunderstandable Haskell. It is an alternative to some common idioms like\n[`($)`][] for function application and [`(.)`][] for function composition.\n\n-   [Requirements](#requirements)\n-   [Installation](#installation)\n-   [Usage](#usage)\n    -   [Cheat sheet](#cheat-sheet)\n\n## Requirements\n\nFlow requires a Haskell compiler. It is tested with recent versions of GHC, but\nolder or different compilers should be acceptable. For installation with Cabal,\nFlow requires at least Cabal 2.2.\n\n## Installation\n\nTo add Flow as a dependency to your package, add it to your Cabal file.\n\n```\nbuild-depends: flow ==2.0.*\n```\n\n## Usage\n\nFlow is designed to be imported unqualified. It does not export anything that\nconflicts with [the base package][].\n\n``` hs\nimport Flow\n```\n\n### Cheat sheet\n\nFlow            | Base\n--------------- | -------------\n\u003ccode\u003ex \u0026#124;\u003e f\u003c/code\u003e | `x \u0026 f`\n\u003ccode\u003ef \u003c\u0026#124; x\u003c/code\u003e | `f $ x`\n`apply x f`     | `f x`\n`f .\u003e g`        | `f \u003e\u003e\u003e g`\n`g \u003c. f`        | `g . f`\n`compose f g x` | `g (f x)`\n`x !\u003e f`        | -\n`f \u003c! x`        | `f $! x`\n`apply' x f`    | `seq x (f x)`\n\n### Converting existing code\n\nIf you want to uniformly use flow operators you can use [HLint] with the\n`hlint-flow.yaml` file. For easy use, it is best to extract the\n`hlint-flow.yaml` to your project directory and do\n\n``` sh\n\u003e hlint -h hlint-flow.yaml \u003csource file\u003e\n```\n\nor\n\n``` sh\n\u003e hlint --git -h hlint-flow.yaml\n```\n\nto check all Haskell source tracked by git.\n\nFor more information about Flow, please read [the Haddock documentation][].\n\n[HLint]: https://github.com/ndmitchell/hlint\n[Flow]: http://taylor.fausak.me/flow/\n[`($)`]: http://hackage.haskell.org/package/base-4.8.0.0/docs/Prelude.html#v:-36-\n[`(.)`]: http://hackage.haskell.org/package/base-4.8.0.0/docs/Prelude.html#v:.\n[the base package]: http://hackage.haskell.org/package/base\n[the haddock documentation]: https://hackage.haskell.org/package/flow/docs/Flow.html\n","funding_links":[],"categories":["Haskell"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftfausak%2Fflow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftfausak%2Fflow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftfausak%2Fflow/lists"}