World: r3wp
[Core] Discuss core issues
older newer | first last |
[unknown: 5] 13-Jan-2008 [8996] | but could B be used if needed |
Henrik 13-Jan-2008 [8997x2] | inside the function? |
I haven't tested, but perhaps you can test for 'value? | |
[unknown: 5] 13-Jan-2008 [8999x3] | yes |
that might work Henrick, I'm trying a few things now. | |
Yep that will work. Thanks Henrik | |
Henrik 13-Jan-2008 [9002] | no problem |
amacleod 13-Jan-2008 [9003] | Thanks, Anton. I think it is just what I'm looking for. |
Anton 13-Jan-2008 [9004] | no worries. |
Oldes 14-Jan-2008 [9005x2] | Is there any script which can convert for example -1.8E-5 to -0.000018 ? |
formDecimal: func[ number [decimal!] digits [integer!] /local negative? p result ][ if digits <= 0 [return form to-integer 0.5 + number] if negative?: number < 0 [number: - number] p: power 10 digits result: form to-integer number * p + 0.5 if number < 1 [ insert/dup result "0" (1 + digits - length? result) ] if negative? [ insert result "-" ] head insert skip tail result negate digits #"." ] | |
Graham 14-Jan-2008 [9007] | should have a native that does this |
Gregg 15-Jan-2008 [9008] | There was an old one from Eric Long, that might be in REBOL.org. I don't think I ever tackled that with my FORMAT function. |
Gabriele 16-Jan-2008 [9009] | i have one i've used for a long time too... also adds ' every three digits... i added support for scientific notation recently (because form always gives sci notation on Wine) |
Henrik 24-Jan-2008 [9010] | how is it again that I can rebind a function to a different context? |
Anton 25-Jan-2008 [9011] | >> c1: context [var: "orig" f: func [][print var]] >> c1/f orig >> c2: context [var: "hello"] >> bind second get in c1 'f c2 == [print var] >> c1/f hello |
Henrik 25-Jan-2008 [9012x4] | it seems not to work, if the function starts out as global |
>> a: does [print b] >> c: make object! [b: 4] >> a ** Script Error: b has no value ** Where: a ** Near: print b >> bind second :a 'c == [print b] >> a ** Script Error: b has no value ** Where: a ** Near: print b | |
solved with: bind second :a c | |
thanks, Anton | |
[unknown: 5] 25-Jan-2008 [9016] | Can someone explain the reason why bind would work but bind/copy wouldn't? |
BrianH 25-Jan-2008 [9017x2] | You don't rebind the function, you rebind its code block - not quite the same thing. Bind/copy wouldn't work because it creates a copy rather than rebinding the original block. You can alter the contents of the code block of a (R2) function, but you can't change the function's reference to that block to point to another block. |
If you can create a new function, you can use bind/copy. It is occasionally possible to arrange your algorithm so that it is possible to replace a function without worrying about aliased references, but usually not. | |
[unknown: 5] 25-Jan-2008 [9019] | yeah I understand that but why would bind/copy ever fail where bind itself worked? |
Anton 25-Jan-2008 [9020] | bind/copy goes deep. |
[unknown: 5] 25-Jan-2008 [9021x2] | yeah |
shouldn't it still work regardless | |
Anton 25-Jan-2008 [9023] | I think I remember, bind/copy is just a short equivalent to bind copy/deep. |
[unknown: 5] 25-Jan-2008 [9024] | but if bind works and then you try the same code with bind/copy should it cause an error? |
Anton 25-Jan-2008 [9025] | Just used when you don't want to modify the bindings of the original. |
[unknown: 5] 25-Jan-2008 [9026] | yeah that is the way I understand it also which is why it suprised me in my code that bind works but when I simply add bind/copy in then it breaks the code. |
Anton 25-Jan-2008 [9027x2] | Well, probably no error straight after binding, but if some other code rebinds it perhaps causes error later. |
It depends on the situation. What is the situation you are in ? | |
[unknown: 5] 25-Jan-2008 [9029] | yeah that might be it |
btiffin 30-Jan-2008 [9030] | What is the deal with mod and modulo? What should mod 10 3 mod 10 -3 mod -10 3 mod -10 -3 return? Not what REBOL returns ... what's the math of it supposed to be. I accept 1 and 2, but -4 (mod -10 -3) freaks me out. I don't use mod very often (and never with negative divisors or dividends), but it came up in a conversation with some student programmers (and I'm trying to convince them to give REBOL a try). |
Anton 31-Jan-2008 [9031x2] | http://en.wikipedia.org/wiki/Modulo_operation |
There is no single definition. | |
Tomc 31-Jan-2008 [9033] | I do not have a mental model of what a modulo < 2 could be never mind less than zero. until is has an accepted definition in mathematics programming languages ought steer clear |
btiffin 31-Jan-2008 [9034] | Thanks. I just needed to source mod to see where it was coming from. REBOL's mod does make mathematical sense, just needed to get my head round it. Things like mod -10 -11 being -21. And Tom, yep. :) But I think I've grown to like REBOL's definition. And I would expect anyone that needs negative divisors for a modulo calculation will understand the implications. |
Oldes 31-Jan-2008 [9035x3] | >> ?? mod mod: func [ "Compute a nonnegative remainder of A divided by B." [catch] a [number! money! time!] b [number! money! time!] "Must be nonzero." /local r ][ all [negative? r: a // b r: r + b] a: abs a either all [a + r = (a + b) positive? r + r - b] [r - b] [r] ] >> ?? modulo modulo: func [ {Wrapper for MOD that handles errors like REMAINDER. Negligible ^-^-values (compared to A and B) are rounded to zero.} [catch] a [number! money! time!] b [number! money! time!] "Absolute value will be used" /local r ][ throw-on-error [ any [number? a b: make a b] r: mod a abs b either any [a - r = a r + b = b] [make r 0] [r] ] ] |
? // USAGE: value1 // value2 DESCRIPTION: Returns the remainder of first value divided by second. // is an op value. ARGUMENTS: value1 -- (Type: number pair char money time tuple) value2 -- (Type: number pair char money time tuple) so: -10 // -3 == -1 | |
the // is same like the mod(a, n) = a - n * floor(a / n) (from the Wiki page above) | |
Gregg 31-Jan-2008 [9038] | Ladislav spent a lot of time, and much discussion was had, on those functions. |
btiffin 31-Jan-2008 [9039] | Yeah, I've grown to like the REBOL definitions since yesterday. :) |
Pavel 8-Feb-2008 [9040x3] | To Oldes, any way to create general event (not gui) port? And create on demand events (fire and receive). Can such a port be global accesible to independent rebol processes? Can some scheme solve this? |
Must this be a TCP port? | |
Or can it be memory to memory somehow? | |
Oldes 8-Feb-2008 [9043x2] | I don't think it can be memory to memory between independent processes. |
Maybe the system port could be used, but I'm not sure. | |
Henrik 8-Feb-2008 [9045] | the easiest way is via TCP or a file, I think |
older newer | first last |