World: r3wp
[Dialects] Questions about how to create dialects
older newer | first last |
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. |
Fork 9-Jan-2010 [487x5] | I don't know that I'd propose this for anything other than code golf. Its saving grace is that it doesn't screw up Rebol or its legal syntax for dialects, while making it quite competitive in such contests. |
The fact that you can read and write it without assistive technology is good, but you'd certainly prefer to use the normal syntax. | |
I'd put as a challenge to the Rebol community to refine Rebmu (or a similar syntax) to the point where they can submit an answer to code golf challenges that demonstrates some awesome feature of Rebol while still being in striking distance of the "winning" answer. I thought that perhaps showing Rebol 3.0 extending the roman numeral system to support higher order numerals than 1000 through unicode characters for M with a bar over it, etc. would be a good one. | |
(refer to http://en.wikipedia.org/wiki/Roman_numerals#Symbols) | |
The punch line being the one Sunanda alludes to: Rebol can play this game as well as languages designed to play *only* this game, but that's just the tip of the iceberg. | |
Steeve 9-Jan-2010 [492] | btw, what is the sourc of the roman-num function you use "in clear" |
Fork 9-Jan-2010 [493] | Stevee: Hm? I don't know what you are referring to. I wrote the roman numeral function from scratch, in a fairly naive way. |
Steeve 9-Jan-2010 [494] | don't play dumb :-) |
Fork 9-Jan-2010 [495] | Nope, not playing. I didnt spend much time on the roman numeral function, it's incidental. Those code golfers were tweaking, I was writing plain and simple code. What do you mean "roman-num"? |
Steeve 9-Jan-2010 [496] | actually i would like to see your example in plain rebol. |
Fork 9-Jan-2010 [497x4] | ; The following initial declarations are implicit ; k: 0 ; j: 0 ; s: "" ; readin senses the type of the argument and fulfills that from input readin-mu s foreach c s [ ; n is the current digit value n: select [ i 1 v 5 x 10 l 50 c 100 d 500 m 1000 ] to-word-mu c ; if previous digit value is zero ; capture current digit and continue ; inversion is like not but supports 0 as false if inversion-mu j [ j: n continue ] ; based on whether the previous digit value is ; less than the current one, we decide what to ; add to the total. If we need subtract the ; previous digit then we also carry over the ; current digit into the next addition k: k + either-lesser?-mu j n [also n - j n: 0] [j] ; save current digit as the previous digit ; (note that it is possibly zero) k: n ] ; if lingering previous value is not zero ; it will be added here k + j |
I was contemplating the good and bad of a "mush" function, and I think I'm against it, because it undermines my point--namely that you should be able to write this code without assistance from a tool. | |
But I'm on the fence. Commenting is too important, and if you can't comment code and have it not count against your golf score something is wrong. | |
The only "new" trick for me in writing the above was ALSO. BrianH clued me into it this week when he used it adapting my proposal for correcting the object none leak: http://rebol.net/wiki/Talk:Scoping_in_Rebol | |
Steeve 9-Jan-2010 [501x2] | something wrong in your code (although i didn't test it) |
k: k + ... k: n k always erased with n | |
Fork 9-Jan-2010 [503x6] | Stevee: good catch, the commented version is not in sync with the decompiled version (as I said, day 1 of this, lots of back and forth). If you run unmush you get: |
>> unmush/deep [rSfeCs[Nse[i1v5x10l50c100d500m1000]twCi~J[JnCN]Kk+elJn[alN-j N0]'jJn]pK+j] == [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] | |
So there are some k's in the commented version that should be js. So it is when you're trying to maintain a document in wordpress. :( | |
Okay maybe just one k. Reason is I reformed the spec so that n, j, k were default defined to 0 as integers and had a rewrite in the middle. | |
I also changed continue's shortcut from CO to CN because I wanted CO for compose. Every time you change something it wrecks everything. I know text files have their... um... way. But I still want computers to step up to the plate and give every reference a UUID. Someday... | |
Saw some posts to the Rebol list about Intentional Programming, I still have hopes. | |
Fork 13-Jan-2010 [509] | Rebmu now has a fledgling homepage/logo/rationale: http://hostilefork.com/rebmu/ |
Graham 13-Jan-2010 [510] | Basic had one letter variables |
Fork 13-Jan-2010 [511x5] | Well, Rebmu has a set of starting definitions for one letter things. So s starts out as the empty string, i starts out as IF. You can redefine these things. |
And of course, you can use multiple characters whenever you so wish, even using the full Rebol words for things. | |
I've had some internal debates on questions like whether LN should be LENGTH? or if I should make any Rebol identifier that ends in a ? also have a ? in it. These are some tricky questions, but on that particular decision (for instance) I've decided that the ? in the name is something important to keep. | |
I'm also thinking that it's better to use three-letters for things rather than use letter combinations that don't make sense. If you run out of things RE can be (RETURN, REJOIN, REPEND, etc.) then the answer is not to pick one and make it RZ for no reason... but to pick the least likely to use in code golf and go to three letters. If this is a problem for any particular challenge they can just write (for instance) Rrej at the beginning of the code and then have a shorthand. | |
Of course to make that worth it you would have to use rej more than twice: rejREJ = RrejRr :) | |
Reichart 13-Jan-2010 [516] | I recall a childrens book from England when I was a child where each of the cartoon children in the book spoke in mostly single letters, it was something like: Boy - I C U Girl - I C U 2 Boy - R U HP Girl - I M HP Boy - U R A QT It was a bit silly, but well made, and they had some MUCH BETTER tricks of this than I have given from memory. |
Sunanda 13-Jan-2010 [517] | Never knew it as a kid's game, but the Two Ronnies spun it into a TV sketch: http://www2.prestel.co.uk/cello/swedish.htm |
Chris 4-Mar-2010 [518x4] | I'm rethinking the behaviour of my 'import dialect (library: http://bit.ly/rebimport ) when working with structured data. At it's simplest form, 'import filters a block of key-string pairs based on a supplied set of constraints: import [a "1"][a: integer! is more-than 0] == [a 1] ; or none if the constraints are not met There are two nested forms I'd like to support: 1) a continuation of key-value blocks [a [b "1"]] and 2) a block of values [c ["b" "1" "foo"]] The first could just be a recursive function or parse call. The second needs a little more thought - on the face of it, it could just verify the contents conform to a preset group: [ ["a" "b"] contains some of ["a" "b" "c"] ] (or any of), which'd be fine for validating web form input (eg. multi-select list), but would rule out, say, a JSON block containing objects (as key-value pairs). I'm trying to figure out if this is overkill or a genuinely useful way of validating structured data... Then there's ["1" "2" "3"] <- be nice to validate as [some integer!] or [some integer! | decimal!]. I don't want it to be overly complex, but it should at least be useful - anyone have any conventional cases for validating a block of strings? |
I should clarify that this is mainly used for validating user input. | |
For example ["1" "20" "46"] might represent options where input requested integers between 1 and 50. Successful validation would return [1 20 46] whereas ["1" "foo"] would fail as foo is not an integer. | |
import [opts ["1" "20" "46"]][opts: block! [integer! is between 1 50]] | |
Anton 27-May-2010 [522] | I'm doing a filtering dialect facing similar problems. Examples: [msg-id] = [ 10 .. 50 ] ; msg-id must be between 10 and 50. [msg-id] = [ .. 50 ] ; msg-id must be any number up to 50. [msg-id] = [ 50 .. ] ; msg-id must be 50 or beyond. [group] = [ "Dialects" ] ; group name must be "Dialects" [msg] = [ .. "import" .. ] ; message text must contain "import" [msg] = [ all [[ .. "import" .. ] [ .. "dialect" .. ] ] ] ; message text must contain "import" AND also contain "dialect". [user] = [any [ "Chris" "Anton" ] ] ; user name must be any of "Chris" or "Anton" |
Fork 18-Jun-2010 [523x3] | A "code golf" question on StackOverflow caught my attention yesterday, and especially the frustrating ability of perl to win these competitions with utterly disgusting code which is unmodifiable with the slightest change in spec motivated me to resurrect my rebol dialect for code golfing. |
My goal is to write "obvious" code in the Rebmu dialect which defines primitives and has structure that makes the perl stuff look like the backwards garbage it is, and still beat them on character count. | |
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 | |
older newer | first last |