4 ms·
> scream for a case/switch-statement Maybe I’m missing some context, but all that actually should be needed in the top-level else block is ‘gradient[idx]’. Pre
by antonvs 10mo ago
> scream for a case/switch-statement
Maybe I’m missing some context, but all that actually should be needed in the top-level else block is ‘gradient[idx]’. Pretty much anything else is going to be longer, harder to read, and less efficient.
- e12e 10mo agoTrue, with early return - there's no need to actually nest with else. Logically this still would be a case/switch though...
- vidarh 10mo agoThe point was that logically it would be an array lookup by index. There's no need for any conditional construct here whatsoever. You'll note it has already constructed a string in the right order to do that, but then copped out with the if-else.
- e12e 10mo agoTrue enough. On that note, I had a look at the language reference - there's arrays - but also this: (char_at s index) # Get ASCII value at index (0-based) (string_from_char code) # Create string from ASCII value So, you can pluck a character... From an UTF-8 string? What if the rendering used multibyte characters?
- vidarh 10mo agoWell, we can see the string, and we can see that is uses plain ASCII.
- e12e 10mo agoIn this case, sure. But what if we shifted to rendering with emojis or whatnot. What would the first ASCII character of the string be?
- vidarh 10mo agoIf you anticipate that need, you just store the gradient as an array of strings, and you still then only need a trivial lookup.
- e12e 10mo agoI was more commenting on the language design here; the idea of indexing into a UTF-8 string and returning an ASCII character. What does the index count? Bytes? There doesn't seem to be a way to get UTF-8 characters from strings? Ed: There seems to be an UTF-8 library: https://github.com/jordanhubbard/nanolang/tree/main/modules/unicode https://github.com/jordanhubbard/nanolang/tree/main/modules/...