You are right. Other than the nil == empty set assumption, I've now did fix it like you said, that both sets are locked in time, always. I also add you to the Credits section (https://github.com/fatih/goset#credits)  and mentioned you in the commit log: https://github.com/fatih/goset/commit/9e81dddc369fdf3e4fc4845d020a332465216992 I really appreciate for your work. It helps me to make this package better now. You can check out the latest master and test it if you want.

I'll also look into your functional way of doing this. Thanks