Home   Archive   Permalink

Rebel Dialect

How or where can I download rebel dialect?
Thanks, Steve

posted by:   selster@san.rr.com     18-Sep-2016/12:28:19-7:00


posted by:   Nick     18-Sep-2016/22:07:30-7:00

This brings up some interesting questions out here in Beginnerland. The main question is how one actually goes about writing a dialect, Can one publish a dialect, perhaps on the rebol.org library, the way one can publish a script? And one question that might be very useful is, is the MAKEDOC mark-up considered a dialect? If so, that would be useful information because one can download Makedoc.r from the library and (try to) figure out how it works. I beat my head on that a little and got the general idea of how it works, but I still couldn't write something like it myself.
Maybe someone should form a "parse" support group.

posted by:   Steven White     19-Sep-2016/13:48:49-7:00

This is perhaps a different topic.
I remember years back when the topic of dialects came up, it seemed like many people had a different understanding of what constitutes a dialect. My memory is a bit fuzzy on the exact wording, but even Carl Sassenrath promoted the view that a dialect did not require parse; a dialect could be a set of rebol expressions which construct a new pattern for achieving a set of results.
I don't want to revisit that conversation, since I find it confusing (even though I'm sure Carl and others are correct).
When I think of a dialect, I take it to mean using parse so that you are implementing a syntax (or "semantic facade") which is different and distinct from standard rebol expressions.
Rebol (and red) are homoiconic (code is data), and are able to readily parse their values and act as an engine for different syntaxes. I think this is one of the key differentiators of rebol compared to nearly all other languages, and I'm hoping that red takes it to the next level.
I've done some exploration in this area and I'd live to participate in further discussion. I've created a rudimentary "To Do App" dialect and also been building a general-purpose, expandable SQL syntax as a front end for rebol data-wrangling.

posted by:   Edoc     21-Sep-2016/9:34:44-7:00

There's quite a bit about dialects in the archives here. Have you seen the articles linked here: http://rebolforum.com/index.cgi?f=printtopic&permalink=Nick13-Dec-2013/16:40:11-8:00&archiveflag=archive ?

posted by:   Nick     21-Sep-2016/21:41:40-7:00

That to-do-guru.r dialect in that archived thread is mine. Not sure it's the latest, nor is it a robust example, but the basics of supporting a different syntax is there.

posted by:   Edoc     22-Sep-2016/8:43:13-7:00

This is a copy of an old article from RebolForces. It's a great introduction to practical dialecting:

posted by:   Nick     22-Sep-2016/21:54:44-7:00

The tricky thing about old articles and other piecemeal community info is that it is usually 10 to 15 years old and hasn't been updated or maintained. I'm pretty sure that TUI won't work for R3 Alpha or Red, and those are really the only current interpreters (and R3 Alpha is already deprecated). So the older info is relevant mainly to Rebol 2.x, where the parse rules are slightly less modern and there's no unicode support.

posted by:   Edoc     24-Sep-2016/9:25:01-7:00

... which exactly gives challenges to those seeking to learn how to write R-language messages for RVCs like REBOL and Red.

posted by:   The tricky thing about old articles ...     26-Sep-2016/19:47:04-7:00

"The main question is how one actually goes about writing a dialect" -- Steven White
"I've done some exploration in this area and I'd live to participate in further discussion. I've created a rudimentary "To Do App" dialect and also been building a general-purpose, expandable SQL syntax as a front end for rebol data-wrangling." -- Edoc
I'm interested in participating in a discussion around this too! The concept is very intriguing, but complete code examples are few and far between.
Nick, that link you provided to the archives is great. I didn't know about most of those ones, thanks!

posted by:   Brian     26-Sep-2016/20:16:05-7:00

Here is an interesting discussion on a custom dialect for dice rolling ...

posted by:   Brian     26-Sep-2016/21:03:17-7:00

THE guy who knows ALL about this probably is Carl. I can see it now. Summer Dialect Camp at the Sassenranch. A week of intensive study during the day, wine tasting every night. About $2500 per person for a fee, which is in line with other training sessions I have taken at employer expense.    
Maybe the first step in a discussion would be to think up a bunch of potential dialect examples. Not how to to do them, but just the dialects themselves, using VID and PDF Maker as guides. Then, with a clearer idea of what a dialect IS, the discussion could turn to how to make one work.

posted by:   Steven White     27-Sep-2016/10:16:28-7:00

"THE guy who knows ALL about this probably is Carl."
I have deep admiration for Carl S, but consider that he briefly checks-in on Rebol *maybe* once every 12 months or so. I'd say he's moved on, and he's content to let the community control its own destiny.
There are a handful of more active rockstars in the community who have explored these topics while also demonstrating an appreciation of design, usability and documentation. Christopher Ross-Gill, Gregg Irwin and several others come to mind.
My hope is that as Red clears a few more key hurdles it will let that community get back to hacking away at some of these powerful and unique features of the language.

posted by:   Edoc     27-Sep-2016/12:04:09-7:00

Edoc and others:
First, you should read these works of mine in succession. If you do, you will understand REBOL at long last.
1) https://timeserieslord.github.io/rvc/#I%20Mean%20This...
2) https://timeserieslord.github.io/rvc/#Words%20Mean%20Something%3F
3) https://timeserieslord.github.io/rvc/#The%20RVC%20Gets%20What%20You%20are%20Saying%2C%20but%20Only%20in%20the%20Right%20Context
Taken together, those will unlock the door for you. But before you do, read this:
Carl said himself, "Any sequence of values that must be interpreted through special code is considered a dialect." Carl said also, "A REBOL dialect [grammar] is a set of data structuring rules that lets you define specific meaningful sequences of REBOL words or data."
Carl defined a dialect this way, "A dialect is defined as a specialized grammar that shares REBOL's common set of datatypes."
Key in on what Carl said about datatype!(s). "A dialect is not specified as character patterns, but rather as datatype patterns within REBOL."
This is a data structure in REBOL per Carl:
    friends: [
            "Bob" 24 bob@mob.dom
            "Sally" 28 sal@bol.dom
            "Julie" 30 jul@minespring.dom
And because you would need this "special code" to have the RVC interpret the sequence of values string! integer! email! in the evaluation context, or what Carl called the default function environment, it is a dialect, per Carl:
    foreach [name age email] friends [
            send email reform ["Hi" name "How's it going?"]
This similar looking data structure IS NOT a dialect, per Carl, but code, because the RVC "knows" the meaning of each value without "needing to be trained," that is, without needing you the programmer / coder to give (impute) meaning of the tokens to the RVC either formally through a dialect grammar and parse or imformally by how your code produces results.
    friends: [
         [name: "Bob Marker" age: 24]
         [name: "Sally"
                 age: 28
                 email: sal@bol.dom
                 phone: #777-555-1111
         [name: "Julie Lober"
                 email: jul@minespring.dom
                 site: http://www.juliesite.dom
                 city: "New York"
In this code, the RVC loops through each "person" block and
1) names the none! with (6) tags, name, age, email, phone, site, city
2) does a do on the "person" block, which means the RVC uses those set-word!9(s) and tags the values of datatypes! string! integer! at minimum, and email! issue! or string! depending what is there.
3) prints out what the RVC evaluates the word name as
foreach person friends [
            ;; sets global
         set [name age email phone site city] none
         ;; evaluates the block; sets words to values;
         do person
         ;; outputs value (something fully evaluated) followed by a line break
         print name
Do you see the difference between the two examples?
In the first block named friends, the RVC cannot connect any of the values. You need to impute meaning that each line is a record.
In the first block named friends, the RVC can connect values through set-words! and once done, can parse and eval the block with the DO dialect parser.
You can think of it this way. You write "Ordinary" REBOL code IN THE DO DIALECT!
Some of block! evaluators of the standard, i.e., the official binary download, evaluate for different dialects. Each is a dialect parser.
FUNC processes a dialect. LAYOUT processes a dialect. The all important DO processes a dialect.
By processes I mean parses and evaluates according to however Carl and others coded those native!(s).
Do you see now?

posted by:   Time Series Lord     29-Sep-2016/14:07:35-7:00

This should read:
In the SECOND block named friends, the RVC can connect values through set-words! and once done, can parse and eval the block with the DO dialect parser.

posted by:   Time Series Lord     29-Sep-2016/14:10:31-7:00

What is 'RVC'?

posted by:   Asking For a Friend     29-Sep-2016/18:18:59-7:00

Thank you. My head hurts a bit, but things are a bit clearer. I do see now that I still operate in the context-independent paradigm. This reminds me vaguely of a Star Trek episode.

posted by:   Steven White     29-Sep-2016/18:28:59-7:00

Asking For a Friend:
Learn it about it in minutes here:
The RVC, REBOL and Red Enlightenment through RVC Zen
The RVC is the REBOL Virtual Computer. It's the layer between you at the console or your RVC Messages (aka "scripts") and your PC or other device and the Internet.
REBOL isn't a language. It's a virtual computer. It supports more than one language to control it.
Carl designed REBOL for messaging. He said himself that tricked people into thinking it was a "scripting language" like Python or Ruby.

posted by:   Time Series Lord     29-Sep-2016/19:25:03-7:00

Time Series Lord, that was a very good explanation, thank you.
You're basically building a mini programming language inside of REBOL that can parse/run commands the normal interpreter would not understand.
RVC = The RVC is a virtual computer (VC). Famed computer products maker Carl Sassenrath invented RVC. Carl called it REBOL.

posted by:   Brian     29-Sep-2016/19:29:46-7:00

Ok, so RVC is the Rebol interpreter. Got it. Will pass that on.

posted by:   Asking For a Friend     29-Sep-2016/19:33:55-7:00

Are you sure you "got," er understand it?
Rebol is more than an interpreter, much more.
Many interpreters have existed through the years. Those interpreters can only handle one grammar and have no OS nor comm capability.
Even in more recent times, something like Python is merely a language interpreter. One still needs compiled, external wrappers to DLLs to expose interfaces to Python.
The RVC is an virtual computer designed by an operating system designer. REBOL 2.7.8 has it is own graphics system and layer over TCP/IP.
One of the things the RVC does is interpret standard dialects, e.g., do, func, layout. But it can intepret other dialects. In effect, you could write an entire language, say REBPy and mimic Python in REBOL.

posted by:   Time Series Lord     29-Sep-2016/23:48:25-7:00

Looks for prior on 'RVC', finds none. "when you create REBOL programs you are ultimately writing them for two readers. One is the REBOL interpreter that executes your code. The other is the human who wants to understand your code."
Carl Sassenrath, A Deep Lake
Not disputing the scope of the 'RVC', wondering what end your rebranding serves. Leaning pedantry.

posted by:   Asking For a Friend     30-Sep-2016/2:26:09-7:00

If you do not like it, move on.
As to this Of yours: "Leaning pedantry," that lacks meaning.
No one is paying me to argue with a dummy. So if you want to dump a couple $100 in my paypal, I will continue with you.
Good luck.

posted by:   Time Series Lord     30-Sep-2016/10:22:40-7:00

Pedantry confirmed. I will hold on to my $100s and ponder the silence.

posted by:   Asking For a Friend     30-Sep-2016/10:41:11-7:00

... as well as in perpetual stupidity.
Better luck next time.

posted by:   Time Series Lord     30-Sep-2016/12:44:22-7:00

Hello dear Time Series Lord,
This is a message from your friends of the govenment, to be precise the ministry of health, department mental sanity.
We would very much appreciate you reporting back to your institution.
We promise we will not drug you like last time when you cooperate peacefully.
Hope to welcome you back savely soon,

posted by:   Your mental institution     30-Sep-2016/16:03:29-7:00

You: "Hope to welcome you back savely soon,"
Right: We hope to welcome you back safely soon.
Your errors:
1) You ended a sentence with a comma.
2) You failed to write a subject.
3) You confused the stem save with safe.
Your mommy and daddy must be so proud. Apples fall near to the tree.
Better luck next time, dummy.

posted by:   Your mental institution     30-Sep-2016/17:20:11-7:00

I don't what I am talking about. I was sent over by the Euro trash guys from the Red room on gitter.im to harass TimesSeriesLord since he is smarter than us.

posted by:   Your mental institution     30-Sep-2016/18:33:29-7:00