AltME groups: search
Help · search scripts · search articles · search mailing listresults summary
world | hits |
r4wp | 237 |
r3wp | 1294 |
total: | 1531 |
results window for this page: [start: 301 end: 400]
world-name: r3wp
Group: Ann-Reply ... Reply to Announce group [web-public] | ||
Ashley: 26-Feb-2005 | Quick comment in support of Gregg's last announcement: I've tried introducing a number of folks to REBOL/AltME, and they were deterred from using it because of the high amount of noise and the feeling that they were "intruding" on a series of private conversations. So my feeling on the matter is that wide ranging discussions are all well and fine for folks who are *already* here but could deter some folks who come to the REBOL world thinking it might be a purely technical / support forum. | |
JaimeVargas: 4-Mar-2005 | 2.4 Ghz with 2400 series. We will have in about a two months the 5800 series which operates at 5.8Ghz, possibly at 4.9Ghz too. | |
PeterWood: 4-Jan-2007 | Some people can break anything !!! Sorry ** Script Error: find expected series argument of type: series port bitset ** Where: on-release ** Near: if find choice "/top" [ face/stack/valve/top face/stack glob face/redraw ] | |
Ladislav: 15-Jun-2009 | hi Chris, I am afraid, that the main objection Carl had was, that he didn't like the fact, that the keywords were in fact string-like series. (so no symbols) This does not change, if we switch from issues to URLs, unfortunately | |
Group: RAMBO ... The REBOL bug and enhancement database [web-public] | ||
Mchean: 23-Oct-2005 | dont have access to rambo could someone submit an error in the word brower for me. in the find box a down arrow errors with: ** Script Error: index? expected series argument of type: series port ** Where: pick-next ** Near: sync-funcs-list index? f show-word first | |
sqlab: 23-Nov-2005 | regarding #3912 The newest Rebol version displays a different error message ***Panic (should not happen) -Invalid series width 1 was 16 (type 44) How near is RT to a fix ? | |
Gregg: 3-Nov-2006 | I would say that you can't do *anything* safely on a series reference. | |
Anton: 3-Nov-2006 | Ladislav, yes, these inconsistencies hold back rebol's reflection somewhat. Maybe it's excusable for ports, though, because they are kind of "custom series datatypes"... have to think carefully about that. | |
Maxim: 22-Nov-2006 | can I propose this for R3? fill: func [ "Fills a series to a fixed length" data "series to fill, any non series is converted to string!" len [integer!] "length of resulting string" /with val "replace default space char" /right "right justify fill" /truncate "will truncate input data if its larger than len" /local buffer ][ unless series? data [ data: to-string data ] val: any [ val " " ; default value ] buffer: head insert/dup make type? data none val len either right [ reverse data change buffer data reverse buffer ][ change buffer data ] if truncate [ clear next at buffer len ] buffer ] | |
Maxim: 22-Nov-2006 | I think I was more concerned with the fill function itself and its range of arguments... I agree that the reverse stuff is not optimal. could 'FILL itself (a faster implementation) be considered for 2.7 ? I've had to implement this kind of func so often...? it handles all series, and transforms non series automatically... so you can easily fill any value: fill 1 3 == "1 " also: zfill: func [i len][fill/with/right i len 0] zfill 1 3 == "001" /right might be /left depending on POV I prefer /right in the sense where the output is right justified... a /center could also be added pretty easily. | |
Group: Core ... Discuss core issues [web-public] | ||
Volker: 17-Jun-2005 | but when you found nothing, there is no index. 0 would give syntactically valid results, letting the rest of the program run. just doing wrong things. none will at least led to trapping it. thinking about it, when using series instead of indices, it bails out on using, not immediate too. maybe index? pasing none is k. | |
Ammon: 17-Jun-2005 | I vote to leave it like it is. It makes the most sense to have Index? fail on a non-series value. I've found ANY to be a very handy function for handling things like that. I initially just used it with EITHER and IF but its starting to show up in a lot of places in my code because it is just nice and concise. ;-) | |
Gabriele: 18-Jun-2005 | Jaime: for INDEX? used alone, that may be true. But asking the position of a value in a series and asking the index of a value in a series are, IMHO, the same question. | |
Gabriele: 18-Jun-2005 | pos: find series value | |
Gabriele: 18-Jun-2005 | idx: index? find series value | |
Volker: 18-Jun-2005 | as gabriele says, we have the same problem with series. can be none too and fail then. | |
Volker: 18-Jun-2005 | since i rarely use index when i can use series, i don't know how important thatis. | |
BrianH: 18-Jun-2005 | The only time I've found it useful to use index is when using values in one series as a key to values in another series. Kind of rare when you have select/skip, but sometimes you don't want to modify the data series. All right, since RAMBO says that there are problems with select/skip right now, maybe not so rare. | |
Volker: 18-Jun-2005 | thats one way to see it, which i partly share. but with series its the same kind of exception, and Gabriele argues we could deal with it like we do with series: give none and trap on access. and the "flow" in such cases is to use the patterns i showed, with 'if or 'any. and not forcing an extra assignment. | |
BrianH: 18-Jun-2005 | Which of the other series functions also work on none, instead of just returning it? | |
BrianH: 18-Jun-2005 | Well, if you consider index? find to be another way of saying find/index (if such a thing existed) then I can see why you would let it accept none. If you consider index? to be a seperate function, then accepting none would just be propagating an erroneous condition. Remove should definitely accept none because it's not much of a stretch to change its meaning from "remove here" to "remove here if there is something to remove, no-op if inapplicable", the same behavior it has as in remove tail series. | |
Ammon: 18-Jun-2005 | But Remove Tail Series is programatically different than Remove None as Tail returns an apparently empty series, not none. | |
Henrik: 23-Jun-2005 | with blocks, I don't think that'll work with match, because it searches for the full element in a series, thus you need to search in two levels... | |
Graham: 5-Jul-2005 | Regarding the question on the mailing list on extracting a series of duplicates, I wonder why Rebol doesn't allow us to subtract one series from another. If we are allowed to append one series to another, why not allow us to subtract? But I guess the problem then is sameness. | |
Geomol: 19-Sep-2005 | CHANGE series value Change seem to have destination first aswell. Didn't Carl write a blog about it at some time? | |
Group: View ... discuss view related issues [web-public] | ||
Chris: 9-Mar-2005 | Brock: where I am tempted to use 'copy, I'm often try and think of any potential benefits of using series modifiers instead. Depends on the situation I suppose... | |
Group: I'm new ... Ask any question, and a helpful person will try to answer. [web-public] | ||
Gregg: 31-May-2007 | An important aspect of dialects, for me, is that they *don't* look like a series of function calls; there is often "implied state" which I think is powerful, but messes you up if you think in terms of functional programming. | |
Anton: 19-Jul-2007 | Wait a minute ! MOLD handles any value, while MOLD-CSV-STRING only handles series at the moment... hang on. | |
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? | |
Gregg: 21-Jul-2007 | I don't , but let's see how close this gets us. First, here is a support func for building delimited series. In addition, you'll need my COLLECT func from REBOL.org, or something similar. | |
Gregg: 21-Jul-2007 | delimit: func [ "Insert a delimiter between series values." series [series!] "Series to delimit. Will be modified." value "The delimiter to insert between items." /skip ;<-- be sure to use system/words/skip in this func size [integer!] "The number of items between delimiters. Default is 1." ][ ; By default, delimiters go between each item. ; MAX catches zero and negative sizes. size: max 1 any [size 1] ; If we aren't going to insert any delimiters, just return the series. ; This check means FORSKIP should always give us a series result, ; rather than NONE, so we can safely inline HEAD with it. if size + 1 > length? series [return series] ; We don't want a delimiter at the beginning. series: system/words/skip series size ; Use size+n because we're inserting a delimiter on each pass, ; and need to skip over that as well. If we're inserting a ; series into a string, we have to skip the length of that ; series. i.e. the delimiter value is more than a single item ; we need to skip. size: size + any [ all [list? series 0] ; lists behave differently; no need to skip dlm. all [any-string? series series? value length? value] all [any-string? series length? form value] 1 ] head forskip series size [insert/only series value] ] | |
RobertS: 25-Aug-2007 | ;One tip if you are new like me save %hist_001.r system/console/history ; then in user.r system/console/history: load %hist_001.r : when you have materials worth reviewing as you learn .... ; PS I meant 'former' as model, i.e, "Little Schemer" "Seasoned Schemer" "Reasoned Schemer" Prolog has the 'Art of .. ' 'Craft of ' and 'Practice of Prolog' series | |
RobertS: 31-Aug-2007 | ; tutorials on series and find/part ; I may be alone in thinking that without experimenting, a newbie will miss this ... here is my experiment ; the docs say part will accept a 'range' but give no clear indication what a 'range' is in 2.x text: { Tested this before. Then test these. } start: find text "this" end: find start newline item: find/part start "this" end print item index? find text "this" index? start length? start index? end length? end head start head end index? item head item ; by now you get that Ah-Hah experience or Eureka! or 'hot-damn!' as the case may be ... | |
RobertS: 31-Aug-2007 | ; the docs say /part - Limits the search to a given length or position. range - The range argument. (must be: number series port) ; but it is not clear how to pass in that range argument as a 'position' let alone a series or port ; the only sign of something going wrong other than an error is that the 'end' is simply spit back out at the console, i.e., no error but bogus 'result'' | |
RobertS: 31-Aug-2007 | The simple thing to state would be that the 'range' option in question is precisly that same series, albeit with the current position shifted out further. >> item: find/part start "this" 24 >> item: find/part start "this" (find start newline) ; range as port ( I have not yet seen this ) | |
RobertS: 31-Aug-2007 | ditto for copy/part As Newbie I have to realize that the 'series' mentioned in the HELP is that self-same series. | |
RobertS: 31-Aug-2007 | I would have my tutorial read: some series S at some position that same series S at some further position And: think of 'find' as 'try to reposition current index in the series' Without seeing the source for FIND, I have no idea yet how to explain that 'range' must be that very same series. Chalk it up to lack of imagination... | |
Chris: 13-Sep-2007 | What I'm getting at is there are limitations in the default handling of paths. But paths are series and you can evaluate them however you want to. | |
RobertS: 13-Sep-2007 | Once there are only subblocks it becomes trivial; I have been trying to augment a path! series which starts with a block in which a tagged-word is bound to a block . By augment the path I mean to return a path, not the result of evaluating the path t1: [ a-word-with-no-value-functor "one" ] t2: [ functor t1 ] ; t1 is a word, not a block, but is bound to a block at the time the path is extended into it ( if possible without t2 being an object! ) t2: context [ functor t1] ; also trivial | |
SteveT: 19-Jan-2008 | Yes I've only used it for my licence creator applet - I't's one of the core items I need to master. At the moment I'm trying to get blocks/series to fit into recursions I have created in legacy apps | |
Gabriele: 19-Jan-2008 | btw, about your append question... no, append does not need to allocate memory at each call. each series has some space free, and when that's up, a bigger space is allocated, usually with 2x increments (until a certain size, then it's linear). however, the whole series needs to be copied when that happens. so, if you append 1000 times, it may happen just 2 or 3 times, but still, if you know the final size already, you can save a lot by just preallocating it. | |
Sunanda: 14-Mar-2008 | join always returns a string unless the first value is of type? series. >> join 1 2 == "12" Try source join to see the actual code. | |
DavidR: 16-Nov-2008 | The end game is to create a series of routines that will cut a full install of XP from Approx 1.5 gig installed to approx 212 mb's specifically geared for diagnostics and repair. | |
Maxim: 29-Apr-2009 | you'd use var: 0 since 0 (an integer!) is not a series type of data. | |
mhinson: 29-Apr-2009 | Thanks for the tips, so either exactly replaces if/else and I need to initalise series types with var: copy [] but not other types. These tips are great.. I just need to study it more & I shoud find my own bugs (and probably remember them too) Thanks very much | |
Henrik: 30-Apr-2009 | And so if you specifically want to keep a series from being changed by some operation, you must copy it. | |
mhinson: 30-Apr-2009 | ah. so this is for variables containing series types only? numbers get passed as values (which is in effect a copy?) | |
Henrik: 30-Apr-2009 | Series, yes. You can also reference objects this way. Another trap is that series within series are also reused. This is why COPY/DEEP exists. | |
Henrik: 30-Apr-2009 | If you know when REBOL reuses series, you can make quite memory efficient and fast code. | |
Henrik: 30-Apr-2009 | If you don't know, then you can get some strange bugs. If a series changes without an apparent reason, then it's likely due to whether it's copied or not. | |
Henrik: 30-Apr-2009 | Because the contents of a function is really a context, and once that function is created, it doesn't disappear, including the blocks and series that are existing in that function. (We have to be careful here about using the word "context" to describe what we say, and the concept of "contexts" in REBOL. Don't mix it up.) | |
Sunanda: 30-Apr-2009 | It is initially confusing, because the apparent strange behaviour is limited to series, not (not sure what the official term is) numbers. If you try this: f: func [a /local b c] [b: [] c: 0 append b a c: c + a] f 1 f 2 source f You can see that (quite literally, in a metaphorical sense) the in-memory copy of function f has been changed: f: func [a /local b c] [b: [] c: 0 append b a c: c + a] f 1 f 2 source f To not have it change in that way (or to re-initialise b, if you like): f: func [a /local b c] [b: COPY [] c: 0 append b a c: c + a] f 1 f 2 source f But 'c has not changed in either case: c: 0 means exactly what it says. | |
Maxim: 1-May-2009 | mike: the best tip I can give you is to picture a cursor in your head when you type your rules. parse really is about iterating over a series on byte at a time and matching the next expected characetr. | |
Maxim: 3-May-2009 | set words within parse rules are set to the point in the series that the parser IS , AT that exact moment. | |
Gregg: 11-May-2009 | REBOL [] do %include.r include %file-list.r flash-wnd: flash "Finding test files..." if file: request-file/only [ files: read first split-path file ] if none? file [halt] items: collect/only item [ foreach file files [item: reduce [file none]] ] unview/only flash-wnd ;------------------------------------------------------------------------------- ;-- Generic functions call*: func [cmd] [ either find first :call /show [call/show cmd] [call cmd] ] change-each: func [ [throw] "Change each value in the series by applying a function to it" 'word [word!] "Word or block of words to set each time (will be local)" series [series!] "The series to traverse" body [block!] "Block to evaluate. Return value to change current item to." /local do-body ][ do-body: func reduce [[throw] word] body forall series [change/only series do-body series/1] ; The newer FORALL doesn't return the series at the tail like the old one ; did, but it will return the result of the block, which is CHANGE's result, ; so we need to explicitly return the series here. series ] collect: func [ "Collects block evaluations." [throw] 'word block [block!] "Block to evaluate." /into dest [block!] "Where to append results" /only "Insert series results as series" /local fn code marker at-marker? marker* mark replace-marker rules ][ block: copy/deep block dest: any [dest make block! []] fn: func [val] compose [(pick [insert insert/only] not only) tail dest get/any 'val get/any 'val ] code: 'fn marker: to set-word! word at-marker?: does [mark/1 = marker] replace-marker: does [change/part mark code 1] marker*: [mark: set-word! (if at-marker? [replace-marker])] parse block rules: [any [marker* | into rules | skip]] do block head :dest ] edit-file: func [file] [ ;print mold file call* join "notepad.exe " to-local-file file ;join test-file-dir file ] flatten: func [block [any-block!]][ parse block [ any [block: any-block! (change/part block first block 1) :block | skip] ] head block ] logic-to-words: func [block] [ change-each val block [either logic? val [to word! form val] [:val]] ] standardize: func [ "Make sure a block contains standard key-value pairs, using a template block" block [block!] "Block to standardize" template [block!] "Key value template pairs" ][ foreach [key val] template [ if not found? find/skip block key 2 [ repend block [key val] ] ] ] tally: func [ "Counts values in the series; returns a block of [value count] sub-blocks." series [series!] /local result blk ][ result: make block! length? unique series foreach value unique series [repend result [value reduce [value 0]]] foreach value series [ blk: first next find/skip result value 2 blk/2: blk/2 + 1 ] extract next result 2 ] ;------------------------------------------------------------------------------- counts: none refresh: has [i] [ reset-counts i: 0 foreach item items [ i: i + 1 set-status reform ["Testing" mold item/1] item/2: random/only reduce [true false] show main-lst set-face f-prog i / length? items wait .25 ] update-counts set-status mold counts ] reset-counts: does [counts: copy [total 0 passed 0 failed 0]] set-status: func [value] [set-face status form value] update-counts: has [pass-fail] [ counts/total: length? items pass-fail: logic-to-words flatten tally collect res [foreach item items [res: item/2]] ;result (e.g.): [true 2012 false 232] standardize pass-fail [true 0 false 0] counts/passed: pass-fail/true counts/failed: pass-fail/false ] ;--------------------------------------------------------------- main-lst: sld: ; The list and slider faces c-1: ; A face we use for some sizing calculations none ml-cnt: ; Used to track the result list slider value. visible-rows: ; How many result items are visible at one time. 0 lay: layout [ origin 5x5 space 1x0 across style col-hdr text 100 center black mint - 20 text 600 navy bold { This is a sample using file-list and updating progress as files are processed. } return pad 0x10 col-hdr "Result" col-hdr 400 "File" col-hdr 100 return pad -2x0 ; The first block for a LIST specifies the sub-layout of a "row", ; which can be any valid layout, not just a simple "line" of data. ; The SUPPLY block for a list is the code that gets called to display ; data, in this case as the list is scrolled. Here COUNT tells us ; which ~visible~ row data is being requested for. We add that to the ; offset (ML-CNT) set as the slider is moved. INDEX tells us which ; ~face~ in the sub-layout the data is going to. ; COUNT is defined in the list style itself, as a local variable in ; the 'pane function. main-lst: list 607x300 [ across space 1x0 origin 0x0 style cell text 100x20 black mint + 25 center middle c-1: cell cell 400 left cell [edit-file item/1] ] supply [ count: count + ml-cnt item: pick items count face/text: either item [ switch index [ 1 [ face/color: switch item/2 reduce [none [gray] false [red] true [green]] item/2 ] 2 [mold item/1] 3 ["Edit"] ] ] [none] ] sld: scroller 16x298 [ ; use SLIDER for older versions of View if ml-cnt <> (val: to-integer value * subtract length? items visible-rows) [ ml-cnt: val show main-lst ] ] return pad 0x20 f-prog: progress 600x16 return status: text 500 return button 200 "Run" [refresh show lay] pad 200 button "Quit" #"^q" [quit] ] visible-rows: to integer! (main-lst/size/y / c-1/size/y) either visible-rows >= length? items [ sld/step: 0 sld/redrag 1 ][ sld/step: 1 / ((length? items) - visible-rows) sld/redrag (max 1 visible-rows) / length? items ] view lay | |
Group: Make-doc ... moving forward [web-public] | ||
Henrik: 9-May-2007 | I would like to see a rewrite that lets it work on a series of text documents, build a TOC an link to subdocuments, like the HTML REBOL/Core manual. | |
james_nak: 8-Jul-2007 | I have the same makedoc version 2.5.7 and view 1.3.2.3.1. I've tried that exact example as well though with verbose on I am seeing an error: ** Script Error: copy expected range argument of type: number series port pair ** Where: debug ** Near: copy/part here find here newline | |
Group: Parse ... Discussion of PARSE dialect [web-public] | ||
Graham: 27-Jun-2006 | search for a series of capitalised words and strong them | |
Graham: 1-Jul-2006 | I guess it can't be otherwise we wouldn't need to use 'copy on series | |
BrianH: 1-Jul-2006 | The series copy thing is something different. | |
Anton: 10-Apr-2007 | firsttime?: true parse [1 2 3 4 5][ any [ set v integer! p: ; <-- set P to the current parse position. ; (This is the input series with the series index at the current position.) ( ; Here inside the paren is normal rebol code prin v if all [firsttime? v = 4][ p: skip p -2 ; <-- move the index of the series referred to by P firsttime?: false ] ) :p ; <-- set the current parse position to P ] ] | |
BrianH: 7-Jun-2007 | ; Try against this, the forskip code with the skip part taken out forall: func [ "Evaluates a block for every value in a series." [catch throw] 'word [word!] {Word set to each position in series and changed as a result} body [block!] "Block to evaluate each time" /local orig result ][ if not any [ series? get word port? get word ] [throw make error! {forall expected word argument to refer to a series or port!}] orig: get word while [any [not tail? get word (set word orig false)]] [ set/any 'result do body set word next get word get/any 'result ] ] | |
Steeve: 27-Jun-2007 | except that this code is wrong for series with repeting characters like "AABCC" | |
Steeve: 27-Jun-2007 | moreover , i just don't want parse simple series like "ABC" | |
Group: AGG ... to discus new Rebol/View with AGG [web-public] | ||
amacleod: 9-Oct-2008 | I'm doing something like this: view layout [ b: box effect [draw [pen red fill-pen red line-width 2 shape [line 0x0 40x0 40x40 0x40] ] ] btn "append draw" [append b/effect/draw compose ['pen green 'fill-pen green 'shape ['line 5x0 30x5 5x25 0x20]]show b] ] Its much more complicated as I'm painting highlights on a series of faces in a panel. I go back and highlight in another color where a specified word is found. The hi-lite shows if its on a section of text not yet painted but not if it falls on painted text. The above example works! so it must be some where else in my app... Thanks. I'll look it over... | |
Group: Dialects ... Questions about how to create dialects [web-public] | ||
Chris: 10-Jun-2007 | I'm not quite sure how to pan this out. Also, the 'name rule doesn't have any set words, it is operating on an unnamed series. I think I want this type of rule to match the content. In that if [string! string!] does not exactly describe the content, 'name throws a bad-format error. | |
Fork: 9-Jan-2010 | Sunanda: I feel from my experience with parse that it's the sort of thing that can, if it fits your problem, help you a great deal... but it often seems to be just short of the needed functionality. I feel if your task does not depend on knowing the true/false result of matching, then series operations are often better. I've been thinking "if you don't use the boolean result of parse, you probably aren't working on a task that needs parse." | |
Group: Web ... Everything web development related [web-public] | ||
Terry: 25-Feb-2005 | (or Did Bill Buckner Lose the 1986 World Series) | |
Group: SDK ... [web-public] | ||
Henrik: 19-Dec-2006 | probably specific series of distros. some distros use different ways of handling configuration, installation and some distros are changing the library versions constantly. | |
Group: !RebGUI ... A lightweight alternative to VID [web-public] | ||
Graham: 1-May-2005 | sorry ... benchmark building table:0:00:00.14 ** Script Error: find expected series argument of type: series port bitset ** Where: switch ** Near: find picked (buffer/:mark) | |
shadwolf: 1-May-2005 | benchmark building table:0:00:00.14 ** Script Error: find expected series argument of type: series port bitset ** Where: switch ** Near: find picked (buffer/:mark) | |
Group: !Uniserve ... Creating Uniserve processes [web-public] | ||
Scot: 1-Oct-2006 | Need some help...Can't seem to get Uniserv working on my XP laptop. This is my first try...so I don't have enough experience to see what is happening. Do I have the wrong version of core? >> uniserve/boot [uniserve] Async Protocol Admin loaded [uniserve] Async Protocol DNS loaded [uniserve] Async Protocol FastCGI loaded [uniserve] Async Protocol HTTP loaded ** Script Error: change expected series argument of type: series port ** Where: install-plugin ** Near: change pos/2 new >> | |
Mchean: 29-Jan-2007 | I figured out how to stop the service tying up the 80 port , When i run this is what I get: >> do %/c/temp/rebol/uniserve/uni-engine.r == true >> uniserve/boot [uniserve] Async Protocol Admin loaded [uniserve] Async Protocol DNS loaded [uniserve] Async Protocol FastCGI loaded [uniserve] Async Protocol HTTP loaded ** Script Error: change expected series argument of type: series port ** Where: install-plugin ** Near: change pos/2 new | |
Group: rebcode ... Rebcode discussion [web-public] | ||
BrianH: 1-Nov-2005 | i and o could be series parameters | |
BrianH: 4-Nov-2005 | Here are some initial comments on the recently posted rebcode documentation draft: - It has been suggested on the list that since the assembler's rewrite engine is a mezzanine, it might not be included in the final version, in favor of (to promote?) user-made rewrite engines. If not, you would need to change the documentation to match, especially section 1.4. - It needs to be made clear somewhere in the initial description of the rebcode dialect that rebcode is a statement-based language, not an expression-based language like the do dialect. Opcodes perform actions, but don't return anything per-se. The 2.1 or 2.3 sections would be a good place for this explanation to be. - In the "Branches are always relative" note at the end of 2.6, there is a sentence "The branches are always relative to the current block." that could be removed. The whole note should probably be renamed to "Branches are always local" because the note doesn't really cover that they are also relative. Also the phrase "use a branch opcode to" could be replaced with "branch to" and be less awkward. - A common mistake in specifying literal branch offsets is to miscalculate what location the offsets are relative to. This mistake would be less likely if the third paragraph of 2.8 were changed to "The argument to the branch opcodes is an integer value, representing how much of an offset you want the branch to perform. Branch offsets are always relative to the location after the branch statement, not the absolute offset within the block. Positive values branch forward; negative, backward. The branch target must always fall within the current code block." as this is the actual branch behavior (and more clear). - The sentence in 2.8 "The brab opcode allows computed branch offsets to be created." isn't really true right now, at least in any practical way. The current behavior is more like "The brab opcode allows you to branch to an offset selected at runtime by an index.". - The paragraph at the end of 2.8 "There is also a special case of operation. If the block argument to BRAB is an integer (created from a label), then the branch is made to that relative location plus the value of the index argument." would be a good idea to be implemented (I've submitted it to RAMBO), but is rather awkwardly phrased. This could be rephrased once the behavior is implemented, or left alone if you don't want most rebcode users to use this behavior. - In section 2.9, the sentence "Result then refers to the value returned from the function." may be better said as "The word result is then assigned the value returned from the function.". - 4.1.*: The phrasing of many of these entries is awkward. Also, remember that opcodes don't return anything, they modify operands. - 4.1.1: I'm not sure "integral" means "the integer part of" as it is used here; the word may be more related to integrate than integer. - 4.1.4: Lowercase the "Tail" word to be consistent. Otherwise, well phrased. - 4.1.5: The descriptions of change, copy and insert don't describe how their amount parameter is used. You could describe change as "Changes part of a series at the current position to that part of a value (-1 for the whole value).", copy as "Set the operand to a partial copy of the series (-1 for all) from the current position.", and insert as "Inserts part of one series (-1 for all) into another at the current position.". Or, you could provide further explanation in some new 2.* section. - 4.1.6: In the description of index?, change "Returns the" to "Set the operand to". - 4.1.7: Does not reflect the renaming of the opcode get to getw and the addition of setw. Also, instances of "Result modified" should be changed to "Set result" or "Set operand to result". - 4.3.3: The braw opcode has been removed. | |
ICarii: 7-Jul-2006 | The variables swapping over are yp and sev - yp is an integer and sev is a series.. | |
Steeve: 23-Feb-2007 | yes but combining operations need more tests so it will decrease overall performance. i do'nt see how i can do that without consumming more times to compile series of opcodes | |
Steeve: 23-Feb-2007 | rebcode can only handle byte series | |
Steeve: 23-Feb-2007 | i could handle 16 bit registers directly in binary series | |
Steeve: 23-Feb-2007 | that could be faster if 16 bits register was handled internally as binary series | |
Group: Tech News ... Interesting technology [web-public] | ||
shadwolf: 1-Sep-2008 | M6replay is a VOD website to replay the series or emitions from the M6 TV channel wich is supposed to be view by a large number of people | |
Group: SQLite ... C library embeddable DB [web-public]. | ||
[unknown: 5]: 28-Feb-2009 | I like 2.7.6 is the last of the 2.x series. Brian may release a library containing updated mezzanines and patches. | |
Group: !REBOL3-OLD1 ... [web-public] | ||
Gabriele: 30-Mar-2006 | ports - the basic idea is that ports stay as series abstraction, and we add device! for things that are not series (think of them as AmigaOS devices). no more details are available and this is still subject to change so don't take my words as an announcement. | |
Maxim: 6-Apr-2006 | IMHO, more importantly this should happen when used with series: f: func [/blk = [] ] [append blk "a" probe blk] f ==> ["a"] f ==> ["a"] | |
Geomol: 11-Apr-2006 | Peter, ok idea, and I'm all for that. There just shouldn't be a limit, and we have to use integers to reach later parts of a vector ... like with series. | |
Karol: 11-Apr-2006 | if pair will be extended it overloads 16 byte limit for slot and become a series datatype, something complety different. there can be only 10 bytes per value ( I don't know exacly but tuples can have only 10 bytes not more) | |
Maxim: 11-Apr-2006 | its consistency. and although its not english, its damn easier to remember that way. they all use the same "SERIES first" approach. | |
Maxim: 11-Apr-2006 | probably because having series first means all arguments treating data follow it. | |
Maxim: 11-Apr-2006 | instead of having the series jump around in one function to another. | |
Maxim: 26-Apr-2006 | don't closures also help with the copy problem? where each time you run the closure, a series is indeed new? | |
Maxim: 26-Apr-2006 | well I didn't say "solve" ;-) but by what I understand of closures (and I have been reading a lot lately) if 'closure does a deep copy without empty series optimisation, then we could rely on it. actually, NOT copying empty series would make closures bugged, since all generated closures would referrence the same empty block from the context of the closure's definition. which is in direct contradiction to the concept no? | |
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)]] | |
Geomol: 2-May-2006 | Henrik, good suggestion with the loop working on more than one series (in your reply to Carl's blog). That must be possible with a function definition. But it should probably be part of REBOL, at least a mezzanine. | |
Group: Postscript ... Emitting Postscript from REBOL [web-public] | ||
Geomol: 24-Feb-2008 | If the inserting is the problem, then I might be able to fix that with copy to another series in stead. Problem with insert is, when you have large series, it has to move the content down the memory. | |
Group: !Liquid ... any questions about liquid dataflow core. [web-public] | ||
Ammon: 14-Mar-2009 | Ah, what wonders a few hours of rest can work. I just need to produce a plug that takes a series of inputs and converts it into an object. I was overcomplicating things (again...) When I get back from work I'll take another shot at it and this time I think I'll go with a dialected approach. | |
Maxim: 16-Mar-2009 | an obvious example is a setup where you have a series of inputs, which are all linked to one plug which compiles them as an object. | |
Group: !Cheyenne ... Discussions about the Cheyenne Web Server [web-public] | ||
Graham: 9-Jun-2007 | I'm thinking this is not a good error to get .. Script: "Untitled" (none) ## Error in [task-handler] : Make object! [ code: 316 type: 'script id: 'no-memory arg1: none arg2: none arg3: none near: [insert tail series :value] where: 'append ] ! / | |
Dockimbel: 10-Jun-2007 | Oldes, thanks, I've made a minimal url-encode function (due to lack of time). I'll wrote a better one for the next release. Not sure what approach is faster, changing the argument series or building a new one...will test that. | |
Group: !CureCode ... web-based bugtracking tool [web-public] | ||
BrianH: 27-May-2009 | Yes. Any series containing characters only. | |
BrianH: 27-May-2009 | Functions that support series usually support binary!, but usually not functions that are specific to strings. |
301 / 1531 | 1 | 2 | 3 | [4] | 5 | 6 | ... | 12 | 13 | 14 | 15 | 16 |