1. 16

  2. 12

    Yay REBOL! I’m the only person I’ve ever met who wrote even a single line of REBOL. I worked at a startup years ago and implemented a reasonably large sized app in REBOL.

    (The startup shall remain nameless but involved mobile payments and predated Apple Pay and Google Wallet and all that. The REBOL app that I wrote ran on one of the point-of-sale systems (which ran on Windows) and talked to our payment processing network. Had a neat little GUI using the draw dialect and everything.)

    There were several fatal flaws for REBOL from a commercial and adoption standpoint, but the biggest problems I had from a technical standpoint were:

    • Closed type system. REBOL is very Common Lispy with a rich set of data types, as well as a separate object system built on top. It was possible to define new classes and objects; it was not possible to define new types. Being able to define new types would’ve been wonderful.
    • Weak support for modular code. You could include other files and such, but namespace management was a problem.
    • I have yet to find, after years of searching, a succinct explanation of scoping rules. Part of it has to do with the very unique and very powerful execution model that REBOL uses. Words are just words, which is fine, but when a word is used in a context where it could be interpreted as a variable, it wasn’t always clear which binding it would take without some thought.

    REBOL, to me, was begging for a Common Lisp-style multiple dispatch object system. Multimethods would have made it possible to define new types (even if they didn’t get their own literal syntax). Functions in REBOL have to be of fixed arity, though, so that might make things difficult.

    (REBOL allowed you to “refine” functions, and each refinement could have a different arity, but for each refinement the number of arguments was still fixed.)

    1. 7

      If you like Rebol, checkout Red.

      1. 2

        Have you messed with Red/System? I’ve been wonder what people think of it for a C or C++ replacement. One project uses it for OS apps. I haven’t even looked hard as I’d have to learn the whole REBOL way of thinking first.

        1. 4

          Only just last night.

          Red/System and Red seem to be very similar, except that Red/System must be compiled, whereas Red can be executed in the REPL. I discovered this while trying to import a dll, which is something that only Red/System can do.

          The REPL is quick to execute, but compilation was rather slow even though the programs I compiled were short. I hope this cost doesn’t increase much with program size (although Red programs are typically very short).

          It’s very cool how you can create a dynamic library (the standard C ABI kind) as well as consume them. It’s also trivial to cross-compile for other architectures. All of these features surprised me in a “productive” language, which I assume is garbage collected. Perhaps this is one of the advantages of being interpreted and compiled.

          The crown jewels seems to be terse reactive GUI development, plus easy parsing and creation of DSLs.

          I don’t understand all of the syntax yet. I assume the square brackets are simply block delimiters, but I’m not sure if there’s something else going on there.

          I have to say, this language is incredibly terse.

        2. 1

          That’s interesting, as I noticed the Rebol Github repo seems to be dead. Also, apart from the actual programming language/environment I share and favorite the Rebol philosophy in terms of simplicity vs. complexity.

          1. 2

            It’s probably just developed more privately with the Github a token of charity. Links like below are why I think that:


        3. 1

          REBOL was doomed from the start. You could try it out for free, but if you wanted to use it for anything serious like database connectivity or whatnot, you were required to purchase a license %]

          I remember you could do some amazing one-liners though!