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: 3301 end: 3400]
world-name: r3wp
Group: I'm new ... Ask any question, and a helpful person will try to answer. [web-public] | ||
Henrik: 29-Jun-2006 | normand, also remember that rebol can do date checking, so you don't have to check that manually as well | |
Geomol: 12-Jul-2006 | If you allow more than one refinement at a time, an approach is to build up the code in a block, depending on the refinements (using if), and then evaluate the block at the end of the function. Example: f: func [/a /b /c] [blk: copy [] if a [append blk [print "ref a active"]] if b [append blk [print "ref b active"]] if c [append blk [print "ref c active"]] do blk] >> f/c/a ref a active ref c active | |
Pekr: 31-May-2007 | well, REBOL 2.0 generation allows mainly PITS (programming in the small). Some are building tools, or just some styles for View, then release to public. PPL do build applications, but I am not sure those are "killer" ones. E.g. AltME - secure from the very beginning, fine for your small team, but is that killer app? Hard to tell :-) | |
RayA: 31-May-2007 | I believe in Carl's vision "REBOL is perfect for lightweight distributed applications". Users need light-weight responsive gui clients that can work both online and offline. The evolution of the Web is moving (slowly) in this direction, with AJAX/Flash/JavaFX as examples of a more responsive and rich gui clients, BUT it's too complex and unreliable. The industry is adding kludge upon kludge to "fix" the problems resulting in further complexity and code bloat, but what is needed is a clean approach that captures the essence of what made the web a phenomal success in the first place - any body could set up/develop a web site and they did. Enterprise data centers need scalable, reliable, manageable (server) applications that run 24x7 on commodity hardware ata reasonable price. The user PC's should require zero management for the applications, which is the primary (only?) attraction of the web ui. Question if the application is simple to manage and delivers the functionality the user wants, why do they need a fat complex os? As an example my kids get online to play games, research homework, etc. and they hate it (so do I) when the PC/OS gets in the way. Also, that PC/OS is a major source of trouble with viruses and lack of (simple) control to what my kids can access. | |
DaveC: 31-May-2007 | Hi RayA and Welcome. I am a new to AltMe too. I think you are right about the evolution of the web. The Desktop OS has become an application in itself (IMHO). It's the focus of so much angst, controversy and complication. (Nailing my personal colours to post here: I declare myself a BSD UNIX type. I can still install the latest version in much less than 100MB of HD space and 32MB ram and 100Mhz CPU. In fact I run it on an old Toshiba laptop with that spec and get real work done) I think, in principle, DOS was my idea of a good OS (I know, I know...) It was small, fast a stable. Yes - lockups were common when pushed, but I found it was the application that crashed rather than DOS itself. Ok. back in the world of the 21st Century, an OS need many many times the resources of DOS just to get itself booted. But basically, all I want from the OS is to let the applications get on with the job in hand. What attracts me to Rebol is that it is clean and lightweight. Designed by a man who I respect as a Computer Scientist. (And, of course, the Rebol community, which collectively one might say is a "killer app" too). It's very productive and I'm building internal information systems with it. I've got a few ideas to build my own apps outside of work, that is an exciting prospect for the future. I keep trying other frameworks/languges and over the last six years or so I've lost the "Rebol way" and strayed from the one true path! I do find myself coming back to Rebol as I run into more library conflict/dependency/blot features of some of the other languages I used. Maybe I'm getting impatient of complicated technology now I'm older. I just get tired of having to search the internet for the latest whatever.so.1 lib, or what have you. I'm making a general point here BTW - I know there are some very good language implimentations out there. I don't know what the next killer app will be, but I do think there is a place for a machine "Powered by REBOL" which boots in a few seconds, lets me communicate, write view images, multimedia, code my own Rebol apps from a set of built in services, oh and the battery lasts for days - not hours! It would have to display HTML too (legacy web :-)) So there you go, a bit of a rant from an old geezer technologist . Now where's me 8" floppies I need to boot that PDP-11? | |
Gregg: 31-May-2007 | Does REBOL provide architecture documentation/guidelines and/or frameworks for the development of scalable, fault tolerant, manageable, with hot code swapping for soft real-time 24x7 applications? Petr already covered the basics (Thanks for doing that Petr!), so I'll just chime in with opinions. I've been using REBOL since 2001. No tool is perfect, and REBOL is no exception, but there are only a few things I think it really isn't suited for even in its current form. It was not designed for programming in the large, but that's a benefit as much as a drawback, until you start building larger systems. IME, REBOL does require a different mindset if you want to get the most out of it. You can write code as you would in many other languages, but you won't see the big benefits REBOL offers if you do. It's still a good tool, even used that way. The docs and tools you asked about don't exist in official form, but there are a lot of "pieces" in the community. I'm working on something now that has those same goals. | |
Henrik: 31-May-2007 | I find myself changing the mindset with REBOL every few years, because for a long time I was afraid of for example, using PARSE. PARSE is so central and important that it can change the way you work with REBOL, if you have stayed away from it. I had the same experience when starting to use the SDK and when starting to do networking stuff in REBOL to let scripts communicate with eachother. It's not just a new set of ideas that turn up that lets me add to existing scripts, but doing the same scripts in entirely different ways. I feel I know about 30-40% of REBOL. :-) It's so damn deep. | |
RayA: 31-May-2007 | Thanks everyone for your prompt and honest comments. Why did I join this community? The primary reason is to be part of a small, smart and passionate group who think differently, which when combined with REBOL is a very powerful combination. Therefore it would seem that focusing the resources of the community on a "killer" application leveraging REBOL3 would increase the chance of REBOL becoming main stream, and as a side effect possibly allow part time REBOL developers to become full time REBOL developers. As an example, think what Ruby on Rails did for Ruby. Wouldn't it be nice to get paid to do what you love! IMO/E I believe it's very important for the application vendors to have very close and strong ties with the platform vendor so architectures and features can be designed and exist at the correct layer. Also, if something needs to be implemented in the application but really belongs in the platform, it can be done in a way that enables that feature to be migrated in the future with minimal impact and extra work. This seems to fit with REBOL's history of improving based on experience. I'd like to think it's possible to build great applications in 3 months, with new releases every three months as required based on requirements, so I don't have the time (and maybe not even the ability) to spend years learning REBOL. I'd also argue that for a company to be successful, it needs a small team to have a number of diverse skills which is focused on delivering the product. I mentioned when I first signed on that I would be interested to meet REBOL gurus who are in Northern California and see what happens when interesting (or not) people get together. Sorry for the length of this post and thanks for listening. | |
Henrik: 31-May-2007 | About dialects: You may not know what it is, so I'll give a brief real example of what I did, when adding a dialect to my database system. It does 3 different database operations, the details don't matter, but here goes: lock-state: db/release locker-id current-object set [lock-state current-object] db/add-object locker-id if all ['locked-by-me = lock-state object? current-object] [ current-object: db/advance locker-id current-object ] This is RPC based, which means I call specific functions in the database over the network, pass parameters, get stuff back in return and maintain database environment variables. This is how you do it traditionally. Now with a dialect, you can say something like this: do-database [release add advance] As you can see, it's an incredible code reduction. Same 3 operations. A part of it is of course that database environment variables are maintained internally and are not really a part of the dialect, which further reduces code. But I consider it a side effect of dialecting and makes it easier to design a uniform way of talking to the database. Now which method would you expose to a third party developer? :-) | |
Henrik: 31-May-2007 | Pekr, the functions would have specific and different input parameters. That's not required here. For example above, the 'add word, adds an object to the database. The 'advance word advances the same object to the next stage (hard to explain), but I don't have to pass the object again, since the dialect parser is not finished with parsing and keeps the variables in the air automatically. Besides, do-database is only 1 network operation. The traditional one requires 3. | |
Geomol: 3-Jun-2007 | I think, it is a plus to know functional programming. And if the programmer is used to do more than one thing in each line/statement, that will help also, when learning REBOL. Things like: insert back tail serie somefunc + 1 is often seen in REBOL. Experience with scripting languages is probably also a plus. I too had a background on the Amiga, staring in 1987 with an A500. In the 90'ies I started to explore the operating system more closely, and then it was natural to check out, what Carl was up to. Prior to REBOL, I've programmed in many languages incl. C, C++, 6502 ASM, PASCAL, COBOL, LOGO and sh and csh scripting. I develop many different things with REBOL from graphical applications, games and astronomical applications to tools, languages, databases, xml-stuff, word processor, etc. It's very few things, I would choose another language than REBOL to do. | |
BrianH: 3-Jun-2007 | I first got into REBOL on a complete whim - back then I used to learn and make new programming languages for fun. If you want to understand PARSE, it helps to have some background in parser generators, particularly recursive decent ones like Coco or Antlr. You can do more with PARSE, but the basic way you structure parse rules follows the LL model. Knowing regular expressions will not help. | |
Oldes: 3-Jun-2007 | using... def go_crazy capture_image until @camera.memory_card_full? end ...seems to be useless if you need to do more than just call one function.... but I don't know Ruby at all, so maybe I'm wrong | |
Geomol: 4-Jun-2007 | I think, performance should win over expressiveness. I'm think, we don't have action unless condition in REBOL, because it'll cost in performance to check, if there is an 'unless' after the action. As it is now, the REBOL intepreter knows what to do most of the time. Operators are the exception of the rule. | |
Gregg: 4-Jun-2007 | Since REBOL requires a programmer to think differently", in general what type of person, skill set, and/or background is required for a person to be a good REBOL programmer?" You just have to be open minded, and I think it helps to be curious. You also need to understand that REBOL is high level, but not safe in the sense of being dumbed-down so you can't do dangerous things. You can do *very* dangerous things in REBOL. You don't have direct mem access, so the risk is mainly to your own app, but since it's almost infinitely flexible, you can create works of art, or hideous beasts. "what attracted everyone on this newsgroup to REBOL? And, in general, what type of applications are people trying to build?" The small size, built-in GUI, and tiney-but-powerful demos are what attracted me initially. To be able to download the EXE, install it, and run 5 or 6 GUI demos in a couple miuntes just blew people away in 2001 when I showed it to them. What keeps me here is that there's nothing else that's as much fun to work in (for me). It can be frustrating too, I won't lie about that, but the benefits so far outwiegh the negatives for me, that I hate having to use other languages now. I also love the community. I would count some of the people here as close friends now, and it's very satisfying to collaborate with them, even just on fun little projects. What *really* excites me, though, is that I think we're still only tapping about 5% of REBOL's potential, maybe less. If you write code in REBOL like other languages, there are benefits but they aren't earth-shattering. When we get to the point that 10% of REBOLers write dialects, and 90% of REBOLers use them, and use REBOL as an interchange format, then we'll really be taking advantage of REBOL. | |
BrianH: 4-Jun-2007 | Geomol, I wouldn't know about R3 but in R2 ops are a little faster than their prefix equivalents. The reason is that DO already knows which words are ops, while it has to look up other words to figure out what they are. This lookup takes more time than just grabbing the right action out of the op table. It does have to retrieve the index into the op table from the value assigned to the op, but it's still faster than general action lookup. Try assigning a non-op value to an op word - it will error on evaluation. | |
BrianH: 4-Jun-2007 | Why did I join the community? Because when I joined, REBOL was still pretty new. R2 wasn't there yet - the first alphas for it came a few months after I started playing with the language. Most of the low-level behavior of the language was completely undocumented outside of RT, and they were still trying to position the language as easy to use, easy to learn, high level. It still looked like R1 - Scheme with a different syntax - but it was different. A challenge. So I dug in. I tested every function, everything I could find out. I asked a lot of questions on the mailing list. If they weren't answered, I dug in further and figured it out myself. And I got into a lot of really interesting arguments with the people on the list, testing and probing the language until all of the undocumented stuff became clear. Those early arguments became the low-level documentation of REBOL. And then came the books, and the community got bigger. I started using REBOL at work, even when it wasn't the language I was supposed to be using - code is easier to generate with REBOL than it is to write directly in other languages. More fun too. That's the hook: REBOL is fun. There is a principle I read in a Heinlein essay years ago: The principle of Creative Laziness. He wrote about the guy who invented the automatic pilot, back in World War 2, because piloting back then was a big hassle and he was too lazy to do it. Instead of doing the drudge work he did the more interesting task of figuring out how to automate it. If necessity is the mother of invention, then laziness is its father. Laziness is a virtue. That's what dialecting is all about: Automating the drudge work and wrapping it in a nice little language because it's more fun than doing it manually. More efficient too, a lot of the time. Do you know who REBOL appeals to the most? Engineers, scientists, hackers, analysts, problem solvers. People with opinions, people with enough of a twisted sense of humor, of the world, that they don't want to just sit still and accept the way that they are told the world is - they want to figure it out and remake it if necessary. Interesting people: REBOL's other hook. Welcome to the cool kids' table! | |
Will: 8-Jun-2007 | HELLO, do you have a simple solution, I'd like 'z to stay 10, eg it should be a local in the function z: 10 a: func ['word body][ foreach row [1 2 3][ set word row reduce body ] ] a z [print z] print z | |
Gregg: 8-Jun-2007 | Look at the source for FOR. If that technique works for you, it will lead you to something like this: z: 10 a: func ['word body /local do-body] [ do-body: func reduce [[throw] word] body foreach row [1 2 3] [do-body row] ] a z [print z] print z | |
PatrickP61: 17-Jul-2007 | What is the best way to get an formatted timestamp that matches IBM DB2 in this form: ccyy-mm-dd-hh:mm:ss.nnnnnn I tried this, but I'm stuck on how to extract out the nanoseconds from Now/precise: Timestamp: rejoin [ now/year "-" now/month "-" now/day "-" now/time ".000000" ] Also, if the month or day is less than 2 digits, I need a leading zero -- how can I do this easily? | |
Gregg: 17-Jul-2007 | I have a format func that isn't on REBOL.org (yeah, I know...; it requires another func, etc.) if you have to do a lot of formats and don't want to roll them all. Anyway, let me know if you want me to send it Patrick. | |
PatrickP61: 17-Jul-2007 | OK -- I'm perplexed as to when does things get evaluated. If I have a variable like Now-TS: to get the formatted time, it will be resolved immediately and return the time. If later, after I wait 1 second, I want to print the new formatted timestamp, it returns the exact same value as before, when I know the time has acutally changed. How do I get the time now to be resolved again? Example code: print now/precise gives 17-Jul-2007/14:35:21.308-5:00 wait 1 print now/precise gives 17-Jul-2007/14:35:22.324-5:00 now/precise is evaluated immediately Now-timestamp: rejoin [ Now/year "-" Now/month "-" Now/day "-" first Now/time "." second Now/time "." third Now/time "000" ] print Now-timestamp gives 2007-7-17-14.35.22.0000 wait 1 print Now-timestamp gives 2007-7-17-14.35.22.0000 the exact same time -- not evaluated immediately Is it this way because Now-timestamp has been assigned and already evaluated -- if so, how do I have it reevaluate it again? | |
BrianH: 17-Jul-2007 | DOES is a shortcut for creating a function, DO evaluates its value directly. A variable is not evaluated when assigned - the value is, and then it is assigned to the variable. You don't really "define" variables in REBOL, but the distinction may be more complicated than you need to worry about for now. | |
PatrickP61: 17-Jul-2007 | Thanks Brian. I will play around with it a little more. Just to re-iterate my understanding of rebol assignments A variable is not evaluated when assigned - the value is, and then it is assigned to the variable. You don't really define" variables in REBOL" So at the time of assignment, the text following the : is assigned to the variable but is not evaluated. That is to say the variable is like a pointer to the text string that was typed in. Does that mean that Rebol will not do evaluations until it needs to. For example: In-file: %file_path_name.txt In-text: Read In-file write %out-file-path-name.txt In-text <-- this is where the evaluation occurs to resolve all the above? Is that right? | |
BrianH: 17-Jul-2007 | REBOL variables don't really need to be declared, as such, but you do need to declare function parameters and object fields. Some of the REBOL language look like they are declaring variables, but they really are doing something different. | |
PatrickP61: 18-Jul-2007 | Thanks for your patience with me. I'm wrong about the evaluation. It is done at the time of the assignment returing whatever value to the variable. The reason Now-timestamp had identical values, even after waiting 1 second was that it was evaluated once, with a value put into it, then the wait happened, then I simply re-printed the same value as before, because I did not re-do the variable. I think I was making it harder than it really is. I don't understand this statment: Later on you can either do a full evaluation of the word by stating it directly ( a ) or you can just retrieve its value by using a get-word ( :a ) Are you saying that I can simply type Now-timestamp to have it re-evaluated at that time? | |
Gregg: 18-Jul-2007 | If you read the Core manual on REBOL.com, it has a pretty good explanation of the four word types (normal, lit, set, and get). The other thing to understand is when blocks, and nested blocks, are reduced (evaluated). That can be tricky to figure out sometimes, because funcs like PRINT do it automatically. If you can get a handle on when things are evaluated--and don't stress when you have to add a REDUCE or COMPOSE but aren't sure why--and if you can grok the four word types, you 'll be in great shape. | |
PatrickP61: 19-Jul-2007 | Hi all -- I didn't mean to cause additional entries to other libraries -- just tried to format it in my own routine. But since there is interest, I double checked the official IBM SQL reference manual for timestamps. So for the record and for your information: Although there are many many different forms (Japanese, Europe etc), I only focused on two elements, the ANSI ISO timestamp, and IBM SQL timestamp standard. So in the IBM book "DB2 UDB for iSeries SQL Reference V5R370" under "Data Types, Datetime values, table 10 page 70": _________________________________________________________________________________________________ Table 10. Formats for String Representations of Timestamps Format Name Time Format Example ANSI/ISO SQL standard TIMESTAMP ’yyyy-mm-dd hh:mm:ss.nnnnnn’ TIMESTAMP ’1990-03-02 08:30:00.010000’ IBM SQL ’yyyy-mm-dd-hh.mm.ss.nnnnnn’ ’1990-03-02-08.30.00.010000’ 14–character form ’yyyymmddhhmmss’ ’19900302083000’ _________________________________________________________________________________________________ For the record, I think I confused the two types. Notice the embedded space between the date and time as well as : separators for ANSI/ISO, while the IBM SQL standard contains it all (no embedded space) and uses periods to separate the time elements, which I will easily fix in my version. -- You may wish to do the same for any new form of date you have. | |
PatrickP61: 19-Jul-2007 | Thanks btiffin -- Yes I agree that having a library of common routines is the way to go. I'm new and just learning how to play with Rebol with the approach of -- If I do it this way, what will rebol do, rather than, use the library to find common routines, and use it, which of course I would do to solve a specific problem. Rebol.org is a great resource! | |
PatrickP61: 19-Jul-2007 | Hi all, As you may have guessed from my above posts, I'm trying to write a script that will convert a formatted report into a table or CSV. I'm new and just playing around to understand the process. In any event, I did search rebol.org on CSV and found the CSV.r script which seems to a part of what I would like to do. But here is my concern. The Mold-CSV function does not handle all the different kinds of strings that can occur. I'm talking about embedded " or {. I would like a function that can handle all strings properly into CSV. Take this example: In-block: [ [ "C A1" "C B1" ] [ 2 3 ] [ "2" "3" ] [ "4a" "4b" ] [ "5a x" "5b y" ] [ ""7a,"" ""7b,"" ] [ ""a8""" ""b8""" ] ] Mold-CSV In-block doesn't handle 7a or a8 lines properly since the "" terminates a string. You could replace the first and last " with a brace {} but that does some funny things too. | |
PatrickP61: 19-Jul-2007 | Anton, What do you think of this approach -- I'm just thinking it through and am not sure if I have covered all the bases. Since my input can contain any number of symbols, commas, single and double quotes, and rarely, but possibly braces, what if I attack the problem a different way. Whenever an embedded comma, or double quote or something like that occurs within an spreadsheet cell, it will require some kind of "extra" formatting like two quotes or the like. It may even be that there are unique combinations of such symbols, rare as that would be, to have complex formatting of an input block for rebol to convert it properly for CSV. What if I shift gears and look at a TAB delimited file instead. I know that I will never have TAB embedded in my cells, and that I deal with the entire block as a series instead. I could embed TAB wherever needed to separate the columns and leave the remaining string the way it is. Would that work, or would I still need to do some formatting to handle it. I think I'll open an excel spreadsheet, and work in reverse to see what it needs for TAB delimited file. Any comments? | |
RobertS: 1-Aug-2007 | Put another way, what is the rule for when a word must explicitly bear the sigil prefix of : ? I.e., when is a get-word! required and when does any word suffice? ::word is an error but to file! :myString in a func is no different from to file! myString and how do you pur carriage-returns into this message-post box! ;-) | |
Gabriele: 3-Aug-2007 | hmm, not sure i understand here. what do you want to add to docbase? | |
btiffin: 3-Aug-2007 | I was just kidding...I'm about half way through using your pdf-maker (v2) to document the R2 datatypes regarding to string! form mold. Blog http://www.rebol.net/r3blogs/0092.htmlbut like I everything I do now-a-days, it comes pre-expired :) | |
Gabriele: 4-Aug-2007 | what you say instead is that some values do not have a mold representation, so that they mold to something that once evaluated, returns the value (eg make object! ... and so on). | |
Geomol: 5-Aug-2007 | From the previous discussion I got the impression, that everything is words, when they're typed in, or viewed as output. My reasoning goes as: if NONE is a word when inside a block (initally without specifying, what we do with that block), then everything inside a block must be words (initially). Then the input parser take that block and figure out, what's inside. Some of the stuff inside ende up as other datatypes (in this case integer!), others are left as words. Or? What I find a bit peculiar is, that things like [integer! none +] are left as words and not being parsed to the expected datatypes. | |
Gabriele: 5-Aug-2007 | looking up the values of words is something that is not what LOAD is supposed to do. you could load a dialect block or just some data. words can be used just as symbols, not to reference values. | |
RobertS: 5-Aug-2007 | >>system/console/prompt: [ reform [ now/time ">> "]] ;; good tutorial candidate from 'Rebol for Dummies' by Ralph Roberts >>to-integer #2A ;; Hex. But what was the question? >>big-Q: does [ rejoin [ none ". But the answer is: " to integer! #2A]] >>big-Q >>little-Q: [ rejoin [ none ". But the answer is: " to integer! #2A]] >> do little-Q >> do big-Q ;; now you get an error because none is the has-no-value word >> type? none >> path? 'none/first | |
RobertS: 25-Aug-2007 | More and more I think that was is not obvious is no longer obvious once it is obvious There is an 'active' LISP tutorial that would be a good model for a 'Rebol for newbies' I would like to use the approach taken in the 2.3 "Official Guide" book to introduce unit testing in Rebol for TDD "from-the-get-go" In Smaltlalk we used to count on newbies exploring in a workspace: we reaped a culture where people thoght the point of O-O was to write subclasses and create deep hierarchies like, say, Collection. What was obvious was just wrong. Messages were the point, not classes, let alone sub-classing. Am I wrong to suggest to anyone new: "buy as used copy of "The Official Guide" " ? For Oz, which is so much like Rebol, I do not hesitate to recommend Peter Van Roy's CTM from MIT Press. Scheme has 'Little Schemer' and 'Simply Scheme' The latter would be my model for an interactive tutorial in which you LEARN. Smalltalk was supposed to be about how we model things ( how we learn how things interact ) I think it fair to say that it failed. Classes were not the point. Objects were not the point. Things went wrong early on in abandoning the Actor Model in early 70's I am hoping Rebol3 is getting it right ;-) ( Io, the language, is quite inspiring ( www.iolanguage.com ) but I still think Oz is a great intro to Rebol (they, too, lack an effective learning tool to "think in Oz " ) | |
RobertS: 26-Aug-2007 | Can u tell me why we use datetype unset! in the func list-dir but not in the func to-logic I.e. why do we not have to logic! return false when I pass in it an unset! ? Or am I missing something here ? Maybe I miss what is the diff between 'qwetr being type set-word! and it not having a binding yet or my having sent unset 'qwetr Is this like the diff in other lang's between nil_or_null and undefined_or_undeclared ? | |
btiffin: 26-Aug-2007 | Robert; By definition in REBOL the only logical false values are #[false] and #[none] So for instance, integer! 0 is logcally true, which took me by surprise at first, but that is the way of REBOL. Surprise! Usually pleasant. :) Aside: The other words that evaluate as false; no, off (others?) do not have a pure lexical form so, #[off] is not a loadable value but the word off still evaluates to #[false]. And to logic! get/any 'an-unset-word will evaluate as #[true], as back to the defintion, only #[false] and #[none] are false. As far as I understand it anyway. | |
RobertS: 31-Aug-2007 | ; I did a dif between the functions in VIEW and those in CORE for a default install. What I get is this ( I hope it is useful to have al 106 in one place ) alert brightness? caret-to-offset center-face choose clear-face clear-fields confine crypt-strength? dbug deflag-face desktop dh-compute-key dh-generate-key dh-make-key do-events do-face do-face-alt do-thru draw dsa-generate-key dsa-make-key dsa-make-signature dsa-verify-signature dump-face dump-pane edge-size? editor emailer exists-thru? find-key-face find-window flag-face flag-face? flash focus get-face get-net-info get-style hide hide-popup hilight-all hilight-text hsv-to-rgb in-window? inform insert-event-func inside? install launch-thru layout link-relative-path load-image load-stock load-stock-block load-thru local-request-file make-face notify offset-to-caret open-events outside? overlap? path-thru read-net read-thru remove-event-func request request-color request-date request-dir request-download request-file request-list request-pass request-text reset-face resize-face rgb-to-hsv rsa-encrypt rsa-generate-key rsa-make-key screen-offset? scroll-drag scroll-face scroll-para set-face set-font set-para set-style set-user show show-popup size-text span? stylize textinfo unfocus uninstall unlight-text unview vbug view viewed? win-offset? within? | |
Allen: 3-Sep-2007 | not as much fun as exploring/learning with your own funcs, but help "?" can do some great things, including matching on datatype "? tuple!" is a quick way to lookup colours. | |
RobertS: 12-Sep-2007 | ; using a context there is no problem traversing a path into nested blocks. But there is using nexted blocks alone. Here is my first answer to this... >> t1: [a "one" b "two" c "three"] == [a "one" b "two" c "three"] >> t2: [f t1] == [f t1] >> t1/b == "two" >> t2/f == t1 >> t2/f/b ** Script Error: Cannot use path on word! value ** Where: halt-view ** Near: t2/f/b >> pword: func [path 'word /local blk] [ [ return to-path reduce[path :word]] >> do pword t2/f c == "three" ; pword is my first pass at a function to traverse nested blocks which are not in an object; the alternative appears to be blk: get t2/f aPathDeeper: make path! [ blk c ] ; anyone know anoth path to take? | |
RobertS: 12-Sep-2007 | ; this issue persists >> t2: [functor t1] == [functor t1] >> p3: to-path reduce[ t2/functor 'x] == t1/x >> do p3 == [f "for"] >> p3: to-path reduce[ t2/functor 'x/f] == t1/x/f >> do p3 ** Script Error: Invalid path value: x/f ** Where: halt-view ** Near: t1/x/f ; there seems to be no way to "append'" to a path ?? | |
RobertS: 12-Sep-2007 | >> p4: to-lit-path [t1 x/f] == 't1/x/f >> do p4 ** Script Error: Invalid path value: x/f ** Where: halt-view ** Near: t1/x/f >> t1/x/f == "for" | |
RobertS: 12-Sep-2007 | ; this works >> p4: to-lit-path 't1/x/f == 't1/x/f >> do p4 == "for" ; but it is no help if t am trying to pass in the path the I wish to "extend" deeper | |
RobertS: 12-Sep-2007 | >> p4: to-path "t1/x/f" == t1/x/f >> do p4 ** Script Error: Invalid path value: t1/x/f ** Where: halt-view ** Near: t1/x/f >> type? p4 == path! >> get first p4 ** Script Error: get expected word argument of type: any-word object none ** Where: halt-view ** Near: get first p4 ; using get first or get second or get last usually is handy diagnosing what is reported as a path but in fact fails as a path | |
RobertS: 13-Sep-2007 | I am trying to compare what I can do in Rebol to what I can do in another language with functors What hamstrings me is that a path cannot be extended unless the blocks are literally nested or in an object I am hoping some one will da ythat in R3 path! is more like a series! path: this/thing path: append path 'what rez: path | |
Chris: 13-Sep-2007 | The path is not valid, so long as you are trying to resolve it with 'do. | |
RobertS: 13-Sep-2007 | The path! that my 'pword func returns responds as expected to 'do | |
Chris: 13-Sep-2007 | Iin your example (again, if I understand correctly), 'do (or default behaviour) resolves each stage in the path. So, with a given path -- t2/f/b -- it'll go t2/f == 't1-- but this is just a word, not the value associated with the word. It's equivalent to this: val: 't1 val/b | |
Chris: 13-Sep-2007 | join to-path do path 'a | |
Chris: 13-Sep-2007 | path: 't2/f do join to-path do path 'a | |
Group: Announce ... Announcements only - use Ann-reply to chat [web-public] | ||
Terry: 18-Feb-2005 | Do i need to put up my hand to go potty? Or will setting the status to "bathroom" be ok? | |
Gregg: 26-Feb-2005 | Let me try this again. RT hosts this world for REBOL discussions, and they graciously don't complain that we have a lot of off-topic channels, probably because they understand that's how people work. It is for the REBOL community. There aren't any set rules here, nor do I think we need them. I think that, as a community, we need some non-REBOL channels, just not so many; and not so "loud" (i.e. active) that they consistently shadow the REBOL content. If each of us "self monitors", there should be no problem. i.e. if you find yourself writing a lot more non-REBOL-related messages than REBOL-related ones, consistently over time, think about whether that's adding value to the world. I disagree somewhat with the view of "let them opt out of a group if they don't like it", because that puts the power in the hands of one group to drive others away. That's just me. To me, a group belongs here, and a conversation has value, if it is of interest to the vast majority ofere people who are part of it. Here are a couple suggestions: 1) Don't post a long stream of uninterrupted messages. If there's a subject on your mind, post a message or two on it, and see if anyone responds. If not, don't keep posting more messages on that subject. 2) If a non-REBOL conversation involves only two or three people and/or is argumentative in nature, go private or off-world. Again, this is not our world; let's not abuse RT's storage and bandwidth. Thanks! | |
Coccinelle: 11-Mar-2005 | I updated the sql-protocol script. It's always on the script library here http://www.rebol.org/cgi-bin/cgiwrap/rebol/view-script.r?script=sql-protocol.r The only change is related to the sql dialect for the FROM clause. Now the following syntaxes are possible: FROM table table ... (existing syntax) FROM [table alias] [table alias] (existing syntax) FROM table AS alias table AS alias (new syntax like SQL) FROM alias: table alias: table (new syntax more "rebolish") What do you prefer, something very near to SQL or something more in the spirit of REBOL. Your feedback is welcome, I prefer by mail ([marco-:-ladyreb-:-org]) | |
Rebolek: 8-Jun-2005 | I've updated my two years old Texture Studio (now TextureX) to work under new View betas, you can try it - do http://krutek.info/rebol/texturex.r | |
Graham: 11-Jun-2005 | What's the menu system do ? Moving to ann-reply | |
ChristianE: 12-Jun-2005 | Next version is 0.2.0 and features an experimental SLIDER-ITEM in menus. A bit of a proof of concept, but fun stuff. To run the demo, do the link below. | |
Carl: 8-Jul-2005 | I would like your permission to publish some of the groups here on R3 to the web site. See: http://www.rebol.net/article/0183.html The only groups that will be published will be those that have descriptions that contain the string [web-public]. If I do not hear any objections (post them to "Carl Only" group), I will fire up the scripts and get this started. | |
[unknown: 9]: 31-Dec-2005 | The Gripe: Go here www.Rebol.org, then go here: http://www.ruby-lang.org/en/, then here: http://java.sun.com/, hell even go here, http://msdn.microsoft.com/vbasic/, now go back to www.Rebol.com Even if you don't know what the language is or does, do you want to go to Rebol.org? The main page looks like the last page in the basement of a website. Almost like an "error page" O There is no single location for all Rebol information. O Rebol.net, Rebol.com, and Rebol.org are spread out and run by RT. O There is no pizzas! O I don't "feel" community when I visit these sites. I know I'm not talking to my audience when I say; "think of this like a night club" but this is what this is all about. People want to "be where the fun is happening." Even programmers. My Suggestion: O We need a site controlled by the developers. O We need a forum where people can bitch and meet each other, and feel welcome. O The site needs to have a consistent dynamic attractive template. O The site needs to be a clearing house for all other sites. Teach and directing people to all the resources. O The site needs to paint a picture as opposed to describe everything with a thousand words. What is entailed: O Start a new site, I would propose "RebolCentral.com" I'm willing to pay for it, but I don't want to be in charge of it, I suggest we make it a committee. O The main page should cover every topic and reason anyone would come to the site. This means we support every country and other site. The idea here is a clearing house of centralized information. O News: The site needs to gather news worthy information and post that at the top. The site is not alive unless people have a way to post their information. This means that there needs to be at least one editor, if not several that share the task. Every time a product is updated, the new features are mentioned. When Carl updates his blog, it gets a single sentence directing people there, unless it is news of a release of something. Etc. O Product Reviews: This is key. Products need to be rated, reviewed, categorized, voted on. O Video Archive: All the videos of all the talks ever given O Tutorials: there are a lot of tutorials out there, but which are best? We need to review the tutorials, rate them by Beginner, Intermediate, Advanced. O Forum: Start with major topics, and then break it down. The forum needs to direct people to other countries, or support the other countries right in the forum. Great simple forum: http://discussion.treocentral.com/index.php?styleid=1 O Respect the real estate. The #1 mistake people make is treating their websites like just pages. This is just like real estate, location location location. We need to place the content based on where people are going. So you build the basic site, watch it for a couple of weeks, then shift things around based on where people are actually going. O More art, more photos, more community. It needs to feel inviting: http://msdn.microsoft.com/events/pdc/ Stone soup: I will pay for, host, and supply a fast linux system (w/archive). I will help design the templates, and provide (and buy if needed) great art for the site. I will not run the site, nor control the content, but I expect there to be in place all the items outlined above, set up in a manner that it a) runs itself, b) puts the power in the hands of the developers. | |
François: 18-Feb-2006 | Yes, why not, but i do not want to pollute with forums that would not concerned much people... | |
Carl: 2-Mar-2006 | You can reach him at email on rebol.com if necessary. (I do not put his email address here to avoid spam harvesting). | |
Henrik: 28-Sep-2006 | HTTP Tools. A small script containing a few functions to read the HTTP header of a webserver. It doesn't do much, but the main purpose is to determine which scripting language is used on a specific webserver. I use it to upload ASP and PHP scripts to various webservers, without having the user needing to know the scripting language in advance. It's not very strong yet and some servers will not reveal this information, but I hope it can be built into a reliable tool for determining scriping language over time. http://hmkdesign.dk/rebol/http-tools/http-tools.r Example: >> server-type http://rebol.com == "Apache" >> x-power-type http://www.hmkdesign.dk == "php" >> x-power-type http://www.microsoft.com == "asp" | |
Louis: 11-Oct-2006 | REBOL [ Title: "Slideshow" Date: 12-Oct-2006 Name: 'SLIDESHOW ; For window title bar Version: 1.0.0 File: %slideshow.r Author: "Louis A. Turk" Rights: "Public Domain; use at your own risk." Needs: "A version of REBOL/VIEW supporting sound" Purpose: {To make possible simple, easy to make narrated slide shows. Hopefully can be used with the REBOL plugin to show narriated slides on a web site. Hopefully can an effective tool to teach REBOL programming. } Note: { The concept and design originated with Louis A. Turk. DideC helped considerably by answering programming questions and giving bits of code; it would not have been possible without his help. Josh also answered programming questions. You can make wav files using the free program Audacity. http://audacity.sourceforge.net Advanced JEPG Compressor does and excellent job compressing graphics files so they load faster, but is not free. } History: [ 1.0.0 [ "First release." "Louis"] ] Language: 'English ] ;Requires a data file named %slides.r containing lines of blocks in the following format: ;Each block must contain: (1) slidename, (2) overlay, (3) caption, (4) sound. ;Example block: [%slide1.jpg "Overlay text." "A caption!" %sound.wav] ;Use "" for no overlay or caption. ;file: request-file/title/only "Select the slides data file to use." "Select Data File" file: %slides.txt ;uncomment the above line, and comment this one to select data files with different names. slides: load file narrate: func [talk] [ ;--- Manage the sound sound-port: open sound:// insert sound-port load talk wait sound-port close sound-port ] view/new win: layout/size [] 650x650 ;<= Set the max size you need wait 0 ;---Initialize REBOL's internal event handler. foreach slide slides [ ;--- Start the slide show set [graphic overlay caption narration] slide lay: layout [ origin 0 banner center bold red "A REBOL Produced Narriated Slide Show" image graphic overlay 500x400 frame black [unview] [quit] text 500 bold caption button "Quit" center [quit] ] center-face/with lay win append clear win/pane lay show win narrate narration ] do-events | |
Group: rebcode ... Rebcode discussion [web-public] | ||
Henrik: 26-Oct-2005 | never send a checklist to do a voting applications' job :-) | |
[unknown: 5]: 26-Oct-2005 | I don't know enough about rebcode to do any voting - there any docs yet? | |
BrianH: 28-Oct-2005 | Or for that matter, you could do an add or sub to n before you use it. | |
BrianH: 28-Oct-2005 | If the table-base is a pointer to the table (as it is here) any rebasing would require math. The question is whether you want to do that math every time, or just when you need to. | |
Volker: 28-Oct-2005 | You need to do it every time you switch. Its not 0-based, its always table-based. | |
BrianH: 28-Oct-2005 | (Sorry to answer my own question) A state machine could be implemented as a brab with an indirect offset block at the head of a loop - that's a good use I guess. With an indirect label block (or absolute offsets) you could do the machine without the loop, just branches at the end of each state, but if you had to do runtime searching for the labels that wouldn't be faster. | |
BrianH: 29-Oct-2005 | How would you do it, like this? cmp.i: ["Sets a variable to -1,0,1 if two values are <,=,>" word! word! | integer! word! | integer!] cmp.d: ["Sets a variable to -1,0,1 if two values are <,=,>" word! word! | decimal! word! | decimal!] | |
BrianH: 29-Oct-2005 | Your example bra3 there didn't act that way - the result of a sub isn't referenced. Do you want to fix your example? | |
Pekr: 30-Oct-2005 | simply what I wanted to ask - if that is normal with such VMs in other languages or we simply do allow such crashes because of various reasons (e.g. preferring speed, not doing checks etc.) | |
BrianH: 30-Oct-2005 | JVM and CLR VMs do a lot of testing of their bytecode sequences before execution, as part of their security testing. Until someone makes a type-inferencer for rebcode, it won't be safe to use without manually reviewing every function before use, or only using rebcode generated by trusted compilers. It is much like machine code in that way. | |
BrianH: 30-Oct-2005 | I haven't been able to come up with a way to exploit these crashes (nor am I likely able to do so), but crashing the process repeatedly can be a good denial-of-service technique. Type flow analysis is a must for rebcode, so be extra careful with your data type testing! | |
Henrik: 30-Oct-2005 | To me the BRAB example in the rebcode docs in section 2.8 is quite unclear. "The brab opcode allows computed branch offsets to be created". You can say the same about BRA, BRAF and BRAT as well. :-) I have no idea what this opcode does, except that it looks vaguely similar to a SWITCH so it would be doing multiple branches somehow. It would have helped to see output results from the code and to have a better initial explanation on how to use BRA with integer indexes and an explanation of the B in BRAB. Do you agree? | |
BrianH: 30-Oct-2005 | Henrik, they actually do a good job at explaining what the index is for: The first argument to the opcode is normally a block, and the second is a zero-based index into that block. The value at that position is fetched and assumed to be the integer offset for the branch. Now all they need to do is replace the word "computed" with "indexed". | |
Group: !REBOL3-OLD1 ... [web-public] | ||
Geomol: 11-Apr-2006 | First, second, ... go up to tenth. We don't have eleventh. You need to do serie/11 to get the 11'th element. | |
Rebolek: 11-Apr-2006 | Geomol: "So pairs need to be extended somehow into a datatype, which is like a vector, but with integers instead of decimals." --- decimal! is better in my opinion. It's consistent with current behaviour whre you can do >> block/4.5 and decimal part is truncated. | |
Henrik: 11-Apr-2006 | during a bath, I thought up a Grand Master Plan: 1. Build a dialect that could handle scientific/symbolic math on the hard core level 2. Make it possible to take an equation and draw it up correctly with DRAW, a pretty print equation display. The same dialect would be used as above. 3. Use that to display pretty equations inline in makedoc2/3 documents! 4. Some people are working on a postscript dialect which hopefully eventually will be able to use DRAW blocks as an input, thereby allowing you to create equations on the console and convert it to DRAW or PS at the same time as having the ability to do calculations. That would be powerful. Say: calculate [2 [m] / 3 [cm]] ; would return the result as needed calculate/draw [2 [m] / 3 [cm]] ; would return a DRAW block postscript calculate/draw [2 [m] / 3 [cm]] ; would convert that DRAW block to postscript | |
Maxim: 11-Apr-2006 | most people stop when they actually try to do a concrete application within constrains and realise many things within the implementation of this or that... well, just falls short of working. | |
Anton: 11-Apr-2006 | net-utils/net-log join "Type: " type: any [ all [new-dir? 'new-dir] all [new? 'new] all [dir-read? port 'dir] all [port/state/flags and system/standard/port-flags/open-append <> 0 'app] 'file ] do select [ file [ confirm-cmd port either port/algorithm = 'nlst [nlst-check] [list-check] accept-connect port type parse-dir-list port if tmp: select locals/dir-cache to-file port/target [ port/status: first tmp port/date: third tmp if any [none? port/size: second tmp 1024 > port/size] [port/size: 0] ] data-connect port confirm-cmd port binary-type-check if 0 < cmd-port/state/index: port/state/index [ confirm-cmd port restart-check ] confirm-cmd port read-check ] new [confirm-cmd port write-check] new-dir [confirm-cmd port mkdir-check] dir [confirm-cmd port either port/algorithm = 'nlst [nlst-check] [list-check]] app [confirm-cmd port append-check] ] type accept-connect port type if type = 'dir [ port/size: port/state/tail: parse-dir-list port ] ] port ] close: func [port /local cmd-port cache-size][ cmd-port: port/locals/cmd-port if not dir-read? port [error-try? [confirm-transfer port]] net-utils/net-log reform ["Caching cmd-port" cmd-port/host cmd-port/local-port cmd-port/remote-port] cmd-port/host: cmd-port/locals/tuple | |
Chris: 13-Apr-2006 | From the Roadmap: "Greater Locality Support It's time for REBOL to do a better job at supporting native languages and character-sets. Our goal to expand support with locality and unicode enhancements. In addition, it is a goal to release 3.0 with French, Italian, and perhaps one/two other languages as part of the standard distribution." | |
Gregg: 14-Apr-2006 | The current library interface is servicable, but could be improved. For example, char arrays in C structs are a real pain to deal with, there is redundancy if you're importing a number of routines, from the same library, and extra work is required to deal with pointers to values. The biggest issue for me seems to be that I have to use COMPOSE heavily to get the results I want, or there's a lot of duplication in struct and routine defs. --- Easier Routine Declarations The only thing I've addressed in my lib interface dialect is making it easier to declare routines. I posted it to REBOl.org for discussion: http://www.rebol.org/cgi-bin/cgiwrap/rebol/view-script.r?script=lib-dialect.r --- Pointers This is maybe a bit of an extreme example, but I had to do it, so it's not purely theoretical. LPINT-def: [value [integer!]] none LPINT: make struct! LPINT-def none This struct shows where a nested struct is needed. _FAX_JOB_PARAM-def: compose/deep/only [ SizeOfStruct [integer!] ; DWORD structure size, in bytes RecipientNumber [string!] ; LPCTSTR pointer to recipient's fax number RecipientName [string!] ; LPCTSTR pointer to recipient's name Tsid [string!] ; LPCTSTR pointer to transmitting station identifier SenderName [string!] ; LPCTSTR pointer to sender's name ;SenderName [struct! [value [string!]]] ; LPCTSTR pointer to sender's name SenderCompany [string!] ; LPCTSTR pointer to sender's company SenderDept [string!] ; LPCTSTR pointer to sender's department BillingCode [string!] ; LPCTSTR pointer to billing code ScheduleAction [integer!] ; DWORD job scheduling action code ;ScheduleTime [struct! (SYSTEMTIME-def)] ; SYSTEMTIME time to send fax wYear [short] wMonth [short] wDayOfWeek [short] wDay [short] wHour [short] wMinute [short] wSecond [short] wMilliseconds [short] DeliveryReportType [integer!] ; DWORD e-mail delivery report type DeliveryReportAddress [string!] ; LPCTSTR pointer to e-mail address DocumentName [string!] ; LPCTSTR pointer to document name to display CallHandle [integer!] ; HCALL reserved ;_PTR Reserved[3] [integer!] ; DWORD must be zero _PTR-0 [integer!] ; DWORD must be zero _PTR-1 [integer!] ; DWORD must be zero _PTR-2 [integer!] ; DWORD must be zero _PTR-3 [integer!] ; DWORD must be zero ] _FAX_JOB_PARAM: make struct! _FAX_JOB_PARAM-def none _FAX_JOB_PARAM/SizeOfStruct: length? third _FAX_JOB_PARAM fax-complete-job-params: make routine! compose/deep/only [ JobParams [struct! (LPINT-def)] ; ptr to job information struct CoverPageInfo [struct! (LPINT-def)] ; ptr to cover page struct return: [integer!] ] winfax.dll "FaxCompleteJobParamsA" So, the API call returns pointers to structs containing the data we want; to get it we need to dereference the pointers after the call. complete-job-params: func [ /local params-ptr cover-ptr ; API return pointers params cover ; REBOL structs with data from API ][ ; allocate return pointer structs for API call params-ptr: make-LPINT cover-ptr: make-LPINT ; make the API call reduce either 0 <> fax-complete-job-params params-ptr cover-ptr [ ; get data from pointers returned by the API params: get-dereferenced-data params-ptr _FAX_JOB_PARAM-def cover: get-dereferenced-data cover-ptr _FAX_COVERPAGE_INFO-def ... Getting the de-ref'd data is the real pain, and seems like it might be unsafe in the way I did it, though it worked. get-dereferenced-data: func [ {Given a pointer to memory, copy the target data into a REBOL struct.} pointer [struct!] "LPINT structure whose /value is the data pointer" struct-def [block!] "The struct you want returned with data" /local struct data orig-pointer result ] [ struct: make struct! compose/deep/only [ ; make wrapper struct sub [struct! (struct-def)] ] none orig-pointer: third struct ; store original inner pointer change third struct third pointer ; change inner pointer to ref'd data data: copy third struct/sub ; copy data from the inner struct change third struct orig-pointer ; restore inner pointer result: make struct! struct-def none ; make result struct change third result data ; change data in result struct struct: data: orig-pointer: none result ] --- char arrays in structs, or as routine parameters You can't just declare a fixed size block or string to do this, you have to (AFAIK), have individual elements for each item. That's a huge pain if you have a 128 element array, so I end up generating them dynamically. I think that was Cyphre's idea originally, but I don't have notes on it. make-elements: func [name count type /local result][ if not word? type [type: type?/word type] result: copy "^/" repeat i count [ append result join name [i " [" type "]" newline] ] to block! result ] GUID: make struct! GUID-def: compose [ Data1 [integer!] ; unsigned long Data2 [short] ; unsigned short Data3 [short] ; unsigned short (make-elements 'Data4 8 #"@") ; unsigned char ] none --- MAKE-ing structs How do other people make structs from prototypes? make-struct: func [prototype /copy /with data] [ make struct! prototype either copy [second prototype] [either with [reduce [data]][none]] ] --- BSTR type I've only needed it for one project, but it might be worth finding out if it would be worth adding BSTR support for Windows, as a routine datatype. | |
Maxim: 14-Apr-2006 | in the best of worlds I'd prefer it if we could read all the info from a .h file and convert it into a rebol file ready to load the dll... Gregg, Do you think this is possible? | |
Gregg: 15-Apr-2006 | I've done some little C processor dialect ideas as well, mainly to handle DEFINEs and convert structs to REBOL friendly data. I think those kinds of tools are useful and, for the amount of use they get, I prefer that approach to trying to do a complete C processor/loader. Ultimately, that might be good for some people, but I still want an interface dialect in REBOL that makes things easy to read and understand from a REBOL perspective. I think "dialect first, then tools". | |
Karol: 20-Apr-2006 | I found learning rebol very easy because of it is just about words if you know 50 words you can write script if you know 200 you do it better. All those namespaces, dictionaries, classes ,trees or whatever does not help in writing programms and you need to remember more things. Using rebol is like using foreign language. Rebol has contexts and dialects for changing meaning of word. Maybe every script should work in its own context from default? I notice that many scripts are written in that way with use of 'set to put something to global context. And to be practical I use editor with syntax highlighting so every word from global context (set only) are blue so i can easly see if I redefine global word - after all it's just warning like in any language | |
Volker: 20-Apr-2006 | I agree. Toi master a language, i have to master the core-features. And if there are a lot of them, that slows down. And i can do the same things with current features in a slightly diferent way, i am lazy, so keep core small :) | |
Volker: 20-Apr-2006 | Is namespacing the only way to do it? | |
Volker: 20-Apr-2006 | I would add "how to do them in rebol". In case of namespaces, maybe a more dialected approach could be usefull. | |
Pekr: 20-Apr-2006 | Volker - then any new concept addition will ruin rebol for you, as you will have to learn it ... View is gonna be overhauled too - changes to face and who knows what .... from recent blogs, I can only see positives in getting them. I have a trust in Carl and that he is going to do those things in sensitive way ... | |
Maxim: 20-Apr-2006 | only admin level users can really do anything to spoof networking... normal unpriviledged users cannot change system files, thus cannot change libs. | |
Maxim: 20-Apr-2006 | now tell your IT manager or CTO that you have to do all of this just to get the user name and that you really want to use REBOL... ;-) | |
Maxim: 21-Apr-2006 | It has just occured to me that if REBOL needs a niche and actually wants to have REBOL work in the Large... that they need to do only one thing. Embrace XML. its got everything going for it, there is nothing to invent (just read specs and implement, like protocol RFCs). | |
Maxim: 21-Apr-2006 | REBOL should not use XML internally, but should be made to be as XML literate as is possible. imagine if we could simply tell any current IT management that all they need to USE all of that $ they invested in those obscure tools, is Load and then they can actually do stuff with it. | |
Henrik: 21-Apr-2006 | there is some merit to that: what if the rebol developer quits? they don't exactly camp out in everybody's backyard. java developers do. | |
Gabriele: 26-Apr-2006 | closures haven't much to do with threading. although they are reentrant, while normal funcs are not (in r2; I guess it may be possible to make normal funcs reentrant in r3). | |
BrianH: 26-Apr-2006 | Personally, I've never really considered the "copy problem" a problem. When you don't copy something it doesn't get copied. When you do it does. Series aren't immediate values, they are reference values. Same for objects. Every language design choice could be considered a bug or a feature - it all depends on how you use it. I've found more advantages to the way that REBOL functions work now. The only real problem I've run into is functions keeping references to their temporary data after they return, at least until they are run again (a memory hole). The closure example above with the adders stops being a problem when you realise that FUNC is a function that does something when passed a couple blocks - it's not syntax. You didn't copy the block, so it gets reused, go figure. You are building functions - is it such a stretch to build code blocks? make-adder: func [n] [func [x] compose [x + (n)]] |
3301 / 11578 | 1 | 2 | 3 | 4 | 5 | ... | 32 | 33 | [34] | 35 | 36 | ... | 112 | 113 | 114 | 115 | 116 |