stchacademy's comments

stchacademy | 4 years ago | on: Show HN: Arturo – Simple, expressive and portable programming language

Short answer: it does (yep, both on Windows AND Android).

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! :)

stchacademy | 4 years ago | on: Show HN: Arturo – Simple, expressive and portable programming language

I totally understand what you mean.

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

Thanks a lot for your kind words. I really appreciate it! :)

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

Thanks a lot for your nice comments.

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

Good question.

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

No offence taken. I guess this (quite common) question could go for a wide variety of things... but then, many things would have been left without been invented or even tried. Now, to try to properly answer your question: I guess the simple answer was that I couldn't find what was I was looking for - in a language, in this case. So, I decided to create it myself. :)

stchacademy | 5 years ago | on: Show HN: Arturo – REBOL-inspired programming language and VM written in Nim

Regarding if returning a value - and thus, being able to use it as part of an expression - is an absolutely interesting idea I've been thinking of implementing. However, I still don't know how.

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

Basically, the idea behind "?" is "functions that return a boolean". But done in a consistent way. So, practically EVERY function that returns a boolean is - by convention - terminated with a "?".

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"]

:)

:)

page 1