World: r3wp
[Core] Discuss core issues
older newer | first last |
Gabriele 26-May-2011 [1519] | Geomol, that's very useful if you want to count the number of arguments of a function etc. - think of it as a pre-parsed function spec. |
Geomol 26-May-2011 [1520] | Yes, I see the benefit. I was just wondering, if it was actually used. I guess, you used it somewhere? :) If used, would it be more logical to have FIRST return the spec, and THIRD return, what FIRST return today? Or am I missing some vital point? |
onetom 26-May-2011 [1521] | its a remove-each e spec-of fn [find type? e [string! block!]] |
Geomol 26-May-2011 [1522] | Looking at SPEC-OF, and another question pop up. Why isn't copy/deep the default for COPY? Wouldn't the world be much easier, if it was? |
Micha 26-May-2011 [1523x3] | I need some help My server has multiple ip. it is possible to select the ip address ? |
I want to download the page, and to do it from different ip | |
p: open tcp:// i: get-modes p 'interfaces probe i probe i [make object! [ name: "if16" addr: 91.121.*.* netmask: 255.255.255.0 broadcast: 91.121.*.* dest-addr: none flags: [broadcast multicast] ] make object! [ name: "lo0" addr: 127.0.0.1 netmask: 255.0.0.0 broadcast: none dest-addr: none flags: [multicast loopback] ] make object! [ name: "if16" addr: 188.165.*.* netmask: 255.255.255.255 broadcast: 188.165.*.* dest-addr: none flags: [broadcast multicast] ]] | |
onetom 26-May-2011 [1526] | wow, i didn't know u can do that! where is it documented? i just remeber get-modes in relation to setting binary mode for the console or parity and speed setting for the serial port... |
Micha 26-May-2011 [1527] | you can not just choose adress ip . I ask if there was any way . |
Dockimbel 26-May-2011 [1528] | AFAIK, there is no way to do that using REBOL ports. |
Micha 26-May-2011 [1529] | thanks |
Maxim 26-May-2011 [1530x2] | Geomol, using copy/deep by default would be extremely bad for speed and memory. in most of the processing, you don't need to copy the deep content of a block, but the wrapper block itself, so you change the order or filter it. IIRC using copy/deep also causes cyclical references to break-up so using it by default would be disastrous. just look at how often we really need to use copy/deep compared to not and you'll see that the current behaviour is much more useful. |
I wish compose/deep didn't copy/deep the whole block when it did its composing. I don't know how it is in R3, but in R2, to simply replace one value in tree, you have to copy the whole tree, which isn't very useful. | |
BrianH 26-May-2011 [1532] | You can do more exact selections of what you want to copy in R3 using COPY/types. |
Maxim 26-May-2011 [1533] | yep, in R3, the make/copy system was greatly improved. |
Geomol 26-May-2011 [1534] | I imagined a can of worms. Guess I have to read and think it all through at some time. |
Geomol 28-May-2011 [1535] | Today's Moment of REBOL Zen: >> mod -8 3 == 1 >> modulo -8 3 == 1 >> remainder -8 3 == -2 The correct answer is 1. Check at http://www.wolframalpha.comtyping: -8 mod 3 >> mod -8 -3 == -5 >> modulo -8 -3 == 1 >> remainder -8 -3 == -2 The correct answer is -2. Check at http://www.wolframalpha.comtyping: -8 mod -3 |
BrianH 28-May-2011 [1536x2] | The modulus operation from math is not defined for negative numbers at all. Most programming languages with a modulus operation have extended it to cover negative numbers, but there is no agreed definition for it. This is why *all* programming languages and math processors that have modulus of negative numbers defined, are using an arbitrary platform-dependent definition for it, *even Wolfram Alpha*. |
The "correct answer" is NaN or to trigger an error, but since that is not useful, to pick a definition that is useful. | |
Henrik 28-May-2011 [1538x3] | >> lesser? 'a 6 == false >> lesser? 6 'a ** Script Error: Expected one of: integer! - not: word! ** Near: lesser? 6 'a |
how does SORT do it without errors? | |
(the lesser? is from a sort/compare) | |
Ladislav 28-May-2011 [1541] | The correct answer is -2. - that is false, you need to read the help string |
Geomol 28-May-2011 [1542] | From HELP MOD: "Compute a nonnegative remainder of A divided by B." MOD can produce negative results as seen above. From HELP MODULO: "Wrapper for MOD that handles errors like REMAINDER." So REMAINDER must give wrong result in some cases. What does REMAINDER say: From HELP REMAINDER: "Returns the remainder of first value divided by second." That's what I expect a modulo operation to do. A modern definition is given by Knuth in "The Art of Computer Programming" using floored division, and this seems to be also the definition, Wolfram Alpha use. So I would say, REMAINDER give the correct answer in the second case, but not in the first. As I see it, REBOL have 3 modulo functions, and none of them operate as expected, if Knuth's definition is used. |
onetom 28-May-2011 [1543] | would be nice if such discussion could be looked up when someone is curious why something has been implemented in a certain way... the rebol3 blog is a kind of raw material for such a "background documentation"... |
Ladislav 28-May-2011 [1544x2] | none uses Knuths definition |
BTW, this was discussed and implemented in ALtMe some time ago | |
Geomol 29-May-2011 [1546] | none uses Knuths definition Ladislav, please! Check mod in these languages: Clojure, Common Lisp, Filemaker, Fortran (modulo), Lua, Mathematica, MATLAB, R, Ruby (remainder), Scheme (modulo), Smalltalk (\\), VHDL and maybe a few more. They all give the same result as from Knuth definition. |
Ladislav 29-May-2011 [1547x3] | none uses Knuths definition - you should try to comprehend. None of the functions you mentioned uses the Knuths definition. |
In case you again try to misunderstand, then it is "none of the Rebol functions you mention" | |
And, moreover, you can easily redefine the MOD and MODULO, since they are mezzanines | |
onetom 29-May-2011 [1550x2] | Ladislav: I misunderstood it too as "no fucking body is using knuths definition" |
s/is using/uses/ | |
Ladislav 29-May-2011 [1552] | come on. If a function does not use a definition, then you cannot claim the function has a bug when differing from the definition in question. |
Geomol 29-May-2011 [1553] | Oh, sorry. None of the REBOL functions use Knuth's definition. Got it. :) |
Ladislav 29-May-2011 [1554x3] | Due to specifics in REBOL arithmetic it was deemed desirable to remain compatible with some of them when defining more arithmetic functions |
In essence, the MOD function is a "helper" for ROUND. It uses the Boute's definition, but assuming that the divisor is positive. If you do want to use a more comfortable variant, you can use the MODULO function, which does not make such an assumption. | |
Still, there are arithmetic specifics, regarding rounding. | |
PeterWood 30-May-2011 [1557] | A bug? >> cur: what-dir == %/Users/peter/ >> cd %Code/Rebol == %/Users/peter/Code/Rebol/ >> cd cur ** Access Error: Cannot open /Users/peter/Code/Rebol/cur/ ** Near: change-dir to-file path >> change-dir cur == %/Users/peter/ Though this works: >> cd :cur == %/Users/peter/ |
Geomol 30-May-2011 [1558x4] | >> ? cd USAGE: CD 'dir Notice the non-evaluated Literal Argument. So when you use CD, the argument isn't looked up. >> ? change-dir USAGE: CHANGE-DIR dir With CHANGE-DIR, it is looked up. It is expected behaviour, but maybe confusing, that CD and CHANGE-DIR are different. |
If I remember correctly, CHANGE-DIR came first, and it's suited for being used in scripts. CD is suited for using at the prompt. | |
<tab> completion of directories and files works, if you give argument as a file! datatype, but not when giving word! argument for CD. I believe, this is hard to get by. | |
And then, maybe if CD were constructed like this: cd: func [ 'dir [file!] ][ ... ] | |
Henrik 2-Jun-2011 [1562] | What does the PATH function do? |
Geomol 2-Jun-2011 [1563x2] | >> blk: [a b c] == [a b c] >> path blk 'a >> blk == [a] >> blk: [a b c] == [a b c] >> path blk 'b >> blk == [a b] >> blk: [a b c] == [a b c] >> path blk 'c ** Script Error: Invalid path value: c Maybe for some internal use? |
From group Core-old: A: the PATH action is what the interpreter uses to evaluate VALUE/selector expressions for each datatype. It is an internal action and has no external purpose in programs. These kinds of words often appear as a sort of side-effect" from how REBOL is structured. Datatypes are implemented as a sort of object class, where the interpreter "sends messages" to the class to evaluate expressions. The PATH action is a message that tells the datatype to perform a pick-like or poke-like internal function." | |
Henrik 2-Jun-2011 [1565] | interesting, thanks |
Geomol 2-Jun-2011 [1566] | It seems to original come from a post in group "RT Q&A" dated 11-Dec-05. |
Gabriele 3-Jun-2011 [1567] | yep, that's supposed to be unset but it somehow has been leaking out for a while. |
Henrik 4-Jun-2011 [1568] | is there any official way of using SORT/COMPARE on a block containing a mix of different datatypes? |
older newer | first last |