World: r3wp
[Core] Discuss core issues
older newer | first last |
Gregg 12-Jul-2011 [1794] | Those are my preferred terms as well. |
Henrik 13-Jul-2011 [1795] | what is the fastest way to deep copy a large object? |
Dockimbel 13-Jul-2011 [1796] | Try: >> new: make object! third <object> |
Henrik 13-Jul-2011 [1797] | it does not work for nested objects. |
Dockimbel 13-Jul-2011 [1798] | Then, you probably have to write an recursive function that will copy all nested objects. Have you looked for such function on rebol.org and in power-mezz package? |
Henrik 13-Jul-2011 [1799x2] | I need special functionality, so I will write my own. |
Turns out it's far too slow. | |
Maxim 13-Jul-2011 [1801x2] | object creation/duplication in Rebol is very slow, the binding just kills it. can you re-build your system with block? |
(or parts of it ?) | |
Henrik 13-Jul-2011 [1803] | I'm going to copy the parts I need instead. |
Oldes 20-Jul-2011 [1804] | >> select [1 2 2 3] 2 == 2 >> select/skip [1 2 2 3] 2 2 == [3] Why the second returns a block? |
Cyphre 20-Jul-2011 [1805] | iirc this is known behavior/issue in R2...has been unified in R3 |
Gabriele 20-Jul-2011 [1806] | Oldes, try it with a skip of 3 or 4 to see why a block is returned. Not very handy in the 2 case though... but I guess there was a desire to avoid special cases. |
Maxim 20-Jul-2011 [1807] | /skip return records i.e. >> select/skip [1 2 3 4 5 6] 4 3 == [5 6] |
Oldes 20-Jul-2011 [1808] | I'm just missing MAP! in R2: >> m: make map! [1 2 2 3] == make map! [ 1 2 2 3 ] >> select m 2 == 3 |
BrianH 20-Jul-2011 [1809x2] | Fortunately the /skip in SELECT/skip is ignored for map! in R3, so you can just use it in both. |
Darn the R2 version does a copy/part. Silly differences. | |
Oldes 20-Jul-2011 [1811] | in R2: >> make map! [] == make hash! [] >> m: make map! [1 2 2 3] == make hash! [1 2 2 3] >> select m 2 == 2 which is not what I woul expect |
Geomol 21-Jul-2011 [1812x3] | Seems like map! is just redirected to hash! . Can be seen with ? datatype! , and that's probably confusing, as they behave differently. |
Can also be seen with ? "map!" | |
>> source to-map to-map: func [value][to hash! :value] | |
Geomol 22-Jul-2011 [1815] | Is there an official documentation of make struct! ... ? Is there documentation of constructs like #[none] ? |
Pekr 22-Jul-2011 [1816x2] | http://www.rebol.com/docs/sdkug.html |
see "External Library Interface" | |
Geomol 22-Jul-2011 [1818x4] | There it was, thanks! |
I don't see doc about C datatypes in struct! spec block. I guess, it's the same rules as in routine spec block? | |
Example, where I use the C datatype, int: >> s: make struct! [i [int]] [42] | |
About constructs, off my head I have: #[none] #[true] #[false] Are there others? | |
Gabriele 23-Jul-2011 [1822] | >> #[binary! "abc"] == #{616263} >> #[bitset! #{010203}] == make bitset! #{010203} >> #[block! [1 2 3 4] 3] == [3 4] >> #[email! "something"] == something >> #[file! "something"] == %something >> #[function! [a b] [a + b]] ** Script Error: none is missing its a argument ** Near: func [a b][a + b] ... and so on |
Geomol 23-Jul-2011 [1823] | Is this documented anywhere? |
Sunanda 23-Jul-2011 [1824] | Perhaps not, geomol. See this cc thread: http://curecode.org/rebol3/ticket.rsp?id=941 |
Ladislav 23-Jul-2011 [1825x4] | The "serialized" word is very inappropriate, e.g.: /all "Mold in serialized format" does not say anything at all, since the format without the /ALL refinement is serialized as well (it is a text string). |
Some other inappropriate notions: "serialized constructors", when used for #[none] e.g. is a very unfortunate notion, since it is not a constructor (=a special function), not to mention, that it surely is not a serialization of such a function. | |
(my notes apply to the text of the curecode discussion to the above mentioned ticket) | |
Fortunately, according to Carl's note, the correct notion for the #[none] and similar formats seems to be: "specially escaped format" | |
Henrik 23-Jul-2011 [1829] | Does serialization not imply there is a reverse action for it? Only MOLD/ALL will allow that. |
Ladislav 23-Jul-2011 [1830x5] | Hmm, that looks like a proper objection, but it does not take into account, that e.g. 123 is a result of both MOLD as well as MOLD/ALL and it surely is serialized, while e.g. #[none] is not just "serialized", it is a "specially escaped format", as noted by Carl |
Moreover, MOLD usually does preserve REBOL code in the sense, that you get the same program when loading the result of MOLD more often than not. | |
While even MOLD/ALL does not look "reversible enough" for some functions, objects, etc. | |
For all the above reasons, it is much better to call the #[none] and the likes "specially escaped format" rather than "serialized constructors". | |
The unfortunate thing is, that there is the MOLD vs. MOLD/ALL ambiguity, which confuses every beginner exactly because when they encounter none they usually think it is a REBOL value of the type NONE!, which may mislead them in many cases | |
Henrik 23-Jul-2011 [1835] | do we have both MOLD and MOLD/ALL for performance reasons? |
Ladislav 23-Jul-2011 [1836] | I do not think there are performance reasons for that. |
Henrik 23-Jul-2011 [1837x2] | why do we then have MOLD and FORM? |
rather: why do we have MOLD at all? I'm not sure we can say that it preserves REBOL code, because, surely, MOLD/ALL preserves more of it. | |
Ladislav 23-Jul-2011 [1839] | For example, if MOLD/ALL were used to display the result of an expression we would obtain: none == #[none] , which would be less confusing than none == none |
Henrik 23-Jul-2011 [1840x2] | but we use FORM for that, don't we? |
the only place that I find use for MOLD is when wanting to preseve brackets when displaying a block. otherwise I use FORM or MOLD/ALL | |
Ladislav 23-Jul-2011 [1842] | no, MOLD is used to display the result of REBOL expressions as far as I know |
Henrik 23-Jul-2011 [1843] | That's not how I originally understood it, when I first read about them. Displaying values was the intent with FORM as it does not necessarily produce REBOL readable output, but human readable output. MOLD was meant to be used for serialization, so that the data could be re-read by REBOL. Indeed, the help strings: FORM: Converts a value to a string. MOLD: Converts a value to a REBOL-readable string. |
older newer | first last |