AltME groups: search
Help · search scripts · search articles · search mailing listresults summary
world | hits |
r4wp | 1023 |
r3wp | 10555 |
total: | 11578 |
results window for this page: [start: 9701 end: 9800]
world-name: r3wp
Group: !REBOL3 ... [web-public] | ||
Maxim: 12-Oct-2010 | for example, if I want to do a real time debugger which shows me the current content of the block which is being stepped through by a loop... I can't since I can't get access to the block which is being used by that function... | |
Steeve: 12-Oct-2010 | Yes Maximn, to do runtime debugging, we must be allowed to construct observable functions | |
Maxim: 12-Oct-2010 | we could be able to do this by switching to a "debug" version of the various func creating mezz | |
Ladislav: 14-Oct-2010 | Now you have to circumvent it, at the cost of having longer code. I suppose, that the not simplified code is more like: f: func [] [error? try [do-something return 1] return 2], which can be transformed to: f: func [] [return either error? try [do-something] [1] [2]] | |
Andreas: 19-Oct-2010 | _I_ won't. People in general might well be able to do so. | |
BrianH: 19-Oct-2010 | The header changes in A108 will be ignored by A107, and the old settings will be ignored by A108, so if you want to have transitional code you can use both. The only change that I know is not automatically adjusted for is the isolate: true header, so if you need that and want it to also be compatible with A108 then also include options: [isolate]. And you don't need to use type: 'extension anymore, type: 'module will do (in either version). Don't use the word 'hidden in your modules though, at least not at the top level - hidden will be a new keyword in module code, like export. | |
Andreas: 19-Oct-2010 | Yes, but you would have to do half of the compression anyway. | |
Maxim: 20-Oct-2010 | others do both and don't get the time to release them ;-) | |
Maxim: 20-Oct-2010 | Just a little tidbit I thought might be good for others still resisting the dark side of the force (R3 :-) I'm at a point where I'm 50:50 in my time spend on R2 and R3 overall. which is a nice observation. ATM, I much prefer R3 for many reasons. -binding control and dynamic code building is soooo much better. -embeded modules -extensions which can (at last) almost do anything with REBOL. -being able to fix/understand some limitations myself by "looking under the hood". -it really is much better designed, scalable, fast, consistent and more. why is R3 the dark-side? -it constantly tempts you, -promises power (which it ultimately delivers, after kicking you in the nuts a few times), -allows much easier access to evil dlls (dark lawless libraries) than R2, -can be a lot more harsh finding your errors, but then removes guilt by disarming them -some unexpected issues still make it highly temperamental. -it will actually KILL your app with mush less discrimination -DOS shell makes it a trial by pain experience (and no, making its bg color white doesn't changes this ;-) | |
Andreas: 20-Oct-2010 | You can already build a better shell with the hostkit :) Until someone actually gets annoyed enough to do this, it's probably easiest to just install a "proper" shell, maybe along with rlwrap. | |
Andreas: 20-Oct-2010 | Pekr, we can write an R2-style console app with the hostkit. It's just that someone needs to actually do it :) | |
Andreas: 20-Oct-2010 | Damn, do I really have to fire up a Windows VM just to test if this is really possible right now :) ? | |
Ladislav: 26-Oct-2010 | Sunanda, you wrote, that INF support was good, not mentioning why. Can you explain, why do you want to have it? | |
Maxim: 26-Oct-2010 | I really like how you've evolved the system and its doing all of what I wanted slim to do minus one or two little things, which I can easily graft over modules as they are . | |
BrianH: 27-Oct-2010 | If you want the reloading, use DO. DO works on scripts and modules both, and does them every time. It even tries to import the module after it is created. This is everything that you were requesting out of reloads. What it won't do is override a loaded module in the module list that is the same version or newer, but you can import those directly using IMPORT options. | |
BrianH: 27-Oct-2010 | What /no-lib does is converts a module to a private module. It does a full import directly into the user context instead of importing through lib. It doesn't even go into the system modules list as a reusable prebuilt module, which named private modules otherwise do. | |
Ladislav: 27-Oct-2010 | ...approaches extend from INF always throws an error to INF is a first class value. Somwhere in the middle is INF acting like UNSET!... - I do not think this describes the situation. I see it differently, thinking, that there are only two consistent alternatives (the current state is inconsistent, as everybody agrees with): 1) inifinities are not REBOL values (this state existed before FP pairs were introduced). I am pretty sure, that the description "INF always throws an error" is misleading, exactly because such a value does not even exist in REBOL 2) infinities exist in REBOL. In this case, they have to be "first class values", but, of course, they are not handleable by all functions, since e.g. +INF + -INF is not defined | |
Maxim: 27-Oct-2010 | supporting infinity opens up a can of worms IMHO. if one really needs to do heavy math stuff, its probably better to use C and professional math libraries via an extension. | |
Henrik: 27-Oct-2010 | I almost agree with Maxim here. I think there should be a clear definition of REBOL 3 math *can* and *cannot* do. Leave the complex numbers, symbolic math and infinity to modules and extensions. | |
Ladislav: 27-Oct-2010 | Actually, infinities, are not that much "scientific stuff" as it may look at the first sight. Anything you can do with infinities is not hard to do withouth them as well. | |
Pekr: 27-Oct-2010 | BrianH: I just looked into Delayed extension note is CC - cool guru stuff :-) btw - do I understand it correctly, that unnamed modules will be named in module list, according to the filename? But what if there is unnamed module, which is not loaded from file? | |
GiuseppeC: 30-Oct-2010 | Actually what is stopping me from using REBOL3 is the lack of GUI and SQLite support but I have them in REBOL2 and I'll continue using it. In REBOL3 I am only a spectator. I do not complain on the time it gets to be complete. I do not need the very last feature. I am passionate about the work you are doing on it. It is very hard. It is nice to see you, genius, at work. | |
Carl: 1-Nov-2010 | No, you don't want to do that. | |
Andreas: 1-Nov-2010 | I need a reliable way to QUIT with a return value from a script. But I do not know how this script is called. | |
Gregg: 1-Nov-2010 | Do I recall correctly that there was a reason tuple! values couldn't be extended to 16 slots? I don't know that it's a great idea to map IPv6 addresses to them, or the feasibility of adding an ipv6! type. A utype! may be good enough, but I don't know how those are going to work either. | |
BrianH: 1-Nov-2010 | If we go all out for IPv6 integration then we can do a utype or even a built-in type with syntax (utypes won't have literal syntax). But we don't need to do that to get IPv6 support; we can get that now using the existing datatypes and some functions to work on the data, in theory. | |
Pekr: 1-Nov-2010 | before utypes, we could finish e.g. vectors, sound is non-existant too ... tasking, new codec model - still lots of things to do :-) | |
Ladislav: 2-Nov-2010 | Do I recall correctly that there was a reason tuple! values couldn't be extended to 16 slots? - yes | |
Sunanda: 2-Nov-2010 | Is the safe R3 way to execute a script to use: do load %script-name rather than R2's way: do %script-name ? The reason I ask is the different behaviours I see here (I'd expect them both to print a 1).... n: 1 try [do %test-script.r ] print n n: 1 try [do load %test-script.r ] print n ....where test-script.r is these two lines: rebol [] 0 / 0 | |
BrianH: 2-Nov-2010 | And that doesn't even get into the syntax issues: IPv6 syntax is really different, not the same as dotted. A different type would allow different syntax. But that syntax is really specific, only used for that one thing, and not necessarily a very common thing at that (do you tend to type out IPv6 addresses, or the domain names that refer to them?). It's not like tuples, that get used outside of the networking realm. It really might not be bad to just use strings for the IPv6 syntax, and binaries for the decoded values. We don't have to wait for syntax changes to get started. And once we get something running, the syntax changes would be easier to justify :) | |
Ladislav: 14-Nov-2010 | This one is a poll question everyone should not have trouble to answer. In R2, the USE function initialized the local values to #[unset!] for better user protection. In R3 (implementation quirk) the local USE variables are initialized to #[none!]. Which alternative do you prefer? | |
Ladislav: 14-Nov-2010 | I, personally, do not mind much, but, depending on the result of this poll, I intend to adjust my policy when judging other cases, e.g. new functions, that are not yet implemented. | |
Anton: 14-Nov-2010 | Good argument, Henrik. Ladislav, you wrote "the USE function initialized the local values to #[unset!] for better user protection." Better protection than what? Or what is the protection? (Or do you just mean USE creating locals is the protection?) | |
Ladislav: 14-Nov-2010 | Am I to understand, that some of the USE3/USE2 variants would do that? | |
Kaj: 14-Nov-2010 | Am I to understand, that some of the USE3/USE2 variants would do that? | |
Ladislav: 14-Nov-2010 | Brian: "And if we are really concerned with initializing the values" - actually, I am not. I am more like one of those wanting to have it the same way in functions as well as in other locals. (like Henrik, Oldes, Anton, Andreas). That is currently the same in USE, which I do not object against. This way, only object (and module) fields are currently initialized to #[unset!], although in the newly proposed LET we can choose. BTW, it looks to me, that it is good, that LET can accept any-word!, i.e. be more flexible than USE. | |
Ladislav: 14-Nov-2010 | (if I do not need any local variables, then I do not need to call the function creating them) | |
BrianH: 14-Nov-2010 | Empty vars or values blocks, like all of the other assignment-related characteristics of LET, serves the same purpose that they do in SET. Remember, a lot of the time LET will be used on data, not just inline words and values. Sometimes you want to screen for #[unset!], because being screened for is the whole point to that datatype, so setting it should be an option like it is with SET. Other times the words will be collected from the body, such as with COLLECT-WORDS/set. It is not necessarily an error if there are no words - it depends on the programmer's intention. | |
Ladislav: 15-Nov-2010 | My note to the "rehashed #[unset!] argument": I like the "The whole point of #[unset!] is to trigger errors" formulation. Nevertheless, it is broken in a big way by USE and function contexts. Only any-object contexts adhere to this convention now, so it is an error to write.: context [ print a a: 1 ] , while a corresponding use [a] [ print a a: 1 ] would be an error in R2, but not in R3 anymore, while do has [a] [ print a a: 1 ] was not an error even in R2. Therefore, "The whole point of #[unset!] is to trigger errors" is true, but, as demonstrated, the #[unset!] value is sneakingly losing its point to the extent, that it is becoming negligible. BTW, this is one more "arms race", which a protection measure is losing when confronted with the freedom of a programmer to write code he likes to write. The previous victim of this race in the datatype space seems to be the #[none!] value (at least to me). I do not object, since due to the changes the #[unset!] value is becoming more of an annoyance, than a useful bug protection. And, there are other benefits, like increased compatibility between USE and functions, exactly as the discussion revealed, as well as the fact, that the protection was never as useful as it was planned to be. | |
Ladislav: 15-Nov-2010 | But, being at it, there is one annoyance I perceive: 1) the variables bound to a function context don't cease to exist even when the function is not running 2) code like: f: func [/a]['a] block: [a] bind block f do not work, while I can do such a bind on my own without needing any permission: change block f So, this is clearly just an annoyance, and not a useful feature. | |
GrahamC: 15-Nov-2010 | And yes, you will want to do some math on it | |
BrianH: 15-Nov-2010 | So we don't need to do an OID type, but having support for OID would be helpful. Good catch :) | |
GrahamC: 15-Nov-2010 | I guess the sort of operations you want to do are to compare oids, add leafs etc | |
Ladislav: 16-Nov-2010 | Anybody can pretend whatever he likes to pretend, but I do not understand, why a blind faith is required from me. | |
Ladislav: 16-Nov-2010 | What I wanted to demonstrate was, that: block: [a] g: closure [a] ['a] f: func [a] ['a] ; this works bind block g ; this does not work bind block f ; but it can be replaced by this, doing what was requested: change block f , i.e. there is no reason why the operation should not work, except for the fact that somebody does not want me to do it (ineffectively, since I demonstrated, that it can be done anyway | |
Ladislav: 16-Nov-2010 | you can't rebind because definitional binding depends on the order of binding operations - there are at least two things I do not understand in this sentence: * "you can't rebind" - I am not trying to "rebind" above * "because definitional binding depends on the order of binding operations" - sure it does, does that mean, that the BIND function should not work at all? | |
Sunanda: 19-Nov-2010 | As Brian says, case sensitive map is easy to do with binary keys. Here's my implementation of such, for anyone who needs it today). Improvement suggestions are welcome! http://www.rebol.org/view-script.r?script=r3-rehash.r | |
BrianH: 26-Nov-2010 | It goes the other way too: If you try to write REBOL-like code in most other languages then you will run into a wall. For most you will need to reimplement most of the natives before you can start, if it is possible to do REBOL-like code at all (often not with parsers). And when you do manage to get that code running it is often slower than REBOL code because of the optimization its natives have gone through. | |
BrianH: 26-Nov-2010 | PARSE rules are comparable to Perl 6 rules, both in speed and functionality. There are tricks you can do in either that you can't do in the other, or in some cases not easily. R2's PARSE outdid Perl 5's regexes, but R3 had to drastically update PARSE to catch up with Perl 6's rules. | |
BrianH: 26-Nov-2010 | There are tricks that you can do with dynamic rules that are provably impossible for static rules to do (patterns that static rules can't recognize). PARSE is a superset of the PEG model, while Perl 6 rules are a superset of recursive descent (LL), and there are patterns that LL can't handle that PEG can. | |
BrianH: 26-Nov-2010 | There are a lot of tricks that you can do in REBOL's DO dialect as well that can't be replicated in a compiled language without using self-modifying code. And vice-versa as well. Tradeoffs. But once you choose interpretation then you can optimize the language semantics to make that really efficient. That is why half of what a compiler does is done by LOAD, and optimized REBOL code looks a lot like what the other half of a compiler does. That is why REBOL DO is more comparable to one of Scheme's macro systems than it is to Scheme itself. | |
BrianH: 26-Nov-2010 | R3's DO dialect can be slower than compiled code for certain code patterns, but faster for others, depending on the compiler and language you are comparing it to (many dynamic languages were slower for a lot of code until recently). But you can make things a lot faster if you stop thinking of REBOL as being a language, and start thinking of it as being a library of native functions and datatypes, with a variety of high-level scripting languges built in to script that library, and some built-in functions written in those scripting languages. Plus you can add your own libraries and scripting languages if you like. Looking at things that way is the first step to becoming good at hand-optimizing REBOL. | |
BrianH: 26-Nov-2010 | That's true, "drastic" is a bit of an overstatement. Almost(?) everything you can do in R3's PARSE you could do in R2 with dynamic parse tricks, DO dialect tricks or a preprocessor. But for the average PARSE user who can't understand the advanced workarounds the new capabilities are just that: new. If you look at idiomatic R3 rules compared to their R2 equivalents then the changes at least *look* drastic. Certainly different enough that for most people PARSE is quite a bit more powerful. | |
BrianH: 26-Nov-2010 | And it was an objective, from way back when we did the first round of PARSE proposals. At the time I had been following the development of Perl 6, especially their rules enhancements. Some of the PARSE proposals were based on trying to catch up with or show up Perl 6, and others came from tricks that other parser generators like ANTLR could do (like IF). To be fair, it was an unstated objective, at least on the pages. Peta had different objectives of course, like better matching the PEG theoretical model, and those were also good. | |
Ladislav: 27-Nov-2010 | When I look at the parse project, I see these changes as very useful: 1) the FAIL keyword - has been used as an idiom and proposed before the parse project started 2) the NOT keyword - has been used as an idiom and proposed before the parse project started 3) the AND keyword - a new and useful addition 4) the QUOTE keyword - used as an idiom and proposed before the parse project started 5) the REJECT keyword - a new and useful addition allowing to stop a parse cycle with a failure 6) the IF keyword - used as an idiom and proposed before the parse project started As far as other improvements are concerned, I do not find them useful, and do not plan to use them, in fact. (YMMV) | |
BrianH: 29-Nov-2010 | We already resolved that problem earlier - maps rehash with a bigger limit when they run out of room now. All we need to do is provide Carl with an appropriate number of items to hash, where Ladislav would know what I mean by appropriate. | |
Cyphre: 30-Nov-2010 | I wonder what is difficult to simulate on the JS prototyping? IMO it is possible to do it easily in REBOL. | |
Ladislav: 30-Nov-2010 | Why do you bother to try to help Tutorial translate a non-working code example? | |
Ladislav: 30-Nov-2010 | this is not worth discussing (I do not use JS at all, using only Java from time to time), but where did he use that in his code? | |
Ladislav: 30-Nov-2010 | We can implement semantically equivalent code in REBOL, but that exact code can't be made to work. - I do not understand - that code works, what does "that exact code can't be made to work" mean? | |
Ladislav: 30-Nov-2010 | The equivalent to what RT requests would be to extend person *after* JaneDoe is created, and then have JaneDoe work. - why do you suspect him not being able to demonstrate the code he wants to work? | |
BrianH: 30-Nov-2010 | GUI frameworks tend to be a good place to use class-based or delegation-based OOP, as we do in the R3 GUI. | |
BrianH: 30-Nov-2010 | I don't really see the point though. Explicit delegation is not hard to do, especially when you write accessor functions, like in the R3 GUI. | |
BrianH: 30-Nov-2010 | We don't have the option of using compilation or static analysis (except in dialects with more overhead). REBOL's speed depends on direct binding. We could (and can now) use path-based dynamic lookup, even if it's slower, and can refer to fields that weren't there when our functions were created through that notation. We can even do a version of messageNotUnderstood using IN tests and accessor methods. But remember that this: a is faster than this: self/a which is faster than this: either in self 'a [self/a] [something-else] And "something is better than nothing" is not a factor, because REBOL is the way it is for really good reasons, and because the "nothing" is something we can do easily already. | |
BrianH: 30-Nov-2010 | DO of string! can be slow, but DO of block! is much faster. It was a tradeoff to increase the overall speed. | |
Pekr: 30-Nov-2010 | We do miss typical OOP facilities as being able to hook into init, pre-init, post-init, access phases ... E.g. Visual Objects I used in the past define: You can prevent a runtime error from occurring when an instance variable name is not found by defining methods called NoIVarGet() and NoIVarPut(). These methods, if present, will be automatically invoked whenever an instance variable cannot be found. They are called with the instance variable name as a parameter, in the form of a symbol and, in the case of NoIVarPut(), with the value to be assigned as a second parameter. This feature is useful in detecting and preventing a runtime error and also for creating virtual variables dynamically at runtime. | |
Pekr: 30-Nov-2010 | BrianH: if you don't have anything better to do, you could read one chapter from CA-VO language - chapter 25 - Classes, Objects, etc. I used it some 12 years ago, so I don't even properly remember it. But it allowed some nice tricks, as having access/asign methods, where you just used normal assignment operator, and if your child overrided the variable with virtual method, you still did not need to change the source code, you still used asignment. What was also handy was various types of visibility - protect, hidden, export .... in regards to class, inherited classes, and instantiated objects. I wonder if possible new object specs could work more like a modules, having exports too, etc. But maybe we don't need to complicated the stuff further ... In case you would be interested - http://www.cavo.com/support/manuals/vo25pg.pdf | |
BrianH: 30-Nov-2010 | It's always amazing what people will do to avoid calling a function :) | |
BrianH: 30-Nov-2010 | And you can screen function calls for security (we do this a lot in the mezzanines). It is much more difficult to screen assignment statements with other side effects. | |
BrianH: 30-Nov-2010 | Most of the module-like stuff we used to do with objects can be done with modules instead. We should be conservative about what goes in an object spec. | |
BrianH: 1-Dec-2010 | Giuseppe, part of the reason that there are no set accessors (what I called "properties" above) in REBOL is that there are no classes either, so such accessors would need to be defined on a per-object basis. This makes them quite a lot less useful. The other part of your question is that we *do* have get accessors: We use the same syntax for variable getting as we do for function calls, so you can just assign a function to a word and it will act like a get accessor. You only need real get accessors in a language that puts parens around arguments or in some other way distinguishes function calls. However, let's for the moment assume that you mean get-word accessors, functions that will still be called even if you use the GET function, a get-word or get-path to access the value. But one of the main reasons is to avoid hidden unexpected overhead and security issues. Assignment is fast in REBOL, because it does basically the same thing every time (with some variation in set-path assignment). If we had properties, that would add overhead to every single assignment statement whether to a property or not just because we would have to check for that every time. In languages with native properties their compiler makes this determination and generates the underlying function calls. With REBOL that overhead is at runtime because we don't have a compiler. We could compile our own dialects to make set-word accessors - Gregg's COLLECT, or R2/Forward's APPLY or MAP-EACH do this - but it is slower. The security issue is that at the moment assignment and get-word access is safe. Set-path assignment and get-path access is at least safe with the built-in datatypes. Accessor assignment is not safe: it can have side effects or unexpected overhead. If we had accessors then you could not safely use words that you got from unknown locations. We wouldn't even be able to screen for functions, which a lot of the mezzanine code does now. Combined with get-word arguments and that means that there would be no way to avoid code injection exploits, and thus no way to make even a secure subset of REBOL. Now with path syntax the behavior is (apparently) type-specific, so with the appropriate datatypes we can do accessor functions; .NET object wrappers would benefit from this, for instance. But that requires utypes, because there is no point to making built-in types have that behavior. Then for security we could just disallow utypes from a function that might otherwise be exploitable. | |
Pavel: 6-Dec-2010 | I've got a reply from NTP server via SNTP packet (RFC 2030) almost all nulls in client packet (in Rebol 2 UDP port, because it is not clear how to do it in R3) BTW Steeve there is UDP definitions in header files of Host kit, so I think UDP should be possible somehow, but TCP scheme is hard coded (ie not available to play with other variants) | |
btiffin: 9-Dec-2010 | I've been away kids. And the itch is back. If my goal is embedding REBOL scripting in OpenCOBOL, do I dig into a host kit yet? Can I access REBOL data from the C interface? Plop REBOL data onto the stack? Even bother to think about REBOL as an application extension language? Umm, 64bit GNU/Linux. | |
Jerry: 13-Dec-2010 | is there a way that I can do to pre-allocate a huge file? Pre-allocated file will have a continuous disk space, which makes seeking fast. | |
Andreas: 13-Dec-2010 | What antagonist language of the day do we want to counter-benchmark? | |
Oldes: 14-Dec-2010 | They are, but that's the question is different... we should be able to do such a conversions somehow. Don't know how at this moment. | |
Oldes: 18-Dec-2010 | Let's have: o: context [a: 1 b: 2] I can do: values-of o ;== [1 2] Can I update these values somehow to get o == make object! [a: 3 b: 4] just using block of values [3 4]? | |
BrianH: 20-Dec-2010 | It's used in mezzanines, for instance. I tend to just write code in micro-optimized form in the first place, since it is easy to do and saves you the trouble of doing it later. Even if you are macro-optimizing the code (refactoring and such) you tend to use the same micro-optimizations in the new code. For that matter, many of the changes and enhancements in R3 were done to make micro-optimized code cleaner to read and write than they are in R2. But I mostly write library and mezzannine code nowadays, so micro-optimization has greater impact than it would for user-level code. | |
Gregg: 20-Dec-2010 | I tend to just write code in micro-optimized form in the first place And do you consider that premature optimization, or not? | |
Ladislav: 21-Dec-2010 | Re "premature optimization" - I do not think I ever did have any feeling I used that. For example, I would never want to write O(n *n) code when O(n) is available, no matter how would anybody want to call my approach. | |
Ladislav: 27-Dec-2010 | Do we know a reason why it is desirable to have decimal! NaNs? | |
Sunanda: 28-Dec-2010 | The primary reason for supporting NaNs would be for easy of interaction with systems that do support NaN, eg Oracle. Right now, any REBOL system that was trying to trade values with an Oracle system that supported NaN and +/-INF would need to code for special cases. However, I do not know of anyone who has such a need -- so time for some to make the busines case! | |
Ladislav: 28-Dec-2010 | Any particular language you do want to imitate? | |
Geomol: 28-Dec-2010 | Many languages are implemented using C. If you don't do anything particular regarding NaNs, you get outputs like from this C program: #include <math.h> #include <stdio.h> int main() { printf ("%lf\n", sqrt (1.0)); printf ("%lf\n", sqrt (-1.0)); printf ("%lf\n", sqrt (2.0)); } Output: 1.000000 nan 1.414214 So it may actually take more effort to grab the NaN output and make e.g. an error output. Like REBOL does: >> square-root -1 ** Math Error: Positive number required ** Near: square-root -1 | |
Ladislav: 31-Dec-2010 | Re: "I am open to it" - maybe I misunderstood: do you mean, that you really want to obtain NaNs from expressions instead of errors being triggered? | |
Kaj: 4-Jan-2011 | I was hoping it would do more or less what you programmed: servicing system events but without waiting for all windows to close | |
Pekr: 11-Jan-2011 | The we should stick to principles. But I am not sure even Carl himself is strictly following the rules. In his doc he claims, that 'quit is as clear, as quit-system. Well, we have 'do, and we have 'do-browser, 'do-service, where we are breaking on encapsulation rules, with excuses to not polutu 'do's name-space (not complicating it - because in other words, the proper way is to use refinements, as do-browser could be do/browser as well) What is a bit tricky about question marks is, that the meaning is not clear enough,e.g. - modified? Does it stand for the logic value, returning the true or false, or does it stand for the return of modification date? How should user know? That is just my opinion on this topic - sometimes things are not easy to sort-out. Rules are rules, and we should probably stick to them ... the other thing is, if we are not forgetting another rebol "rule" (or at least principle) - make things pop-out to your mind at first sight, if possible. So - what is more self-explanatory - faces?, or get-faces (or what was the suggestion alternative)? | |
Ladislav: 11-Jan-2011 | Whether to prefer 'do-browser or do/browser - such a principle was not stated explicitly, so, we do not have any "guide" which one shall be preferred | |
Pekr: 11-Jan-2011 | Well, I think I know why we went with do-*, open-* - simply to not overload those functions with refinements, and hence slowing them down ... | |
Kaj: 11-Jan-2011 | Sorry, but it makes no sense to interpret this optional convention strictly. If we do, we also have to do the following renames: | |
Kaj: 11-Jan-2011 | Every variable name is a noun, in principle. Do we have to use question marks on all variables? | |
Ladislav: 11-Jan-2011 | it is hard to use a logic argument when you refuse to discern nouns from other words, but, in that case, you are unable to stick to the function naming convention anyway, and I don't know what do you want to discuss | |
Ladislav: 11-Jan-2011 | The difference is, that when sticking to the convention, it is easier to find out, that: DO is a function, PRINT is a function, GET is a function, LENGTH? is a function | |
Steeve: 11-Jan-2011 | when "length" is followed by a serie Why do we need to write "length of serie" , Is that not already implicit ? | |
Steeve: 11-Jan-2011 | I just wonder, giving that idiom -> length serie Why do we need to specify: -> length of serie Is that not already implicit, that the word "length" applies on the "serie" | |
Ladislav: 11-Jan-2011 | if you are saying "I do not want to respect the REBOL function naming convention" then I don't want to change your mind in that. But, I think, that a reasonable naming convention is of advantage, and the one Carl wrote looks good enough to me. | |
Ladislav: 11-Jan-2011 | I do want to respect the convention when possible, and, frankly, you cannot do anything about my will in that respect | |
Ladislav: 12-Jan-2011 | I do not think, that the name of a function should describe everything, so, if I really want to get the maximal of the values in a series, I can be content to know that the MAXIMUM-OF function exists and be prepared to read the doc string what it actually does. | |
Ladislav: 12-Jan-2011 | or, if you do not want to, I can do it | |
BrianH: 12-Jan-2011 | I don't have the time this week to do so, and am waiting on some more community understanding before I jump in. The "intrinsic property" thing likely won't survuve the cut, being replaced by the "implicit -of" thing. |
9701 / 11578 | 1 | 2 | 3 | 4 | 5 | ... | 96 | 97 | [98] | 99 | 100 | ... | 112 | 113 | 114 | 115 | 116 |