Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> 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.



True, with early return - there's no need to actually nest with else.

Logically this still would be a case/switch though...


The 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.


True 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?


Well, we can see the string, and we can see that is uses plain ASCII.


In this case, sure. But what if we shifted to rendering with emojis or whatnot. What would the first ASCII character of the string be?


If you anticipate that need, you just store the gradient as an array of strings, and you still then only need a trivial lookup.


I 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/...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: