-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Revisiting policy on dependencies #95
Comments
@bjornbm If you have a minute, could you comment on this? In particular things like #8 require taking a dependency on either Things that do benefit from instances are trickier but also further down the road. |
Instances would be useful for interoperating with these, possibly among others: |
Yes, this is OK with me.
Depending on the API of a given library perhaps orphan instances could be avoided by providing a newtype wrapper for a given dependency and defining instances for the newtype. The newtype and instances would be defined in the same module (e.g., |
OK, tentative plan is below: Make 4 projects
Additionally, make two package flags (for |
Similar flags for |
The downsides to restructuring and keeping everything in one repo are more obvious once I started to do it. Of note are issues with setting up the CI build(s) and with release tagging and github releases. Branching cuts both ways. Creating multiple projects for now, we can consolidate them later if referring issues around or managing keeping releases in sync gets to be too much of a hassle. |
Spun off: Primarily just boilerplate for appeasing git, cabal, and travis. Substantive commits to come, along with hackage release for |
Do you happen to understand the |
Not familiar with it, but my interpretation of the user guide is that if On Tue, Dec 1, 2015 at 2:44 PM, Douglas McClean [email protected]
|
I think it would be useful to take the
Pros: we can express this, and not need so many conflicting names (although we will keep all the names, it means that some of our modules use 3 or 4 different qualified |
Looks like |
I think it's valuable to keep our current policy of minimizing dependencies as much as possible, because that can help enable maximal adoption and hopefully unite the community around one dimension tracking library, which is good for everyone.
On the other hand, Haskell makes this difficult. There are a whole bunch of features that I would like to add that would require orphan instances if done in another library, and orphan instances are really problematic in practical ways, not just as a smell.
In the continued absence of some kind of "forward instance declaration" scheme or a better module system (both discussed here https://www.reddit.com/r/haskell/comments/2rajq1/is_there_anything_planned_to_solve_the_orphan/), what do we do about this?
Package flags seem like almost as much of a misfeature as orphan instances, because package installations are global and there is no clear way to determine how to set the flags or document the relationship between dependencies and flag settings, but I am considering it.
The text was updated successfully, but these errors were encountered: