Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I set the difficulty to 3 because almost all functions are trivial except
fromList
which must get rid of duplicates. Perhaps it should be difficulty 4, please let me know what you think.Also note that I focused the solution on simplicity, not performance. I considered implementing the list of items as a hash table or a sorted binary tree, but I decided that the objective of the
Example.roc
code is to ensure that the tests work well in the simplest way possible.Also, the stub contains this code:
The tests initially used
==
to compareCustomSet
values, but this actually did not callisEq
, so the tests would fail if the items inside the set were not in the same order. This is due to roc-lang/roc#7111. So I temporarily replaced==
withisEq
in the tests, but I leftimplements [Eq]
in the stub and solution, so that we can easily change the tests back to==
when the issue is fixed.