Lysxia / first-class-families

First-class type families
https://hackage.haskell.org/package/first-class-families
MIT License
86 stars 12 forks source link

Move some functions from fcf-containers to first-class-families? #29

Closed gspia closed 4 years ago

gspia commented 4 years ago

Hi

I've been somewhat busy with the fcf-containers now and I added a lot of list functions that I needed.

There are functions like Any, All, Or, And, Partition, Intersperse, Intercalate, Span, Break, some prefix functions, Tails, Snoc

Would you like to take some or all of those into first-class-families?

In addition to list-functions, I needed a symbol-module that similar to Nat-module here. In a way, it might also fit better into this lib than in the fcf-container.

Further, there are some functions that might or might not could be moved: First, Second for example (maybe some other, don't remember everything right now).

Anyhow, if you think that the move is worth, I could do these in separate issues.

Please do let me know what you think. Their current versions as already visible in the repo https://github.com/gspia/fcf-containers

(I'm fine also in leaving those into the fcf-containers, but somehow feel that first-class-families would be a better place because it already has Fcf.Data.List -module.)

Lysxia commented 4 years ago

Hi @gspia, I think those are all worth adding to fcf!

gspia commented 4 years ago

Ok, I made a pull request and it shows a conflict. The conflict is in the List-module. Now I'm not sure how to solve it: is this something that I have to do or something that repo-owner has to do?

The conflict arises due to re-ordering the functions. They are all there but somehow git made the merge in the way that couple of old functions would be there twice.

Lysxia commented 4 years ago

Hi gspia, conflicts are usually resolved by the patch author (you).

Ideally, before working on a patch, you should update your repository with the latest changes from upstream, and start work from there. This avoids conflicts as long as nobody else is making changes to upstream at the same time. Since you already have changes, you will have to rebase or merge them and resolve conflicts.

git fetch upstream
# Assuming you're on branch master
git rebase upstream/master

# If you don't have any changes, this will move your branch forward.
# If you have new commits, this will replay them on top of upstream/master (and you will have to resolve conflicts).

There are many different workflows using git, but here's a pretty common one: https://www.atlassian.com/git/tutorials/git-forks-and-upstreams

gspia commented 4 years ago

Thanks for the link and instructions, and sorry that you had to help with this one. (I'll read the instructions.) Shortly, I'll push a merged version. (I'll clean up the Symbol-module first)

Lysxia commented 4 years ago

Fixed by #30 and the subsequent addition of "overloaded families"/"type-level classes".

Thanks again @gspia !