25 ms·
What are the `@` characters for? Are they what makes it feel like Perl? Because other than them I don’t think the equivalent Python code would look much differ
by pansa2 11mo ago
What are the `@` characters for? Are they what makes it feel like Perl?
Because other than them I don’t think the equivalent Python code would look much different. Maybe more concise, e.g. you could replace the second section with something like `sorted = entries.sorted(key=lambda entry: entry.timestamp)`.
- johnisgood 11mo agoYeah, the code doesn't seem very Perl-ish to me.
- SJMG 11mo ago`@` makes the array (stack allocated) into a sequence (heap allocated). Edit: Just read the second half of your post— > I don’t think the equivalent Python code would look much different. Maybe more concise He could be leveraging [std/sugar](https://nim-lang.org/docs/sugar.html https://nim-lang.org/docs/sugar.html) to make this look cleaner.
- juki 11mo agoThere are shorter options in Nim too, depending on your stylistic preferences let sorted = entries.sorted(proc (a, b: Entry): int = cmp(a.timestamp, b.timestamp)) let sorted = entries.sorted((a, b) => cmp(a.timestamp, b.timestamp)) let sorted = entries.sortedByIt(it.timestamp) I suppose you could change the whole proc to something like proc groupIntoThreads(entries: seq[Entry], threshold: int): seq[seq[Entry]] = let sorted = entries.sortedByIt(it.timestamp) for i, entry in sorted: if i == 0 or entry.timestamp - sorted[i - 1].timestamp > threshold: result.add(@[sorted[i]]) else: result[^1].add(sorted[i])
- auxym 11mo ago@[] is syntax for a "seq", which is similar to a C++ vector, ArrayList in Java/C#, or a python list. It's a heap-allocated array that automatically resizes. In contrast with [], which is mostly identical to a C array: fixed size and lives on the stack.