
Wolfgang, instead of Incremental.Type, instead you could just extend it to
something like
Containers.Map.Incremental,
but I see your point. At that point, you cannot tell from which package the
module came and might even assume at first that it comes from containers.
I also see your point about polluting module names/causing compatibility
issues for lots of things. Maybe this is another one of those things that
would have been better if adopted earlier on, but is much less practical to
adopt at this point or going further.
On Mon, Jul 30, 2018, 7:04 AM Boespflug, Mathieu
I agree.
I would add that separating function from provenance is a good thing. It's a good thing that I can import Data.Map if I just want a map type, rather than some bespoke AmazingTypes.Map. It's up to my build tool configuration to bring into scope the right package that provides some implementation of a map. And in a post Backpack world, this will be even more useful, because I can check that whatever implementation I choose matches the the type signatures that my code expects.
On 30 July 2018 at 12:55, Wolfgang Jeltsch
wrote: Hi!
There are also disadvantages in having the module name beginning with the package name.
With that system, extending subtrees of the module tree is made impossible. In the *incremental-computing* package, for example, we add incrementalization to several common data types. We do this by adding modules like *Data.Sequence.Incremental*. With your approach, we would have to change that name to something like *Incremental.Sequence*. However, if someone implements some new data type in a package *amazing-type* and adds incrementalization support right away, the incremental version would be in *AmazingType.Incremental*. So the order of the type name and the string *Incremental* would generally depend on whether a type was implemented before or after the *incremental-computing* package was created.
In addition, changing the package structure would result in changing the module names. For example, Edward Kmett once split his category theory package into several small packages; under your system, this would result in massive module name changes and consequently compatibility issues.
All in all, I think separating package names from module names is a good idea. The distribution of modules among packages seems more like an implementation detail to me and is a lot dependent on historical accident. It should not pollute module naming.
All the best, Wolfgang
Am Dienstag, den 24.07.2018, 09:12 -0400 schrieb Daniel Cartwright:
I am of the opinion that at least most packages should start module names with their package name. Hackage guarantees uniqueness of package names, so this makes sense. The whole Data/Control/Numeric thing seems arbitrary. I would rather see Base.List, Base.Applicative, etc. This has multiple benefits, such as non-overlapping module names by construction (assuming the use of hackage library code), and knowing where the package came from immediately.
On Tue, Jul 24, 2018, 9:06 AM Marco Zocca
wrote: Hi all,
I was wondering if there are plans to extend/revisit/tidy up the module name system (https://wiki.haskell.org/Hierarchical_module_names) in view of Haskell 2020.
I'm mostly concerned with scientific/numerical applications, where I find the current state of things to be a bit chaotic (see Numeric/Numerical/Optimisation/Optimization etc.).
I would be glad to help out, and gather intelligence from the community as well via e.g. a poll.
Best, Marco (github.com/ocramz) _______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
_______________________________________________ Libraries mailing listLibraries@haskell.orghttp://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
_______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
_______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries