Questions tagged [rebol]

Rebol is a modern interpreted language where code is data. It isn't object oriented, but has objects. It isn't a functional language but has first class functions. There are virtually no syntax rules or immutable keywords, making it ideal for developing domain-specific "dialects".

Rebol is a homoiconic language with heritage from , , , and . Language focus is on careful control of dependencies, and concern over the size of the interpreter and code...as well as achieving an English-like readability. The project's motto is "Rebel against software complexity".

On 12-Dec-2012, the unfinished ANSI-C sources of the Alpha release of Rebol3 was open-sourced under an Apache 2.0 License. Standalone "zero-install" binaries are available for x86 and ARM platforms--covering Linux/Windows/Mac/Android, 64-bit builds, hard-float compatibility and HaikuOS. Core builds are about half a megabyte, while GUI builds are around 1 megabyte (uncompressed).

(Note: Several forks of the code exist, with a community wiki summary at REBOL3 - what is the difference between the different branches?)

In addition to inheriting the "code is data" paradigm of Lisp, Rebol has a rich type system...natively recognizing patterns like URLs, dates, HTML tags, currency, and binary literals. Of note, Douglas Crockford (of JSON and JSLint) has credited Rebol as a source of inspiration for JSON, adding:

"Rebol's a more modern language, but with some very similar ideas to Lisp, in that it's all built upon a representation of data which is then executable as programs. But it's a much richer thing syntactically.

Rebol is a brilliant language, and it's a shame it's not more popular, because it deserves to be."

    —Douglas Crockford, founder of JSON, 2009 [link]

A modern compiled variant of Rebol which draws in several new concepts is , which is under heavy development.

696 questions
108
votes
4 answers

Avoiding recursion when reading/writing a port synchronously?

All port operations in Rebol 3 are asynchronous. The only way I can find to do synchronous communication is calling wait. But the problem with calling wait in this case is that it will check events for all open ports (even if they are not in the…
Shixin Zeng
  • 1,458
  • 1
  • 10
  • 14
29
votes
2 answers

What are terminal and nonterminal symbols?

I am reading Rebol Wikipedia page. "Parse expressions are written in the parse dialect, which, like the do dialect, is an expression-oriented sublanguage of the data exchange dialect. Unlike the do dialect, the parse dialect uses keywords…
Dmitry Bubnenkov
  • 9,415
  • 19
  • 85
  • 145
20
votes
1 answer

How are words bound within a Rebol module?

I understand that the module! type provides a better structure for protected namespaces than object! or the 'use function. How are words bound within the module—I notice some errors related to unbound words: REBOL [Type: 'module] set 'foo…
rgchris
  • 3,698
  • 19
  • 19
17
votes
3 answers

Is there a overall explanation about definitional scoping in Rebol and Red

From the REBOL/Core Users Guide, and What is Red, I have learned that both Rebol and Red use definitional scoping. From the guide, I know it is a form of static scoping, "the scope of a variable is determined when its context is defined", and is…
Wayne Cui
  • 835
  • 7
  • 15
11
votes
11 answers

Other options for a Rebol editor|IDE?

I currently use Programmer's Notepad with the Rebol syntax scheme. It's not bad--does any insightful person have another suggestion?
MrBertie
  • 1,125
  • 6
  • 8
11
votes
2 answers

Best intro to dialects and parse?

I'm new to Rebol, and am working with a small corporate-based group to evaluate it for use in some areas that time and again have proven themselves highly resistant to change and to concepts such as DSLs. Can anyone suggest what they have found to…
johns
  • 113
  • 4
10
votes
3 answers

String searching in Rebol or Red

I'm interested in searching on a lot of long strings, to try and hack out a sed-like utility in rebol as a learning exercise. As a baby step I decided to search for a character: >> STR: "abcdefghijklmopqrz" >> pos: index? find STR "z" == 18 >>…
gnat
  • 101
  • 1
  • 6
10
votes
1 answer

What is the summary of the differences in binding behaviour between Rebol 2 and 3?

The current in-depth documentation on variable binding targets Rebol 2. Could someone provide a summary of differences between Rebol 2 and 3?
Adrian
  • 741
  • 4
  • 14
9
votes
3 answers

Does anyone have an efficient R3 function that mimics the behaviour of find/any in R2?

Rebol2 has an /ANY refinement on the FIND function that can do wildcard searches: >> find/any "here is a string" "s?r" == "string" I use this extensively in tight loops that need to perform well. But the refinement was removed in Rebol3. What's…
Ashley
  • 131
  • 5
9
votes
2 answers

What exactly happened when not using "copy" to deal with a string?

The purpose of the function below is to return a string having inserted the argument value between two stars. star-name: func [name /local stars] [ stars: "**" insert next stars name stars ] print star-name "test" ;*test* print star-name…
Wayne Cui
  • 835
  • 7
  • 15
9
votes
1 answer

Where can I find a Rebol 3 micro web server?

There are plenty of nice little web-servers written in Rebol 2, but Rebol 3 has a different networking model, and I'm looking for a web-server that works with that. I'm not looking for anything fancy. It's just to run on an embedded board to let me…
rebol
  • 348
  • 4
  • 8
9
votes
1 answer

What is the 'reword' function in Rebol and how do I use it?

I saw someone mention the reword function today, but documentation for it is very brief. It looks like shell script environment variable substitution, or maybe regex substitution, but different. How do I use this function and what kind of gotchas am…
Adrian
  • 741
  • 4
  • 14
9
votes
9 answers

What's the fastest/most efficient way to count lines in Rebol?

Given a string string, what is the fastest/most-efficient way to count lines therein? Will accept best answers for any flavour of Rebol. I've been working under the assumption that the parse [some [thru]] combination was the fastest way to traverse…
rgchris
  • 3,698
  • 19
  • 19
8
votes
2 answers

|Red Programming Language| How to get Cookies from a Webpage?

I searched a lot on Google as well as Stackoverflow. I could not find How to get Cookies (or in general, The HTTP Headers)from a Webpage and then edit it and send it back? [I know how to make POST/GET requests using read/write but Cookies idk]
8
votes
1 answer

REBOL3 - what is the difference between the different branches?

What are the differences between the different Rebol 3 branches, especially with the new REN branch? Is it the platforms they'll run on, the feature set, code organization, the C standard compliance?
Maarten
  • 127
  • 1
  • 7
1
2 3
46 47