World: r3wp
[Core] Discuss core issues
older newer | first last |
BrianH 19-Jun-2010 [17100] | Yeah, something like that. I added a question about using words instead of strings. |
Ladislav 19-Jun-2010 [17101] | so, I have to insist, that everybody using strings instead of words deserves every disaster he gets for not adhering to documented "best practices" |
BrianH 19-Jun-2010 [17102] | Those who don't use LOAD are condemned to reinvent it, badly :) |
Fork 19-Jun-2010 [17103x2] | Has to do with implementation of this function: http://github.com/hostilefork/Rebmu/blob/master/rebmu.r#L448 |
Instead of [REMAP-DATATYPE email! email? "em"] I'd like [REMAP-DATATYPE email! "em"], but was confounded in trying to figure out how to write a version of that which worked reliably. | |
Ladislav 20-Jun-2010 [17105x2] | just BTW, an expression like is-email-addr: get bind load "email?" bind? 'system can be expressed using a shorter form is-email-addr: get bind load "email?" 'system |
, which is, in fact, the same, as: is-email-addr: get load "email?" | |
Graham 22-Jun-2010 [17107x3] | this is something curious I just noticed. If you pass a file as a parameter to a rebol program on the dos command line it works but if you do the same in a dos batch file, it does not |
eg:. script.exe %/c/rebol/myfile.dat works from the dos command line but to get it to work in a batch file you have to do this script.exe %%/c/rebol/myfile.dat | |
I presume it's because the command processor tries to do a substitution using the % | |
Anton 23-Jun-2010 [17110] | That would be it. |
DideC 24-Jun-2010 [17111] | % is the variable begin/end tag. ie: C:\> set directory=c:\windows C:\> dir %directory% But in batch file, it's also the begin tag for a "number" variable equal to the n'th parameter of the script. %1 for first param, %2 for second... ie: C:\> type mybatch.bat dir %1 C:\> mybatch.bat c:\windows |
Graham 24-Jun-2010 [17112] | So, is there any other way to escape the % ? |
DideC 24-Jun-2010 [17113] | I though escape char was ^, so let's try "^%" |
Graham 24-Jun-2010 [17114x2] | Not in a batch file .. doesn't work |
that's the Rebol escape char | |
Fork 24-Jun-2010 [17116x2] | http://tinyurl.com/3amb3zh:) |
%% is a typical answer, since doubling the escape/meta character is usually sensible. Well, to the extent that batch files are sensible. | |
Graham 24-Jun-2010 [17118] | I guess it was a good guess then :) |
Oldes 25-Jun-2010 [17119] | >> f: func[][ print "kuk" make error! "bla"] f kuk ** User Error: bla ** Near: make error! "bla" Is there any way how to get something more useful in the "Near:" part of the user error? |
Sunanda 25-Jun-2010 [17120] | This will get you a "near f" message and an arg1 code of 404, but not an error of type 'user --- is that more useful? f: func[][ print "kuk" make error! 404] if error? bad: try [f] [probe disarm bad] |
Oldes 25-Jun-2010 [17121] | no... it isn't. the neer is again just [make error! 404] |
Sunanda 25-Jun-2010 [17122] | Sorry....my mistake. 'near is '[make error] as before but 'where is 'f (rather than none) So _slightly_ more useful? |
Oldes 25-Jun-2010 [17123] | Yes.. that's true.. but in real life I need more complex message instead of "bla" |
Sunanda 25-Jun-2010 [17124] | f: func[][ print "kuk" make error! ["complex" 9999]] f 'where gives you 'f 'near gives you a whole block -- lots of room for a complex message :) |
Oldes 25-Jun-2010 [17125x4] | it's not so easy as it does not allow to add some variables... for example: >> f: func[][ val: random 10000 make error! reduce ["complex" val]] f ** Script Error: Invalid argument: complex ** Where: f ** Near: make error! reduce ["complex" val] |
>> f: func[][ val: random 10000 err: reduce ["complex" val] make error! err] f ** Script Error: Invalid argument: complex ** Where: f ** Near: make error! err | |
I use: >> f: func[][ val: random 10000 make error! reform ["complex" val]] f ** User Error: complex 7367 ** Near: make error! reform ["complex" val] but would like to change the neer to place where the f is called | |
but maybe the user defined errors are not suitable for that | |
Maxim 25-Jun-2010 [17129x3] | you can use an object spec block to define errors, but you have to know proper codes or else the error won't build itself. |
is there a way to get access to the main script's header within code you execute using 'DO when I do %source.r and source.r defined as: print system/script/header/title I get the title of the source.r file... not the main script. | |
well after a little bit of screwing around I came up with this function: ;----------------- ;- get-application-title() ;----------------- get-application-title: func [ /local script parent ][ parent: system/script until [ script: parent parent: script/parent none? parent/header ] script/title ] | |
Ladislav 25-Jun-2010 [17132] | f: func[[catch]][print "kuk" throw make error! "bla"] f |
Fork 25-Jun-2010 [17133x2] | >> add 10 50% == 10.5 |
Hmm, I find that a little disappointing, it would seem that if one is going to bother having a special datatype for percent it would come out as 15. | |
Maxim 25-Jun-2010 [17135] | percents represent the amount, its not just an alternate notation for decimal, like tags for strings. |
BrianH 25-Jun-2010 [17136] | You are missing a multiplication. |
Fork 25-Jun-2010 [17137] | Well, I know, but I just mean that if functions can detect what types they get then making [add (something) (percent)] do the same thing as [add (something) to-decimal percent] seems a little less exciting than if it "knew what you meant". There's sort of a dimensional analysis thing... adding integers and percents doesn't make a lot of semantic sense unless you're speaking about adding a number to a percentage of itself. |
Rebolek 25-Jun-2010 [17138] | There was very long debate on this, when percents were implemented and this is the result and you should have to live with it. |
BrianH 25-Jun-2010 [17139x2] | Well, you are assuming that 10 is what the 50% was supposed to apply to. REBOL can't make that assumption - it has to do whatyou tell it to do, not what you want it to do. |
Unless you want all numeric operations on the percent! type to include implicit multiplication. | |
Fork 25-Jun-2010 [17141] | http://www.wolframalpha.com/input/?i=10+%2B+50%25 |
Rebolek 25-Jun-2010 [17142] | Yes, Fork told REBOL to add 50% to 10. And result is 10.5 ... |
Fork 25-Jun-2010 [17143x2] | OTOH: http://www.google.com/search?hl=en&source=hp&q=10+%2B+50%25&aq=f&aqi=h1g10&aql=&oq=&gs_rfai= |
But if you asked me whether to go to Google Calculator or Wolfram Alpha as the source for mathematical intuition, I'd choose the latter myself. | |
BrianH 25-Jun-2010 [17145] | Yes, but he told to add 50% of what to 10? That's the missing multiplication. |
Fork 25-Jun-2010 [17146] | It's an issue of mathematical intuition, which I do believe is established. "That'll be 19.99... plus 12 percent tax" |
BrianH 25-Jun-2010 [17147] | Hey, it's early enough, make a proposal and submit it to CureCode. Be sure to check first to see if it's already there though. |
Fork 25-Jun-2010 [17148x2] | Well it doesn't matter all that much, easy enough to work around. I just wish Rebol showcased a bit more of its ability to have the cross product of behavior across types in examples where people would go "whoa, how'd it do that?" then... "oh, I see..." |
One decision that I used to not think much of one way or another which I now really think is important is the idea that "none" is false? while 0 is not. | |
older newer | first last |