World: r3wp
[Core] Discuss core issues
older newer | first last |
james_nak 18-Feb-2008 [9188] | Slight change of subject but here I am all happy saving/all and loading my objects and then it hits me: Just what is this "serialized" data? How is it different (outside of that fact that it's ascii representation is different.) I don't know if I need to know to use it but in case I'm ever on TV I want to answer it correctly. |
btiffin 18-Feb-2008 [9189x2] | Umm, I get this wrong - conciseness wise - but >> mold none == "none" >> mold/all none == "#[none]" If you load "#[none]" you get the value none, type none! if you load "none" you get a word none with the word! none in it. The serialized or lexical form tells REBOL exactly what the value type is while loading, alleviating the need for and evaluation. Umm, again...there are more concise descriptions of this. |
you get the word with the word! none in it ... what? :) "you get the word! none which needs to be evaluated to get the value none type none!" | |
james_nak 18-Feb-2008 [9191] | Thanks, btiffin. Someday I'll ask what that has to do with the word "all" as in mold/all -perhaps it refers to saving everything including the type. Here's another thing I just ran in to: How does one add to an object? Say I have this object o: make object! [name: ""] and I want to later add 'address: ""' (while the program is running of course). Thanks in advance. |
Graham 18-Feb-2008 [9192x2] | you can't. |
you have to create a new object with the new field. | |
Sunanda 18-Feb-2008 [9194] | R3 will let you. But, as Graham says, no suhc luck in R2. R3 discussion here: http://www.rebol.net/r3blogs/0073.html |
Henrik 18-Feb-2008 [9195] | I don't think I use MOLD very often, only MOLD/ALL. MOLD lies too closely to FORM. I believe also there was a discussion about changing this in R3? |
BrianH 18-Feb-2008 [9196] | Not really. MOLD is used as a way to generate script source (which would be loaded with DO); MOLD/ALL is for data (which would be loaded with LOAD). Both have their strengths, so there has been no talk of removing one or the other. |
Henrik 18-Feb-2008 [9197] | ah, I was confusing it with something else, sorry. |
james_nak 18-Feb-2008 [9198] | Thanks Y'all for the info. I guess I'll have to fake it. |
BrianH 18-Feb-2008 [9199] | If you make sure that all references to the object are through the same word or block, no aliasing, then you can just reassign to a new object based on the old. |
btiffin 18-Feb-2008 [9200x2] | James; I haven't experimented much, nor really thought about it other than to know there are (many) issues Using path notation may help. >> o: context [a: [name "Bob"]] >> o/a/name == "Bob" >> append o/a [address "Main St"] >> o/a/address == "Main St" >> o/a/adress: "New Adress" >> o/a/adress == "New Address" So you are not adding elements to an object!, just adding key value pairs to a block and using path notation. It might not suit what you need, or it might just look like it :) Enough to get yourself coded into a corner. |
And just so ya know ... I wouldn't do that. I'd o: make o [address: none] | |
[unknown: 5] 18-Feb-2008 [9202] | Is there a way to sandbox a function in a sense such as if I have a block defined such as: block: [ ] and then I have a function that is as such: if equal? arg1 arg2 [append block arg2] How can I intercept what is going to be passed to block before it is allocated to do some other processing. |
btiffin 18-Feb-2008 [9203] | Is it always append? Append is a mezzanine in R2 so if you redef/wrap it, you'll not be penalized much on performance. |
[unknown: 5] 18-Feb-2008 [9204x2] | Could be insert alter or any other function that would populate data into a block. |
Yeah append is a mezz for insert though if I recall. | |
btiffin 18-Feb-2008 [9206] | SOURCE APPEND for more info, but hmm, you might have to write a wrapper then ... performance for REBOL isn't too too horrible at the mezz level as long as tight loops aren't involved. |
[unknown: 5] 18-Feb-2008 [9207] | how do you pass a lit-word to a function argument and have the function still see it as a lit-word? |
btiffin 18-Feb-2008 [9208] | Check in and around http://rebol.com/docs/core23/rebolcore-9.html#section-3.2 but note the backtick `var is really just a single quote. |
[unknown: 5] 18-Feb-2008 [9209] | don't see anthing helpful there. |
btiffin 18-Feb-2008 [9210x2] | f: func ['a] [type? :a] |
Note the ' on the spec and the : get in the func. REBOL is one tricky little business :) | |
[unknown: 5] 18-Feb-2008 [9212] | that is a direct reference. But try something like this: blk: ['word] f: func [arg][lit-word? arg] then try it: f blk/1 And you will see the problem. |
btiffin 18-Feb-2008 [9213x2] | Just for fun ... check out http://rebol.net/wiki/Glossaryand http://rebol.net/wiki/Glossary_rebols_view for how confused I am in this area. :) |
>> d: ['junk] == ['junk] >> f: func [a] [type? :a] >> f d/1 == lit-word! You need the : get inside the func to avoid evaluating arg inside the function. | |
[unknown: 5] 19-Feb-2008 [9215x3] | Of course....why didn't I think of that.... I was racking my brain and didn't even think of the simple stuff. let me see if my litlle function works now. |
potential?: function [arg][][either all [word? :arg not lit-word? :arg][true][false]] >> blk: [print 'print "print"] == [print 'print "print"] >> potential? blk/1 == true >> potential? blk/2 == false >> potential? blk/3 == false works good! | |
Do we already have a function that does this? If not a similiar function should probably be thrown in REBOL3 don't you think? Could be useful | |
btiffin 19-Feb-2008 [9218] | Paul; I get so lost in the REBOL trees so often ... that "obvious" isn't in my REBOL vocabulary yet. It's partly why I post helper notes; knowing someone else will correct me and I'll learn that little bit more about concise REBOL. ;) Like from TRETBASE, I didn't even think to test that false = none is false and I was so glad Anton posted the "obvious". |
[unknown: 5] 19-Feb-2008 [9219] | My problem is that I forgot many things because I haven't done them in so long. Plus I forget what changes were made so I find myself doing something complicated that has now been simplified. |
Henrik 19-Feb-2008 [9220x3] | I rarely use FALSE actively, more relying on that many functions like ALL and ANY work best with NONE. This shortens many functions. |
potential?: func [arg][all [word? :arg not lit-word? :arg]] | |
However, I think the function would work better like: potential?: func [arg][all [any-word? :arg not lit-word? :arg]] | |
[unknown: 5] 19-Feb-2008 [9223x4] | Yeah I just threw it out there as I had it in the console at the moment but feel like it could be of benefit to have it built into R3 as a mezz or something. |
Your functions are returning none so I don't think we want that. | |
;Mabye this: potential?: func [arg][if all [any-word? :arg not lit-word? :arg][return true] false] | |
Seems to work ok: >> blk: [print "print" 'print] == [print "print" 'print] >> potential? blk/1 == true >> potential? blk/2 == false >> potential? blk/3 == false | |
Ingo 19-Feb-2008 [9227x2] | potential?: func [arg][found? all [any-word? :arg not lit-word? :arg]] blk: [print 'print "print"] print potential? blk/1 print potential? blk/2 print potential? blk/3 true false false |
... just to be part of the game ;-) | |
[unknown: 5] 19-Feb-2008 [9229x3] | There you go Ingo! |
I forgot about found. | |
Just when I was starting to think there was no longer a use for it. | |
Ingo 19-Feb-2008 [9232] | I admit, I had to look it up, too. |
[unknown: 5] 19-Feb-2008 [9233x2] | lol - I kept thinking in my head what I can return this back with that would explicitly evaluate to true or false and not give none but you FOUND it - pun intended. |
So does anyone else think potential? should be a mezz function? If so, what should the name of it be proposed as? | |
Ingo 19-Feb-2008 [9235] | I'm not sure it's needed often enough to warrant its inclusion, first take at a name: non-lit-word? |
[unknown: 5] 19-Feb-2008 [9236] | But it that really doesn't give an indication of what the function is for which I believe the function is for is to find if an argument has a potential to be evaluate |
Henrik 19-Feb-2008 [9237] | Your functions are returning none so I don't think we want that. <-- my point was that NONE can be more useful than FALSE and gives simpler code, if you are not using NONE as a specific value. |
older newer | first last |