r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[Dialects] Questions about how to create dialects

Fork
18-Jun-2010
[525x5]
Here in the connect-the-dots problem challenge, I use the Rebmu dialect 
to best the winning perl solution (at the moment) http://stackoverflow.com/questions/2527477/code-golf-connecting-the-dots/3066878#3066878
AltMe put a wacky thing in that link, I'll try again
http://stackoverflow.com/questions/2527477/code-golf-connecting-the-dots/3066878#3066878
Nope, it's just going to screw up the link.  Well that's an argument 
for another time, but here's the link to the overall question and 
you can find my solution: http://stackoverflow.com/questions/2527477/code-golf-connecting-the-dots/
Anyway, if you look at the active community of people who like to 
tinker in code golf, I think they're freaky and obsessive enough 
to perhaps appreciate that Rebol is not only terse, but powerful 
in a generic way.  Note the solution from the guy solving this dot 
connection problem on the commodore 64 in screen memory.  Well, trying 
to solve, it fails on edge conditions
Sunanda
18-Jun-2010
[530]
The link is probably fine. It's a problem with View that AltME inherits. 
Some of us will see it fine, others see it a little screwed. Resizing 
the window can make the problem go away. Usually the link is clickable.
Good luck with converting the golfers!
Fork
18-Jun-2010
[531x2]
Well it's more fun if I'm not doing it alone!!  Note that Code Golf 
answers are wikis, and rebmu is quite easy for Rebol programmers 
to grasp, easy to improve--I think it could be a showcase that might 
get the language in front of "fringe"/"outlier" developers.  (And 
earn perhaps a bit more respect than RebolTutorial's questions, though 
I will say that the visibility he's given by doing Q&A on a modern 
medium is better than nothing...any publicity is better than no publicity, 
the popularity of a tag in sheer number counts is rather important.)
(Being forced to fire up a VM that is willing to run AltME, having 
it mangle my links, and be unable to do "shift up" and have my entire 
line selected or get a right click menu is... well, I'm a sympathetic 
audience, but there's just no comparison to how slick StackOverflow 
is.)
Anton
18-Jun-2010
[533]
Fork, those code golf challenges are interesting, and I'm glad you're 
working on it.

I came up with a method for rendering links perfectly in an AltME-style 
display.

http://anton.wildit.net.au/rebol/doc/overlaid-hyperlink-text-face.r


It's a pity that AltME hasn't been improved with this method. If 
I had access to AltME message display code I could work it in.
Steeve
18-Jun-2010
[534]
Interesting challenge, I will live the evening trying to find something...
Gregg
18-Jun-2010
[535]
Fun stuff Brian.
Maxim
18-Jun-2010
[536x2]
Fork, you should make a sort of white paper on the power of Dialecting 
in REBOL using Rebmu as a reference.  Your language shows just how 
powerfull REBOL's Domain Specific Language capabilities are. Its 
a result of applying dialecting to a very specific Domain, but its 
still pretty much General Purpose .


I think that If its well written, without bias and personal opinion 
on REBOL itself,  it would make the cut for a nice article on REBOL.com's 
web site as an article on the subject.


its just my POV, but marketing information on this, with factual, 
non-trivial, examples is very scarce on the REBOL web site.  I think 
Carl would welcome such a complete example.  you've litterally transformed 
the semantics of the language, yet can still interpret it within 
REBOL.
maybe not the semantics as much as the syntax, but its such a different 
approach that its sort of a blur between both IMHO.
Fork
18-Jun-2010
[538x5]
@Maxim: I've tinkered a little with the semantics, but tried to make 
it so that the abbreviated Rebmu primitives only extend the reactions 
to datatypes which Rebol currently throws errors on.  For instance, 
the letter "e" is mapped to "either-mu", which can handle things 
like constants or functions in the clause block.
Hence you can do things like pEf{Hello}{Goodbye} and get the effect 
of PRINT EITHER F [{Hello}] [{Goodbye}]
Such a feature would be too error-prone in an ordinary Rebol program 
to be worth the savings, but it is essential in shaving off characters
EITHER-MU and its bretheren are factored into what is called the 
"mulibrary.r", which can be used independently of Rebmu.  Though 
you never would.  :)
In my opinion, standardizing Rebmu would be far wiser than decisions 
in Rebol/Core like defining Q to be QUIT (I've pointed out how accidents 
involving this make Rebol seem like it crashes, like when you do 
APPEND [N O P] Q and forget the quote mark on Q).
Fork
22-Jun-2010
[543x5]
I have been writing Rebmu programs in actual Rebmu, as opposed to 
writing them in Rebol and then translating, as a test of how "bad" 
it is: http://github.com/hostilefork/rebmu/tree/master/examples/
As I predicted, it's actually not so bad.  Especially when you can 
break into native Rebol at any point if you want to debug (so long 
as you use lowercase!)
Originally I had it breaking out symbols like - and + in such a way 
that they would cause token breaks, like [a-b] would go to [a - b]. 
 But not only did that cause issues with common naming conventions 
(to-block, etc) it also wastes a lot of two-character tokenspace. 
 So now [a-B] and [A-b] become [a- b], [A-B] becomes [a-b:], [a-b] 
stays [a-b].
There's an exception for runs with multiple characters in this class 
to make programming with ++, --, etc easier.  If multiple characters 
in this class appear in a row then they split the token.  [a++B] 
=> [a ++ b]     [A++b] => [a: ++ b]    ...but...   [A++B] => [a++b:] 
  [a++b] => [a++b]
I also backed of on overwriting the definition of "IF".  The letter 
"i" now starts off mapped to "II" (which stands for "iiiiiiif...."). 
 Similar rationale for "oo" as "ooooor..." which is the non-infix 
version, since infix is useless for code golf
Fork
24-Jun-2010
[548]
Just checked in Rebol 2 compatibility for Rebmu: http://github.com/hostilefork/rebmu/commit/eed98b9570ce957ca248dfd6c67b976ec651beb4
Fork
25-Jun-2010
[549]
I didn't know Rebol 2 didn't have a "continue".
BrianH
25-Jun-2010
[550]
Yeah, and it can't be backported as mezzanine either (tried already). 
I'll request a native.
Fork
25-Jun-2010
[551x3]
I should start a Rebmu quotes page for what people say when I send 
it to them.  "Reading the hourglass solution at first threatened 
to give me a brain aneurysm, but actually after reading this I now 
see you were up to with 'mushing'.  Clever!"
I thought of writing a "derebmu" which converts things like "is" 
into "insert" just as a teaching tool.  I now realize that it's essential 
to have this functionality for things like parse, which are dialects 
in their own right and look at the literal words.  Hence Rebmu's 
PA for parse will have to take its rules argument and derebmu the 
block before execution.
Which leads to the question of why map the words in the do dialect 
at all, and not just derebmu the whole thing before execution.  (I 
think it's just a different way of thinking about what to do with 
the word map, not a tremendously big deal.)
Gabriele
26-Jun-2010
[554]
you can use ALIAS to "change" the words used by PARSE or any other 
dialect.
Fork
26-Jun-2010
[555]
@Gabriele: BrianH says alias is dooooomed.  But he seems to have 
alternatives in mind.  Hopefully something will exist allowing one 
to give names words in such a way that they pass equality tests despite 
different spellings... that would be a huge enabler for international 
markets, as I know of no text-based interpreted language able to 
cater to people in their own tongue the way Rebol can.
Ladislav
26-Jun-2010
[556x2]
Fork, you are right, that REBOL allows internationalization. Problem 
is, that there actually is no demand for internationalization of 
the Do dialect, so it would make sense mainly in other dialects.
Since English is not my native language, I have experiences with 
internationalization myself dating back to 1978, but the main result 
is, that such languages as the Do dialect e.g. are better when not 
internationalized.
Gabriele
27-Jun-2010
[558]
I agree with Brian and Ladislav that "internationalization" of a 
programming language makes no sense at all. Not sure why only some 
americans think it does. :-) ALIAS may not be there in R3 but I'm 
not sure why you should be worried about R3 at this point; but in 
that case you can do the compilation on R3 and use ALIAS in R2, so 
I don't see it as a big issue even if you want to worry about R3. 
:)
Fork
27-Jun-2010
[559x4]
If the existing Rebol community thought it was useful to create a 
localized version of Rebol, you probably would have done it by now. 
 Because it wouldn't be hard.
My point is, it wouldn't hurt anything in the existing ecosystem 
and who knows, maybe it would take off in China or wherever and create 
a new market.
Like I say about web pages which have chinese characters in them... 
Google doesn't prohibit them or not index them.  It knows not to 
show them to you unless you ask, if you don't speak Chinese.  Or 
they translate it.  With the kind of thinking you're promoting, you'd 
just say "they should write in English, that makes the world more 
compatible."
Is it worse to have a Chinese programming ecosystem out there which 
you don't draw code from, or to have them all writing in Perl and 
Ruby and Python?
Gabriele
27-Jun-2010
[563x3]
hmm, AFAIK, the reason Carl wanted to remove ALIAS is that in 10 
years of R2 nobody ever really used it except to show what it can 
do.
so I don't think anyone is "against" a localized rebol, it's just 
that noone is really interested in that. what happens is you start 
playing with it and think it's cool but you never actually use it 
(i did play with an italian version of REBOL in 1999 or something 
like that).
ie. ALIAS is solving a problem that nobody has.
Fork
27-Jun-2010
[566x3]
I think there's a big gap between the usefulness of a spanish or 
Italian localization and a chinese localization.
If Alias permits one to set up word equivalencies, then it's solving 
a problem I have with Rebmu.
(Which I will again say is not some kind of joke.  It is trying to 
position Rebol as the leader in Code Golf, and I'm tuning it so that 
knowledge transfer with Rebol is as good as it can get.  Random example: 
I did some tweaking so that now first+ isn't FP anymore, it's F+ 
and all the functions which end in "+" are understood as being in 
the family of those which modify their arguments.  A+ FOO BAR is 
understood to add foo to bar and store the result in foo, for example.)
Steeve
27-Jun-2010
[569]
You will reinvent FORTH if you continue :)
Fork
27-Jun-2010
[570x5]
Also I changed AN for AND~ and OO for OR~ into "a~" and "o~", thus 
keeping consistency with the Rebol notation for prefix operations, 
because the prefix ones are the ones that make sense in character 
count minimization.  I'm bending and thinking of what makes those 
look common and came up with "n~" for NOT, even though Rebol doesn't 
have a tilde after prefix NOT (since there's no infix not).  So it's 
a balance of consistency.
@Steeve ... but look at the "Doomsday Clock" modification to my hourglass 
solution
http://stackoverflow.com/questions/1683857/code-golf-hourglass/3110684#3110684
The "oh, and another thing..." part of supersetting the Rebol by 
staying pure to the dialect rules is the baby in all this bathwater. 
 That's what will blow people's minds.  I'm only scratching the surface 
there because I'm still working out the kinks.
But by comparison, look at the ridiculous "Golfscript" solution which 
has to resort to shell scripting to loop the "stdin": http://stackoverflow.com/questions/1683857/code-golf-hourglass/1687686#1687686