World: r3wp
[Rebol School] Rebol School
older newer | first last |
Graham 1-Jan-2010 [2862x3] | Andreas helped me today to debug the vanilla issue that was causing a server error for most pages ... |
http://www.compkarori.com/vanilla/ | |
Basically the data about the user Graham was set to a zero byte file when my site was hacked .. and vanilla looks at the user file when it displays a snip authored by that user. It was unable to load this data causing an error, and since I authored many of the snips, it caused most of the site to go down. | |
PatrickP61 7-Mar-2010 [2865x5] | Question: I'd like to define a function that essentially prints out a stored message like this: |
debug?: on | |
debug: func [a] [print a] | |
but I want it to print only when debug? is on. Since debug? is outside of the function, how can I define it so that it checks this value before printing a | |
debug: funct [a] [if debug? print a] | |
Steeve 7-Mar-2010 [2870x2] | Kidding ? |
debug: funct [a] [if debug? [print a]] | |
PatrickP61 7-Mar-2010 [2872] | Hi Steeve, it doesnt work. If debug? is on or off, it still prints a |
Steeve 7-Mar-2010 [2873] | hmm... |
PatrickP61 7-Mar-2010 [2874x2] | oops I made a mistake |
Sorry steve, You were right, I did a typo on my test. Thank you | |
BrianH 7-Mar-2010 [2876] | And you don't need funct here because there are no locals (though it's a cool function) :) |
PatrickP61 7-Mar-2010 [2877] | So the main difference between FUNC and FUNCT is that variables outside of the function can be referenced ... right? |
Steeve 7-Mar-2010 [2878x2] | not exactly |
funct "Defines a function with all set-words as locals" | |
Henrik 7-Mar-2010 [2880] | so you don't have to write func [/local blahblah]... |
PatrickP61 7-Mar-2010 [2881] | to clarify, locals is all variables that is local to the main script, outside of the function. Is that a good way to describe it? |
Steeve 7-Mar-2010 [2882x2] | no :) |
actually it's the revese, those ones are called 'global | |
BrianH 7-Mar-2010 [2884] | All variables that are local to the function itself. |
PatrickP61 7-Mar-2010 [2885] | I see -- got my terminology mixed up |
BrianH 7-Mar-2010 [2886] | Look at the source of FUNCT, it's a good lesson on function creation tricks. And compare the R2 and R3 versions. |
PatrickP61 7-Mar-2010 [2887] | will do -- thank you very much |
BrianH 7-Mar-2010 [2888] | The source in DevBase has some comments that help explain things a bit, so you might start there. |
PatrickP61 7-Mar-2010 [2889] | I'm an old mainframe cobol kind of guy, and I trying to setup something that resembles the perform statement: debug?: on perform: funct [paragraph] [ if debug? [print form ["para " paragraph]] ;<-- when debug? is on, the paragraph name will be printed before it is "performed" do paragraph ] a000-mainline: perform b100-init perform b200-term b100-init: print "init" b200-term: print "term" perform a000-mainline halt expected results: para a000-mainline para b100-init init para b200-term term halt my intention is to define each paragraph and then "perform" them. But I haven't figured it out yet. |
Steeve 7-Mar-2010 [2890] | Houston, you've got a problem |
BrianH 7-Mar-2010 [2891] | The FORM is unnecessary. |
Steeve 7-Mar-2010 [2892x2] | you need to wrap your lines in some blocks |
a000-mainline: [ perform b100-init perform b200-term ] b100-init: [print "init"] b200-term: [print "term"] perform a000-mainline halt | |
PatrickP61 7-Mar-2010 [2894x2] | Stupid me -- of course!!! |
if debug? [print "para " paragraph] <-- this isn't working just right. I only get "para" and nothing after that when I expect the paragraph name to be printed. Do I need mold or something like that? | |
Steeve 7-Mar-2010 [2896] | be carefull with the typo perform: funct ['paragraph] [ if debug? [print ["para " paragraph]] do get paragraph ] |
BrianH 7-Mar-2010 [2897] | And you can use FUNC here instead of FUNCT. FUNCT has more definition-time overhead. |
PatrickP61 7-Mar-2010 [2898] | Perfect!!! -- Thank you again. I didn't know about the GET function |
Steeve 7-Mar-2010 [2899] | it'll be 10 $ |
PatrickP61 7-Mar-2010 [2900x2] | Thank you again Steeve and BrianH. Now it is so easy for me to just set the DEBUG? value and see my script being executed! |
Only $10 -- you got it. maybe I can buy you a round or two if we ever get at a DevCon!!! | |
BrianH 7-Mar-2010 [2902] | Notice the use of the lit-word calling convention in the PERFORM function: This passes the word unevaluated and lets you get from it later. |
PatrickP61 7-Mar-2010 [2903] | There is so much to learn from you guys! :-) |
Steeve 7-Mar-2010 [2904x3] | Or you can lend them on my Pokerstar's account :) |
Jeez, i run bad currently | |
I should code instead, i'm better at that | |
PatrickP61 7-Mar-2010 [2907x2] | What is the best way to determine the number of seconds that has occurred between two timestamps? I want to determine that offset, then apply it to another timestamp and then get a new timestamp. ex: ts-bgn: 01-jan-2001/01:01:01 ts-end: 02-mar-2004/05:06:07 ts-offset: ts-end - ts-bgn I am hoping to get the difference in the number of days, and the number of hours, minutes, seconds. but I only get the number of days 1156 Is it possible to get a fraction of a day that is accurate enough to the second? ts-offset: to-decimal (ts-end - ts-bgn) This gives 1156.0 which is not right. Any ideas? |
I tried to-time, but I get an error message ts-offset: to-time ts-end - to-time ts-bgn ** Script error: cannot MAKE/TO time! from: 1-Jan-2001/1:01:01 ** Where: to to-time ** Near: to time! :value Is this error because the number of seconds would be so extremely high due to the number of days included? | |
Izkata 8-Mar-2010 [2909] | Here you go: >> difference 02-mar-2004/05:06:07 01-jan-2001/01:01:01 == 27748:05:06 |
PatrickP61 8-Mar-2010 [2910] | sweet!!! -- Thank you Izkata. :-) |
Reichart 8-Mar-2010 [2911] | Patrick REBOL has a LOT of words (functions). It really is worth it to just read all of them (even quickly) it is a lot of fun, and realize the amazing depth of it. When I get a new peice of software (or even hardware) I simply read the whole manual from front to back. I know I might not understand it all that way, BUT, I then at least know what it does, and what it does not do. It is sort of like walking around a new house quickly. You might not remember where everything is, but you mind keeps working even afterward, helping you fill things in. |
older newer | first last |