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
9-Jan-2010
[437x6]
Implementation gets trickier if you're parsing urls, and you're impinging 
on the URL type at that point, which is an any-string and thus does 
give meaning to case.
My goal was to only muck with words, which Rebol binding has promised 
to ignore
Er, ignore case
There are other issues:
>> 'A:B
** Syntax error: invalid "word-lit" -- "A:B"
** Near: (line 1) 'A:B
>> 'AB:      
** Syntax error: invalid "word-lit" -- "'AB:"
** Near: (line 1) 'AB:
Steeve
9-Jan-2010
[443]
hey ! your parser is the weak point, it seems :-)
Fork
9-Jan-2010
[444x4]
>> unmush ['aB]
== ['a b:]
>> unmush ['aB]
== ['a b:]
That's the Rebol parser.  I'm not taking strings as input, I'm taking 
Rebol blocks.  It's a dialect.
If I were taking strings, sky's the limit... but, what's the point?
Steeve
9-Jan-2010
[448]
it doesn't bother, parse has not the limitations you pointed
Fork
9-Jan-2010
[449x2]
>> parse ['AB:] [to end]
** Syntax error: invalid "word-lit" -- "'AB:"
** Near: (line 1) parse ['AB:] [to end]
>> parse {'AB:} [to end]
== true
Steeve
9-Jan-2010
[451x2]
what is the interest to try to construct something which has no sense 
in Rebol
'AB: has no meaning
Fork
9-Jan-2010
[453x4]
I'm just playing devil's advocate for your suggestion to go putting 
colons in the input when the goal is to minimize source representation.
I showed you my answer to get ['a b:] in a brief notation
>> unmush ['aB]
== ['a b:]
From 5 chars down to 3, and it's legal to the Rebol parser.
Steeve
9-Jan-2010
[457x2]
ok i understand, i just proposed to avthe burden caused by a safe 
alternance of letter's casing
avthe=avoid
Sunanda
9-Jan-2010
[459]
Following some thoughts of Christoph Budzinski back in December, 
I wrote a short article on an approach to REBOL code golf last month......It 
takes quite a different approach to yours. But as it was never published, 
your approach must have priority :)

What I suggested in the article was:


  1. we create a private group here to thrash out the principles and 
  practicesl then launch a set of REBOL code golf challenges


  2. current code golf is seriously flawed as it counts characters 
  not lexical elements:
        variable1: variable1 + variable2
       is much better  code than:
         v1: v1 + v2
       and should have the same golf score

3. in REBOL, the First Rule of Code Golf is:
       Parse always wins

  (this has been empirically observed over many REBOL code challenges)
Fork
9-Jan-2010
[460]
Well, I understand the concern, but I didn't do it just to be weird. 
 :)
Steeve
9-Jan-2010
[461]
only to save ":" what a tremendeous gain !!! :-)
Fork
9-Jan-2010
[462]
Stevee: But my point is you're forgetting the spaces, which are needed 
too, since colons cannot appear in words.
Steeve
9-Jan-2010
[463]
i agree for saving spaces
Fork
9-Jan-2010
[464x6]
Look at the Roman Numerals program [rSfeCs[Nse[i1v5x10l50c100d500m1000]twCi~J[JnCN]Kk+elJn[alN-j 
N0]'jJn]pK+j]
Then look at what it unmushes to:
[r s fe c s [n: se [i 1 v 5 x 10 l 50 c 100 d 500 m 1000] tw c i 
~ j [j: n cn] k: k + el j n [al n - j n: 0] 'j j: n] p k + j]
Saves 40%.  The colons and the spaces are intertwined issues, just 
due to the rules of Rebol.  And I feel that if the dialect wasn't 
parseable Rebol but a string it wouldn't rightfully be called a Rebol 
dialect.
Sunanda: Rebol definitely could get some publicity with empathetic 
people if it were to embrace the code golfers...
Sunanda: I feel from my experience with parse that it's the sort 
of thing that can, if it fits your problem, help you a great deal... 
but it often seems to be just short of the needed functionality. 
 I feel if your task does not depend on knowing the true/false result 
of matching, then series operations are often better.  I've been 
thinking "if you don't use the boolean result of parse, you probably 
aren't working on a task that needs parse."
Steeve
9-Jan-2010
[470]
Generally Rebolers don"t make any difference with dialects parsing 
a string or a loaded block. It's called dialect as-well.
Sunanda
9-Jan-2010
[471]
My other main article point was:

  4. Real golf has 18 holes per round. Most code golf plays just one 
  hole. To be more realistic, there should be at least three holes 
  -- ie after the first hole's scores are published, the challenge 
  setter makes a modification to the challenge. Scores for that hole 
  are (somehow) equated to the amount of original code the survives.
Fork
9-Jan-2010
[472x3]
5. you do not bring your sony robot, night vision goggles, laser 
guidance systems, etc. onto the golf course.  You bring a bag of 
sticks and you use your own arm, eyes, and brain.
Obviously people who do code golf come to it from different perspectives, 
I think Rebol's key here is just to engage by giving lively and flexible 
solutions which pique interest.  I intentionally didn't clone the 
deranged "winner" of the roman numeral contest because he'd thrown 
out the program logic, it was no longer source code.  I can edit, 
debug, and insert probe messages into mine easily.
>> rebmu [rSfeCs[Nse[i1v5x10l50c100d500m1000]twC (probe n) i~J[JnCN]Kk+elJn[alN-j 
N0]'jJn]pK+j] 
Input String: XIV
10
1
5
14
Steeve
9-Jan-2010
[475]
REBIRDY would be a better suitable name for your dialect ;-)
Fork
9-Jan-2010
[476x2]
I think of it as "rebol mooshed" or "rebol microscopic" or "rebol 
please unask this development method" :)
What Rebol can do is solve the problem and then do a coup-de-grace, 
like upload the results to a web server or something crazy like that.
Steeve
9-Jan-2010
[478x2]
well,  do you play Golf or not ?
at least, make a birdy
Fork
9-Jan-2010
[480]
Just of the code kind...and given Tiger Woods latest publicity I 
think I'll steer clear for now of the real sport :)
Steeve
9-Jan-2010
[481]
is the return carriage counted as a char or not ?
Fork
9-Jan-2010
[482]
Not unless it's part of the program function (e.g. you use it in 
a multi-line character constant bounded by braces to get a carriage 
return in your target program)
Steeve
9-Jan-2010
[483]
so you could use returns to replace closing square brackets for example, 
saving more chars
Fork
9-Jan-2010
[484x2]
Sunanda: The idea of a minor modification to the challenge and seeing 
what that does to the program is a good one; I would do that with 
interview candidates who knew the "right" solution to a problem (due 
to studying or seeing it before)... just introduce some whimsical 
constraint they hadn't memorized...
I think the second commandment is my favorite: "Thou shalt not worship 
graven images."  :)
Henrik
9-Jan-2010
[486]
Could an offshoot of this be a method for thumb coding? I'd love 
an app for phones which allow you to write code solely with your 
thumb.