World: r3wp
[!REBOL3-OLD1]
older newer | first last |
Henrik 21-Apr-2009 [13392] | is Chat down again? |
Graham 21-Apr-2009 [13393] | Ladislav also seen on skype today :) |
Will 21-Apr-2009 [13394] | yuppy-yay-yea 8-) Ladislav back 8-) |
[unknown: 5] 21-Apr-2009 [13395] | Someone hit him up and tell him to jump in here. |
Henrik 22-Apr-2009 [13396] | The O3D plugin from google takes up about 15 MB of disk space. I wonder how many kb it would take to do the same thing in R3 using ReBrowse. |
Gabriele 22-Apr-2009 [13397] | Geomol, so that will give you the correct result for *two* cases. Cool. What about the other billion cases? :-) I'd like to understand if you have ever worked with this stuff in real life, and to what extent, because in my experience what you did above makes no sense at all... |
Henrik 22-Apr-2009 [13398] | On the new R3 GUI document: I think the new guides and layers concept will work much better, but of course it depends on the implementation. I've asked a range of questions in Chat to get some more information. |
Pekr 22-Apr-2009 [13399] | Doesn't guides concept reminds 'AT concept in R2, and hence absolute positioning, which we were against? |
Henrik 22-Apr-2009 [13400] | No. AT would be overridden as soon as RETURN was used, so AT was only useful per face. Guides are generally a great idea if used correctly. |
Pekr 22-Apr-2009 [13401] | So in what regard it differs to current 3.4 VID? |
Henrik 22-Apr-2009 [13402x2] | They can be set manually, which solves a problem that was present since the old VID3, namely to have proper reference positions in the layout, usable by multiple panels. Even if it's not possible to share guides between panels, we can get good use of this. Generally they provide much more control over the layout. Whether guides are implemented correctly is a different issue. |
Not having proper reference positions is one of the reasons VID3.4 is very hard to produce good layouts with. Faces are just sailing around in the window. | |
Pekr 22-Apr-2009 [13404x2] | Yes, so finaly my "anchoring" model? So that I can e.g. position two buttons relative to some text area corner? |
(that could be achieved by normal layout model with alignment of butons to the right even today otoh) | |
Henrik 22-Apr-2009 [13406] | I'm not sure, but it could be. The anchoring model I was advocating was from OSX, which Carl does not like. That reminds me that I didn't ask whether guides could be hinged to other guides. |
Pekr 22-Apr-2009 [13407] | Why Carl proposes different model suddenly? I thought he was OK with what he has created? |
Henrik 22-Apr-2009 [13408x3] | I just hope he saw that the model wasn't good enough. |
(also he apparently listened to my comments :-)) | |
anyhow, with guides we are also no longer depending on MAX-SIZE. | |
Ladislav 23-Apr-2009 [13411x2] | Hello, jumping in |
re the %rebol.r and %user.r files: * I do not use %rebol.r for anything * I use %user.r to set up my personal preferences on every machine so, that it looks like I expect it to: defining my personal "absolutely necessary" functions | |
BrianH 23-Apr-2009 [13413] | Ladislav (continued from Rebol vs. Scheme), FUNCTOR currently isn't being used by any mezzanine code, so if we want to change it now is the time. If we go with your initialization block idea: - The initialization would have to be performed at function creation time, not first call. - The init block would be only the starting spec for the static object, not the final spec. We'd need to still do the search-for-setwords that FUNCT does, or there'd be no point to including FUNCTOR. - I'd suggest that the parameters be in spec, init, body order. |
Ladislav 23-Apr-2009 [13414] | I essentially support Pekr's opinion about %user.r with the following exception: * REBOL should be unable to overwrite %user.r when started in the default security mode (security reasons) |
BrianH 23-Apr-2009 [13415] | functor: func [ "Defines a user function with all set-words collected into a persistent object (self)." spec [block!] "Help string (opt) followed by arg words (and opt type and string)" init [block!] "Initialization block of the persistent object" body [block!] "The body block of the function" ][ make function! reduce [copy/deep spec bind/set/copy body make object! init] ] We decided to not use the term "static locals" since it would be confusing to people not familiar with C languages. |
Ladislav 23-Apr-2009 [13416x3] | re Functor: * in my opinion it does not make sense to initialize static local variables during function call, since they are static and therefore supposed to persist, so the only time suitable for the initialization seems to be the function creation time * the initialization (IMO) can perfectly serve another purpose: all initialized (during function creation) variables shall be static, while the other variables shall be dynamic IMO |
If the terminology does not look good, then we may probably say "persistent" instead of "static" meaning that the values persist during calls unless explicitely changed | |
...but if we use the term "persistent" instead of "static", what would be used instead of "dynamic"? | |
BrianH 23-Apr-2009 [13419] | Dynamic. Local variable capture is half the point of the function, so making the set-words in the body persistent too is a must. |
Anton 23-Apr-2009 [13420x2] | So a functor, with no variables initialized would basically not be a functor. You could evolve a functor with many static variables gradually towards a normal function with no static variables. |
(with Ladislav's initialization idea.) | |
BrianH 23-Apr-2009 [13422] | Ladislav, the reason we are asking about how people use %user.r is so that we make sure that alternate facilities exist to do what people did with %user.r, but safely. The old behavior of %user.r will be going away in R3 for security reasons. However, we have your uses covered by our plans: - Preferences will be handled by the new %user.r -You can include your must-use functions in a module. |
Ladislav 23-Apr-2009 [13423] | making the set-words in the body persistent is a must - let me disagree with this. I think, that the INIT block is a must, since the function cannot initialize the static variables as noted above. OTOH, every variable not initialized during the function creation time should be automatically dynamic, since it does not make much sense to have it uninitialized when using it as static |
BrianH 23-Apr-2009 [13424] | Back to FUNCTOR, that and FUNCT are most often going to be used where the user will only specify the body, not the init or spec. |
Ladislav 23-Apr-2009 [13425] | FUNCT sounds perfectly logical and usable as is, but I really cannot imagine the usage of a persistent value that cannot be initialized at function creation time |
BrianH 23-Apr-2009 [13426] | They could be initialized at first call. We already have facilities to do what you describe. |
Ladislav 23-Apr-2009 [13427] | it simply does not make sense to me |
Anton 23-Apr-2009 [13428] | (You mean *specifically* initialized, with the initialization block; they could be initialized to NONE..) |
Ladislav 23-Apr-2009 [13429] | aha, during first call - how does the user find out which call is the first one? |
BrianH 23-Apr-2009 [13430] | VALUE? |
Anton 23-Apr-2009 [13431] | I agree with Ladislav, using conditional code (eg. using VALUE?) is kind of ugly. |
BrianH 23-Apr-2009 [13432] | Actually, we are going to make a DEFAULT function, but that is one-value-at-a-time until DO/next works. |
Ladislav 23-Apr-2009 [13433] | ...the VALUE? looks inefficient and (IMO) not the proper way. Why should I check always something, that can be done properly just once? |
BrianH 23-Apr-2009 [13434] | Remember that the user won't be specifying the init block most of the time, just the body. Internal code would specify the init. |
Anton 23-Apr-2009 [13435] | You mean the init block would be built automatically from the body block? |
BrianH 23-Apr-2009 [13436] | FUNCT and FUNCTOR are for defining handlers, though FUNCT is also used a lot in mezzanine code. The user would only specify the body block. |
Ladislav 23-Apr-2009 [13437x2] | when I used a static local variable, I always initialized it at the function creation time using my Lfunc. I am sure I wouldn't touch a function with static locals not having proper initialization. |
, but YMMV | |
BrianH 23-Apr-2009 [13439] | We can initialize them to NONE if you like, but having them be unset was deemed more valuable from a debugging standpoint. |
Ladislav 23-Apr-2009 [13440] | well, I do not like NONE (debugging purposes) either |
Anton 23-Apr-2009 [13441] | I see no fault with Ladislav's proposed init block. |
older newer | first last |