take/takeWhile iterators for Counttables #13428
Closed
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 was trying to write an implementation for word frequency but didn't come up with an elegant solution to print the 10 most frequent words. See also discussions in the Nim forum Idiomatic sequence functions. I thought it would be best to extend the tables library itself as in there we have direct access to the internal data structure of CountTables.
The word frequency code could be more succinctly written as:
The essential part being
wordFrequencies.take(10)
. The resulting binary would be more efficient, too.I think the PR is not complete. There should be the same functions for CountTableRefs and maybe other table types. Although I think take/takeWhile make most sense for CountTables. Maybe also take and takeWhile procs that return sequences had to be added. I am not sure about that though. Just let me know what you think of it and if need be how I should adapt the PR.