Danny, dRebol, Inetw3 (Daniel Murrill)

Hello Hostilefork,

I've been following Rebol since 1993-94, over 20 years, as dRebol,Inetw3, and I am still amazed. I may not be a good programmer but I do dream in Rebol.

I posted the %Rebol-dom.r script to rebol-org and it has some vague similarities to your TLS EMIT dialect. Especially the VAR LET variables that bind to functions. I've saw discussions on SO about it. I check it 2-3 times every day.

I thought I was crazy using a var function to turn set-word!s into a named variable functions bound to data. I don't know how to optimize the code but it must look like, say, javascript or lua as much as possible for my next two DSL's.

I think you given me hope to keep trying. Every new chosen path starts with a Pandora's Box.

4 Likes

Welcome Danny,

(pardon my changes to your post; I moved it to "introductions" and did a little bit of formatting...if you want to know how to do things like bold and italics, or put links in posts...see the Markdown Documention)

Bendability is the name of the game in Ren-C. Have you seen SET-WORD!s on the left hand side?

 default: enfixed func [  ; enfixed means "get first argument from left"
     'left [set-word!]
     right [block!]
 ][
     either undefined? left [set left do right] [get left]
 ]

 >> abcd: default [print "running", <first>]
 running
 == <first>

 >> abcd
 <first>

 >> abcd: default [print "won't run", <second>]
 == <first>

Crazy? :crazy_face: :fox_face:

I think you given me hope to keep trying. Every new chosen path starts with a Pandora's Box.

Have you seen the 2019 Talks?

Right now our primary target is the web. A DOM-based dialect that could run in the browser could be a good test...even if it wasn't necessarily "useful". (I don't know if your dialect is useful or not, I'm just saying it doesn't even really matter as long as it stretches and tests features...so there's no reason to worry either way.)

We might be able to get your DOM dialect running in "REDBOL" emulation on the web (Rebol2/Redlike), and then perhaps convert it to Ren-C. Do you have tests for it?

1 Like

I would like to start coding the Rebol-Dom.r script in Ren-C, but im not sure if it needs to be written as Rebdol compatible or R3 syntax. Any heads up would be nice.

I also would like to see its node sequence type coded as Red/sys or Ren-C if its possible.

I really like Uparse, but for me to focus on its intricacies would take up more free time that i really don't have right now.

Although i like Rebol, my coding style may not do it much justice, but that's ok. Rebol is still somewhat an unknown. So if anyone have any criticism, good or bad, i welcome it.

2 Likes

Hi Danny,

Last year, Ren-C underwent some necessary but painful transitions... as I try to reason about a working module system, and what the future of binding might look like. It means the already-not-well-documented variations from historical Rebol are even more of a minefield--I'll do what I can to improve it, but it will be slow.

But likely relevant to what you want is that I think it's going to be crucial that binding be able to let you access "binding environments" for strings. If you haven't got a chance to read this, I talk some about that:

Rebol and Scopes: Well, why Not?

So that's one heads-up I'd give you: that the best way to embed "JavaScript-like intents" inside of Ren-C may be something that is done with strings, vs. the kinds of syntax tricks you were trying.

This isn't to say that we couldn't use some experimentation in the area of Ren-C/web interoperability. @rgchris made "StyleTalk" which he explains in a video. I'd like to see us to see where things can go with that kind of thinking before bending ourselves too far into pretzels and asking if a[b]c should be its own lexical type.

Another heads up I'll give is that I've been traveling since December, and not programming much at all. Hence I'm a bit behind on the mountain of design (as well as my own pet projects...) I likely won't have the bandwidth to support anyone's new experiments that I'm not already supporting.

Though much of the current efforts are on things in the browser. If you are interested in HTML interoperability then I'd definitely encourage you to look at the ReplPad and where that is going. I'm effectively "doubling-down" on the approach of using the browser for GUI (vs. Red's strategy of writing their own code)

So if you want to be experimental in Ren-C land, the place where you'll be more likely to find support (though not promising...) is if you're trying things in the web build. It may lead you to different ideas about how to attack your problems, specifically as a mixture of JavaScript strings with Ren-C.

I'd suggest looking at JS-EVAL and JS-DO for instance, things like what @gchiu wrote just the other day:

add-content: func [
    txt [text!]
][
    txt: append copy txt newline
    js-do ["document.getElementById('script').innerHTML +=" spell @txt]
]

That's pretty smooth language interoperability... and I'm sure it can be better! (If you read the JS-EVAL post I explain why this winds up being smarter than gluing strings together, and avoids various escaping problems.)

1 Like