stchacademy | 4 years ago | on: Show HN: Arturo – Simple, expressive and portable programming language
stchacademy's comments
stchacademy | 4 years ago | on: Show HN: Arturo – Simple, expressive and portable programming language
Please, let me know in case you have any issues or questions. I'm all ears! :)
stchacademy | 4 years ago | on: Show HN: Arturo – Simple, expressive and portable programming language
However - and not because I'm the author of the language - once you get the general idea of Arturo (or any of the languages of the Rebol family: be it Rebol, Red, or Arturo), I assure you that you will find it very tempting not to ever go back to the C-inspired languages.
If I could sum up the whole (not-so-)syntax of Arturo, I would say that every "command" takes takes the necessary parameters on its right. And that's pretty much it.
print 10 ; that's a valid function call for example
or
print add 1 2 ; that's also a valid function call (or 2, to be precise)
and...
a: 1 + 2 ; that's how you "assign" meaning to a symbol
other than these super-basics, having a look into the library is pretty much all you'll need in order to get started.
I guess this isn't that difficult. :)
P.S. Feel free to ask any question you want. Feedback and input of any kind is more than welcome too. Also, our Discord channel is fairly active, so... I would even invite you there, so that we could actually exchange ideas about it in a more... interactive way.
stchacademy | 4 years ago | on: Show HN: Arturo – Simple, expressive and portable programming language
Regarding "?"-functions.
Yes, the idea was this: to separate "normal" functions (that is, functions returning something or altering a value in-place) from functions returning a boolean values - let's call them predicates. That's not a rule, it's merely by convention (at least in the built-in library).
Re: "if" vs "if?", as I said before... the second one is a predicate, meaning: it does return a boolean value (that of the passed condition parameter). And the main use is... chaining with an "else". ;-)
stchacademy | 4 years ago | on: Show HN: Arturo – Simple, expressive and portable programming language
I've done my best. As for the inspiration, as I've said before, although the two languages (or the 3 of them, if I include Red) did end up looking quite similar, when I started out I had no knowledge of Rebol (other than the name). So, basically, I designed something from scratch, with its own characteristics. Now, given that, afterwards I sure have studied Rebol/Red a lot, and I must admit that both have served as an interesting source of ideas as well.
Looking forward to your feedback once you play a bit with it! :)
stchacademy | 4 years ago | on: Show HN: Arturo – Simple, expressive and portable programming language
You are also welcome in our "official" Discord channel: https://discord.gg/YdVK2CB
stchacademy | 4 years ago | on: Show HN: Arturo – Simple, expressive and portable programming language
As a matter of fact, the question has been asked again (see here @ our "official" discord channel: https://discord.com/channels/765519132186640445/765519132186...)
As I mention in that specific request, socket programming support is planned but not yet in. But I'll work in it.
And yes, given that you're talking about async operations, probably this is the most challenging part to be dealt with.
Stay tuned!
stchacademy | 4 years ago | on: Show HN: Arturo – Simple, expressive and portable programming language
stchacademy | 4 years ago | on: Show HN: Arturo – Simple, expressive and portable programming language
stchacademy | 5 years ago | on: Show HN: Arturo – REBOL-inspired programming language and VM written in Nim
Let me know what you think! :)
stchacademy | 5 years ago | on: Show HN: Arturo – REBOL-inspired programming language and VM written in Nim
Let me know what you think! :)
stchacademy | 5 years ago | on: Show HN: Arturo – REBOL-inspired programming language and VM written in Nim
Let me know what you think! :)
stchacademy | 5 years ago | on: Show HN: Arturo – REBOL-inspired programming language and VM written in Nim
Let me know what you think! :)
stchacademy | 5 years ago | on: Show HN: Arturo – REBOL-inspired programming language and VM written in Nim
Let me know what you think! :)
stchacademy | 5 years ago | on: Show HN: Arturo – REBOL-inspired programming language and VM written in Nim
Let me know what you think! :)
stchacademy | 5 years ago | on: Show HN: Arturo – REBOL-inspired programming language and VM written in Nim
Let me know what you think! :)
stchacademy | 5 years ago | on: Show HN: Arturo – REBOL-inspired programming language and VM written in Nim
Let me know what you think! :)
stchacademy | 5 years ago | on: Show HN: Arturo – REBOL-inspired programming language and VM written in Nim
stchacademy | 5 years ago | on: Show HN: Arturo – REBOL-inspired programming language and VM written in Nim
One idea would be to add an .attribute, e.g. if.get - and then have it return a value.
Or, use a different function altogether.
But then we'd have, 3-4 if's. That sounds like a bit of an overkill, I admit.
I'm absolutely open to ideas :)
stchacademy | 5 years ago | on: Show HN: Arturo – REBOL-inspired programming language and VM written in Nim
Now, why the two "if"s:
Obviously, as you yourself mentioned, 'if? returns a boolean (the result of the condition) and 'if doesn't.
So that's one use.
The next use - which I will obviously have to make crystal clear in the Language Reference - is that if? (with the ?) is a must if you want to pair with an "else".
Think of it this way. If?-else may appear as a language construct, but in fact they are two separate commands. The if? is an if - that pushes the result of the condition of the stack. And "else" is actually a reversed-if: it checks what is at the top of the stack (see: returned by the if? above) and if that is false - that is: the above if-condition was not true - it executes its block.
So, in that case, you have to use an "if?" (and not a simple "if")
The same thing happens with a case/when? construct (only, in that case, the condition blocks are actually concatenated),e .g.
case [x] when? [<3] [print "it was less than 3"] when? [=3] [print "it was equal to 3"] else [ print "it was greater than 3"]
:)
:)
Long answer: Arturo's aim is to be able to run, easily and effortlessly, on anything you can imagine.
Right now, it supports macOS, Linux, Windows, Raspberry (ARM-based Linux), FreeBSD + Web/JS.
Windows support may leave a tiny bit to be desired, but that's exactly what I'm here for: to make Arturo better. And better.
Looking forward to your feedback! :)