World: r3wp
[Core] Discuss core issues
older newer | first last |
Andreas 14-Jul-2010 [17333] | #[none] is the only literal representation of the corresponding abstract object |
Ladislav 14-Jul-2010 [17334x4] | Why the "converted none to #[none]" - that is exactly what *I* am against |
In the DED (Data exchange dialect) none is a word, nobody wants to transform it to a value of a different type, and it actually never happens | |
...as Andreas demonstrated above, so why to pull out that strawman? | |
Generallly, "preprocessing REBOL scripts" means to work with the DED, not with the DD (Do dialect) | |
Maxim 14-Jul-2010 [17338x2] | but one must understand that when you LOAD data, no evaluation occurs, which is why serialization into litterals does not occur. this is a big detail, which most REBOLers do not grasp. the litteral notation allows you to load items AS data, not as DO dialect source code. I guess what could be done is to remove the /ALL refinement and add a new refinement which forces the non /serialized format. but that makes SAVE work opposite of other serialization handling ... which is why I'm not sure that is such a good thing. |
for data exchange, I really think that a deeper serialization is required. even MOLD/ALL is inadequate for any serious project. I've been bitten many times. things like recursive object molding or breaking can occur. ex: >> a: context [b: none] >> b: context [a: none] >> b/a: a >> a/b: b >> mold/all a {#[object! [ b: #[object! [ a: #[object! [...] ]] ]]} | |
Ladislav 14-Jul-2010 [17340] | but one must understand that when you LOAD data, no evaluation occurs, which is why serialization into litterals does not occur. - this looks like a confused statement to me. Example: mold/all load "true" ; == "true" mold/all load "#[true]"; == "#[true]" There is no rocket science involved. |
Maxim 14-Jul-2010 [17341x2] | in your first line... the loaded value is a word, not a #[true] value... but people don't get this. |
it becomes obvious to advanced users, cause we've had to go deep into the bindology, but casual/intermediate REBOLers se all the datatype/binding/loading stuff as magic. | |
Ladislav 14-Jul-2010 [17343x2] | They should read http://en.wikipedia.org/wiki/REBOL#Syntax |
This has nothing to do with any bindology, no rocket science involved | |
Andreas 14-Jul-2010 [17345] | even more of a reason why non-/all save needs to be abolished |
Ladislav 14-Jul-2010 [17346] | exactly! |
Maxim 14-Jul-2010 [17347] | I don't agree, SAVE & SAVE/ALL have different uses. |
Ladislav 14-Jul-2010 [17348] | They do? Then, would you be so kind, and explain to me what is the purpose of SAVE? (I never found any) |
Andreas 14-Jul-2010 [17349] | so what use do you have for non-/all save? |
Maxim 14-Jul-2010 [17350] | well, the same for mold & mold/all by all accounts, we should also abolish non-/ALL mold then, cause they are symmetric. |
Andreas 14-Jul-2010 [17351] | (ok, i'll abstain. ladislav is faster :) |
Ladislav 14-Jul-2010 [17352] | please, don't, have to run, bye |
Maxim 14-Jul-2010 [17353x2] | I personnally NEVER use SAVE/ALL in any manner. I always use WRITE so I can't even give you a valid case for SAVE/ALL ;-) but I've used SAVE a few times to log data. Even when doing script pre-processing, SAVE/ALL broke too often for me to afford the hassle. I'll usually use MOLD/ALL process the data as a string with real control then use WRITE |
and even then, I don't LOAD scripts because we loose all the comments, so I pretty much always use LOAD/next, & string parsing to process REBOL source scripts. | |
Andreas 14-Jul-2010 [17355] | mentioning the perceived symmetry to mold and mold/all is kind of evading the argument. ladislav is arguing that SAVE should be useful with respect to LOAD. nothing stops us from defining SAVE as WRITE ... MOLD/ALL ..., and there is no necessity to hold up this perceived symmetry. |
Maxim 14-Jul-2010 [17356] | btw, I *am* playing devil's advocate here... ;-) It might be that for the general purpose, SAVE/ALL might be the better default. but IMHO SAVE itself is usually inadequate for storing DATA. it might be ok for storing dialect blocks though. |
BrianH 14-Jul-2010 [17357] | Ladislav, if you try to DO a script saved with SAVE/all or MOLD/all, it will fail if it contains functions or objects. And it definitely *won't* be "as close to original as possible". So /all can't be the default for SAVE. |
Andreas 14-Jul-2010 [17358] | >> save/all %foo.r load/all "foo: func [x] [x * x] foo 42" >> do %foo.r Script: "Untitled" Version: none Date: none == 1764 works pretty well! |
BrianH 14-Jul-2010 [17359x2] | The primary purpose of SAVE is to save scripts that are to later be processed by DO. |
Andreas, that isn't a function, it is a description of a function. | |
Andreas 14-Jul-2010 [17361x2] | It's a script, you said scripts |
and that's the whole point. if you load a script and then save it, the original script should be affected as little as possible | |
BrianH 14-Jul-2010 [17363] | I also said functions and objects. That means function!, closure! and object! values, not their source. |
Andreas 14-Jul-2010 [17364] | Yes, and that's the strawman. Those literal objects will only be written from a script if it contained them in the first place. |
Ladislav 14-Jul-2010 [17365] | {And it definitely *won't* be "as close to original as possible".} - this is a Goebbels' truth, would there be any example? |
Maxim 14-Jul-2010 [17366] | I gave one above. if you try and save/all cross-referencing object! values the mold fails. |
Ladislav 14-Jul-2010 [17367] | Yet another example of a Goebbels' truth: >> do mold quote (1 + 2) == 3 |
Maxim 14-Jul-2010 [17368] | in fact basic SAVE fails as well. |
Ladislav 14-Jul-2010 [17369x2] | Max, you did not give any example, that would not deserve the "strawman prize", your DATA surely is not a DED |
BTW, my above DO example demonstrates quite pregnantly, that DO isn't a "counterpart" of MOLD | |
Maxim 14-Jul-2010 [17371] | I don't get what you mean by strawman prize? |
Andreas 14-Jul-2010 [17372] | maxim, you have a good point regardign serialising circular datastructures and similar stuff |
Maxim 14-Jul-2010 [17373] | the objects could be within a block of data that you are trying to serialize... it would still fail. |
Andreas 14-Jul-2010 [17374] | but it is a different issue than what we are discussing here |
Ladislav 14-Jul-2010 [17375] | You built a strawman, since your example does not relate to the subject at all. The subject is: SAVE is not good to process DED. |
Maxim 14-Jul-2010 [17376x3] | but SAVE is not only for DED, THAT is my point. |
and in any case, you could have objects within your DED and SAVE would fail. | |
(*could* fail) | |
Ladislav 14-Jul-2010 [17379] | There is nothing that can be used to process non-DED and I agree with that, but that is a completely different subject |
Andreas 14-Jul-2010 [17380] | no, you could not |
Maxim 14-Jul-2010 [17381] | where is the DED defined? |
Andreas 14-Jul-2010 [17382] | LOAD |
older newer | first last |