profunctors
Haskell 98 Profunctors (by ekmett)
elephants
By Zelenya
profunctors | elephants | |
---|---|---|
4 | 4 | |
69 | 23 | |
- | - | |
4.3 | 4.6 | |
2 months ago | 6 months ago | |
Haskell | Haskell | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 or later |
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
profunctors
Posts with mentions or reviews of profunctors.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2023-10-03.
-
How to use PostgreSQL with Haskell: hasql
We’ll also use contravariant-extras, vector, profunctors, and tuple packages to make a few things tidier (this isn’t required; it’s all copy-paste anyway).
-
The Haskell Unfolder Episode 2: quantified constraints
Edward Kmett already added a superclass to Profunctor, but releasing this got stalled
-
Alternative to arrows?
One of the main problems with the Arrow hierarchy is that it’s not particularly well-factored. The main Arrow class has five methods, which is both intimidating to newcomers and indicative that there’s some decomplection that can be done. I think the best alternative is to use the profunctors package; it deals much more fluently with things that can take values and then return them (functions, Kleisli arrows, etc). For example, the Arrow class is broken down across Profunctor and Strong. I had a term rewriting engine that used arrows, and I was never really happy with it until I moved it to profunctors.
-
Why kind-level foralls don't interact with ScopedTypeVariables
Indeed, that is a somewhat contrived example that is meant to illustrate that ScopedTypeVariables aren't just limited to standalone type signature declarations—they can also be used in arbitrary subexpressions as well. Whether you prefer to use type signature declarations or expression type signatures largely depends on your personal tastes, but both styles are used in the "real world". For instance, here is one example of a use of expression type signatures + ScopedTypeVariables in the profunctors library.¹
elephants
Posts with mentions or reviews of elephants.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2023-10-03.
-
How to use PostgreSQL with Haskell: hasql
💡 Remember that you can see the complete code in the repo.
-
How to use PostgreSQL with Haskell. Elephantine library review 2023
💡 If you want to follow allow at home, the repository contains all the imports and data types — we omit most of them from the tutorial for simplicity.
-
How to use PostgreSQL with Haskell: beam
All the other tables look quite similar; see the repo for the rest of the boilerplate. One interesting bit is foreign keys / referencing other primary keys; for example, product_id and category_id in the mapping table look like are defined as PrimaryKey ProductT f (not Columnar f Int64):
-
How to use PostgreSQL with Haskell: rel8
See the repo for the rest of the boilerplate.
What are some alternatives?
When comparing profunctors and elephants you can also consider the following projects:
stratum-tool - Command-line tool for communicating with Electrum server
beam - A type-safe, non-TH Haskell SQL library and ORM
groupoids - Haskell 98 Groupoids
hasql-pool - A pool of connections for Hasql
sorty - Small sort utility
contravariant-extras - Extras for the "contravariant" package
GPX - GPS eXchange Parser
hasql-transaction - A composable abstraction over retriable transactions for Hasql
confsolve - Generalized file conflict resolving tool.
hasql-th - Template Haskell utilities for Hasql
headroom - ©️ Manager for license headers in source code files.
representable-profunctors - Representable profunctors
profunctors vs stratum-tool
elephants vs beam
profunctors vs groupoids
elephants vs hasql-pool
profunctors vs sorty
elephants vs contravariant-extras
profunctors vs GPX
elephants vs hasql-transaction
profunctors vs confsolve
elephants vs hasql-th
profunctors vs headroom
profunctors vs representable-profunctors