noinia / hgeometry

HGeometry is a library for computing with geometric objects in Haskell. It defines basic geometric types and primitives, and it implements some geometric data structures and algorithms.
122 stars 40 forks source link

Splitting Up Components #15

Closed BebeSparkelSparkel closed 5 years ago

BebeSparkelSparkel commented 5 years ago

There seems to be a lot accumulating in this library. Would it be possible to split out some of the components? I'm willing to help with this

A few good reasons to do this are:

I would need some help figuring out where the project should be cut apart at. Here are some places I see right now:

Let me know if this seems reasonable.

noinia commented 5 years ago

Thank you for your interest in hgeometry! It is somehow my hobby-project implementing geometric algorithms/data-structures/things I like, and as you observed it has grown a bit over time. I think splitting it into smaller components definitely makes sense. The following things can easily go into their own packages I think:

This would leave the geometric data types, the geometric algorithms, and the examples and benchmarks etc. I'm ok with moving the examples into a separate package, but having them behind a flag (like currently is the case) seems fine to me to. I don't feel strongly about either of those options. We could split the package further (i.e. algorithms and data types separately), but I do think there are some cross-dependencies that would be somewhat annoying to untangle.

Would something like that satisfy your use-case(s)? Furthermore, any suggestions for naming the sub-packages are welcome ;)

BebeSparkelSparkel commented 5 years ago

I'm just going to start with extracting ipe. It would be nice to have a family of packages that are obviously related would hgeometry-ipe be an acceptable name?

noinia commented 5 years ago

As you may have seen I've split the package into several subpackages. There are still some small things that I want to fix, and I have to update some documentation (readme etc). All of the actual geometric data structures and algorithms are still in the main "hgeometry" package. As I've indicated before, I'm not sure if/how to split this further because of cross dependencies between the data types and algorithms. Any further suggestions are welcome of course :)

BebeSparkelSparkel commented 5 years ago

Ok, I will examine your splits and let you know if I have any suggestions

noinia commented 5 years ago

Done, so I'm closing this.