Can’t wait for the “10 yeass of experience in Rye Lang [in 2026]” job posts from clueless recruiters
"Every active component in Rye is a function (if, loop, for, fn, return, extends, context). No keywords, no special forms."
It should make the language much simpler than other languages. The challenge of programming is dealing with copmplexity in code, and if the language takes away much of that complexity it should be a good thing.
So, explain to me how that is a function and not a special form?
Every time I try to read a Ruby line with no (), I have to stop and think.
Not being able to scan code is an anti feature.
print(inc(x))
But like Lisps. I've used them when I wanted to be very certain about evaluation, but not in general. (print(inc x))
In Rebol (or Rye) this is usually just: print inc x
That's why all function in Rebol/Rye have fixed arity and yes, you generally have to know it or deduce it from the code, which is a minus.Rye currently doesn't have parenthesis option, but it might get it at the end. It does have op and pipe words, an optional left to right flow, which can also better hint about the structure than pure polish notation of Rebol I think. For better of worse, these Rye expressions all do the same :) --
print inc x
print x .inc
x .inc .print
inc x |print--
Red also improved on Rebol 2 a lot and is a proper Rebol successor. It was started by a very productive and prominent Rebol developer, that I greatly appreciate. The only problem I see with it is that maybe they were too ambitious. They started with their own low level language (compiler) Red/system, and out of that built Red interpreter. They are really doing things as they should be done I think, but it's taking quite a lot of time.
Red, like in a way Rebol has a lot of focus on GUI and I needed a language for backend development. I was waiting for their "IO branch" for years, it was hard for me to contribute in a concrete way, since their approach was quite low level and at around 2018 started making a simple Rebol like interpreter in Go, because Go is great on the backend and I just wanted something that works, hence the higher level language than C/C++, that's now Rye.
Red is still moving forward, their community is mostly on gitter I think. It is small, but so was Rebol's and it's much bigger than Rye's, which doesn't really have a community yet :).
Cool because I'd like to think if someone made a Netflix tech drama loosely based around Bell Labs in the early 80's, this would language would appear in that series. A language created by some Nordic computer scientist who angrily shakes his fist at the world because it doesn't get adopted due to it's weird syntax. Of course instead we get Awk.
Weird syntax might be just awesome syntax you don't yet know :)
It doesn't integrate non-Joker Go code as far as I know.
lsp\ "prin"
It has two problems:
- it's unclear why "prin", not "print";
- the usage of backslash looks scary.Subsequent examples are also not good:
bears .column? 'Area |unique
- overloaded syntax of '.' and '?' characters;
- unbalanced quotes;
- unbalanced whitespace around the '|' characters.There is a sub-convention that word\ just means like word(more), which usually means one (most obvious) additional argument. function `ls` lists current context and `ls\` accepts string, in this case "prin" and list all arguments that match it.
Rye (similar to Rebol) relies on multiple types of words to replace syntax (if that makes sense) and these types of words are denoted by specific characters at the start or the end usually.
.word is and op-word and takes first argument from the left |word is a pipe-word and is similar to op-word, but with different priority (more on that you can see on the website) 'word is lit-word (literal-word) ... quoted word in lisp terms (I suspect)
? at the end is a convention for "get" ... so noun? would mean get-noun ... so height? is convention for get-height. This is temporary "in testing" convention but so far it seems to function OK.
Thanks for your feedback.
I still think a non-animated transcript of a terminal session is better.
Rye-front is also an experiment of how you can externally extend Rye, by adding Rye to your code/library. In this case the main focus is Go GUI library Fyne.
Now a colleague is writing a tool that auto-generates Fyne bindings and has already made great progress (Fyne has couple of 1000 functions/structs/... If we will be able to generalize this to any Go library, this will be really exciting.