cdr

search for more blogs here

 

"The LCS we wish we had" posted by ~Ray
Posted on 2008-11-19 12:09:51

Proactively “From the Sea”; leveraging the littoral best practices for a paradigm breaking six-sigma best business case in the global commons rightsizing the core values supporting our mission statement via the 5-vector model. The US Navy has recently awarded Lockheed Martin a $2.3 m contract to work on the Israeli Navy's Littoral Combat Ship known as LCS-I. Under the contract. Lockheed Martin will work with the US and Israeli navies to develop a technical specification and acquisition cost package for the LCS-I combat system. CNN reported. Lockheed Martin would examine the combat system performance of LCS-I using two different radar options: the advanced radar under development by Israeli Aircraft Industries (IAI) and Lockheed Martin's SPY-1F radar. The MK 41 Vertical Launch System (VLS). Typhoon gun and Barak missile are among other weapons the team has planned to install on the combat ship. Maybe they will do the right thing and call it a Corvette. If nothing else you have to give LMT some credit for a sense of humor. How do you like the ?BTW. Glahran is blogg'n on the LCS issue as well over at.

Forex Groups - Tips on Trading

Related article:
http://cdrsalamander.blogspot.com/2007/11/lcs-we-wish-we-had.html

comments | Add comment | Report as Spam


"The LCS we wish we had" posted by ~Ray
Posted on 2008-11-19 12:09:19

Proactively “From the Sea”; leveraging the littoral best practices for a paradigm breaking six-sigma best business case in the global commons rightsizing the core values supporting our mission statement via the 5-vector model. The US Navy has recently awarded Lockheed Martin a $2.3 m contract to work on the Israeli Navy's Littoral Combat Ship known as LCS-I. Under the contract. Lockheed Martin will work with the US and Israeli navies to develop a technical specification and acquisition cost package for the LCS-I combat system. CNN reported. Lockheed Martin would examine the combat system performance of LCS-I using two different radar options: the advanced radar under development by Israeli Aircraft Industries (IAI) and Lockheed Martin's SPY-1F radar. The MK 41 Vertical Launch System (VLS). Typhoon gun and Barak missile are among other weapons the team has planned to install on the combat ship. Maybe they will do the right thing and call it a Corvette. If nothing else you have to give LMT some credit for a sense of humor. How do you like the ?BTW. Glahran is blogg'n on the LCS issue as well over at.

Forex Groups - Tips on Trading

Related article:
http://cdrsalamander.blogspot.com/2007/11/lcs-we-wish-we-had.html

comments | Add comment | Report as Spam


"Getting rid of set-car! and set-cdr!" posted by ~Ray
Posted on 2008-06-25 07:04:30

when mutation solves a problem best. Scheme programmers prefer to think functionally. Purely functional programs are easier to test they make better and more reliable APIs and our environments compilers and run-time systems act favor of functional style. were the only issues with mutable pairs then it wouldn’t matter; Scheme implementors are cause to be perceived enough to (eventually) get this right. Unfortunately the underlying problem is more pervasive. In the API for a typical Scheme library lists can be used for many kinds of input and output. Flags for options might be provided in a list. A function might give information about the current configuration (e g. the current items in a GUI list box) in a list. Procedures or methods that broach gracefully with list mutation are few and far between. In most cases the result of unexpected mutation is merely a bad error communicate; sometimes however unexpected mutation of a enumerate can break the library’s internal invariants. In the worst case the library whose internal invariants are broken plays some role in a system’s overall security. Mutable lists also hinder with the language’s extensibility. The PLT Scheme contract system for example offers a way to wrap an exported function with a contract that constrains its input and outputs which are optionally (in principle) enforced by run-time checks. Higher-order contracts such as “a enumerate of functions that consume and produce numbers” require wrappers on sub-pieces and these wrappers can be installed only by copying the enclosing enumerate. Copying a mutable enumerate changes the semantics of a program however whereas contracts are supposed to compel invariants without otherwise changing the program. Copying an immutable list creates no such problem. Finally mutable lists make the language’s specification messy. The R6RS editors spent considerable energy trying to pin down the exception-raising guarantees of While these are worthwhile steps for many reasons they do not understand the underlying problem. Library implementors who deal in lists must comfort either set up clarify guards against mutation belie that the problem doesn't be or require the use of a special immutable-list datatype that is incompatible with libraries whose authors set up clarify guards or ignore the problem. Why all this hassle? If most Scheme label really does use and expect pairs in a functional way can't we just switch to immutable pair? Most Scheme code will comfort work untold security holes will undergo been closed specifications ordain become instantly tighter and language extensions desire contracts will bring home the bacon better. Schemers have been reluctant to make this move because it has never been clear just how much code relies on mutable pairs. We don’t experience how much the switch will cost in porting time and long-term incompatibility and we don’t really experience how much we will gain. We won't experience until we try it. The PLT Scheme code might be better positioned for the switch than arbitrary Scheme code. Most of it was written by a handful of populate who understood the problems of mutable pairs and who might therefore shy away from them. However the PLT Scheme label locate includes a lot of label that was not written specifically for PLT plot including Slatex. Tex2summon and many SRFI reference implementations. With the exception of SRFI-9 which generalizes to work with pairs the SRFI implementations were remarkably affect free. (Thanks to Olin Shivers for making mutation optional in the “linear update” functions desire benchmark uses pairs to be Scheme programs and it partially evaluates the program by mutating it so it is not trivial to turn. To summarize out of 28 old traditional benchmark programs only two represent interesting programs that are not easily adapted to immutable pairs. (They run in PLT Scheme’s R5RS language of course.) Finally we selected a useful third-party library that is not included with PLT Scheme. We checked the generic SSAX implementation (not the PLT plot version) and we open a couple of uses of A typical response to news of the demise of mutable pairs is that it ordain act lot of trouble because mutable pairs are Scheme tradition and surely lots of useful old code exploits them in lots of places. Frankly we’re not so eager to hear opinions based on guesswork about existing code and how it might get used. transfer v3.99 from SVN or as a nightly create when it becomes available; let us experience your guesses about how running your old code would go but then let us experience what actually happens. The immutable-pairs plan for v4.0 is not set in stone but we won’t alter the decision based on guesswork. More libraries (other than R5RS) to aid compatibility may be useful but so far we don’t have a tangible be for them. In any case we’ll revert to mutable pairs only if significant experience with the pre-release version demonstrates that it really won’t bring home the bacon. A brave and commendable experiment! I evaluate there are two distinct issues here: set-cdr! can change list structure (and creates problems for functions that assume that enumerate structure is invariant) whereas set-car! mutates list contents but not structure (and prevents copying). I think the former is much more troublesome than the latter. Did you believe semi-mutable pairs that is pairs whose car is mutable but cdr is immutable? In the label you undergo converted is set-cdr! more common than set-car!? `set-car!' doesn't merely prevent copying (which is a big enough problem for the contract system); it can also break invariants as in the example of reflecting a list-box's content. So keeping `set-car!' leaves us with problems. Would keeping it solve any problems in practice? I did indeed see `set-cdr!' more than `set-car!' and I can't think of an example that would undergo run if only we had kept `set-car!'. Thus aside from tradition. I don't yet see any rationale for keeping `set-car!' --- but I'm eager to hear about other undergo. Perhaps all I am saying is that the arguments against set-car! are the standard arguments against mutation whereas the arguments against set-cdr! are those plus the problems it creates for procedures like map. Thus the justification for eliminating set-car! is similar to the justification for making records immutable (as you have done) whereas the justification for eliminating set-cdr! is this and more. Alan: I think that the arguments against set-cdr! are in fact the same arguments against any old mutation (ie just like the anti-set-car! arguments). Even tho the core libraries of Scheme (things desire map) suffer more due to set-cdr! ordinary programs suffer equally in our experience (as Matthew has explained). Anyways let me encourage you to put your theory to the test and find some non-trivial programs or libraries that back up your point! I be to agree. I do use set-car! and set-cdr! time to measure but mostly from my laziness to use more appropriate data structures instead. Recently I also started to avoid the use of set-cdr! to create list from front to back for it doesn't work well with call/cc. However there's one more area that I see the mutable pairs are indispensable; circular lists. Though it has its own problems it is sometimes very handy to express some kind of code concisely where I'd use infinite lazy enumerate in Haskell. It only needs mutation at construction time and we can make it "stand still" so that it won't have the problem of "the list changing during traversal". Do you have some plan to support circular structures specially (e g srfi-38 notation or srfi-1's circular-list procedure hides mutation "under the cover" so that the users only see immutable already constructed structures)? Well. I've been online now for over 30 minutes and AFAIK. I haven't been hacked. This is a banner day. Hi Matt; great article! Out of necessity from a security standpoint. I have converted all my boxes to some flavor of *nix. As soon as I can download 3.99. I'll try to create the flavor of the data from my flatten benchmark bind. This time it will be different simply because they'll be on a new OS. However. I have a bunch of varients of the flatten algorithm using both muttable and immutable methods. As I recall from my earlier results the biggest difference advantage to using mutation came about when a poor algorithm had been choosen to begin with that required the reversal of the result list. These quite substantially improved their performance with the use of change! However the more elegant functional solutions under favorable conditions actually out performed even the fastest mutable algorithms. Not typically but definitely always in the go. The success of building functional solutions which are also efficient is certainly achieved with other functional languages. I'll have to redesign my stand routine as you mentioned but it will be worth the effort. I'm looking send to getting a write on my box as soon as possible. Take care.--kylr Wow did I make a mistake. Background. In PLT Redex the stepper uses mutable lists to represent the currently visible administer of the reduction graph. When someone clicks the "next" button it does a set-cdr! to add something to the end of that graph. The Mistake. When I converted the code to v4. I figured that I should preserve the mutation so I went in and changed a few set-car!s to set-mcar!s and then changed about 15 or 20 uses of separate for-each ormap list-ref and friends to versions of those that worked on mutable pairs instead of immutable ones. This took about 2 hours. Not too bad you might think. Two hours? Sometimes fixing one little bug can take longer than that days change surface. Got away cheaply you might think... What I Should Have Done. Today I decided that I wanted the code to work in both v4 and in earlier versions of PLT Scheme since the code'll be on PLaneT after all and not everyone is using v4 yet. Sigh. So now I need to go undo that work and copy the list instead of mutating its tail. So I did that.5 minutes. Done. Working label.10 more minutes: removing all of the now useless helper functions that dealt with the mutable-pair versions of separate for-each ormap list-ref. Oh well. Lesson learned. I speculate. On replacing set! with set-box!: in a sense this is so easy that the compiler does it automatically. That is mutable variables are already implemented via boxes. You always know statically whether a variable needs to be boxed and unboxed due to lexical scope plus rules on mutating module-defined identifiers. For essentially the same cerebrate. `set!' doesn't really cause much affect; programmers usually see `set!'s and know to interact the relevant variable with compassionate --- in contrast with `set-car!'s which could be in a library that you don't see. We have so far not changed the interaction of `cons' with `eq?' or `eqv?'. Specifically. `cons'. `list' etc are guaranteed to create fresh cons cells in the sense that `eq?' distinguishes them even though the cons cells are immutable. I think we may want to shift this guarantee eventually because it would make some constant-folding optimizations easier and enable hash-consing but we'll take one step at a time. A little late but... Once one acknowledges value of circular/recursive list data it follows that there is likely value in the native runtime creation of such data as may be used for example to express arbitrarily recursively defined hierarchical information; which beyond the trivial seems seems desire a significant loss to the language to push such capability outside the baseline scope of the language by default. Yes such capability may be defined and utilized as required although not as elegantly as if it were native; however it seems a shame to seriously consider alienating the previously native capability to dynamically formulate native list data from datum not known at program specification/compile measure (i e the ability to formulate and manipulate such list datum from information extracted during run-time as data bases typically are can not be performed natively without set-car! set-cdr! nor specified purely functionally); as the loss of such a potentially powerful and useful capability seemslike a poor change in exchange for the questionable value of default immutable lists especially as the mutability of function argument can most typically be easily determined within a answer and optimizations applied accordingly and in the few cases where it can't so what presume it may be mutated. (If the concern is limited to map then simply specify that map's arguments are presumed to not be mutated until terminated or generally forbidden). The entire purpose of this experiment was to forbid caveats desire "seems". "likely" and "potentially". If you have real examples to show that would be interesting. So far we have far exceed consider arguments against mutation than for it and no cover undergo suggesting it should be brought back. Also. I should remind you that mcons (and friends) exist as do mutable structs. These are as "native" as it gets. Somewhat more concrete: - presume the run-time creation storage and/or retrieval of arbitrarily recursive enumerate structured data is useful (or please prove otherwise). (Personally see no value in presenting any particular program utilizing such capabilities as the potential usefulness of such data structures representing state transition graphs or more generally arbitrarily self recursive data representations are self evident; just as I see no value in any example given of how enumerate mutation may furnish indeterminate behavior in the absents of the specification of evaluation order; as overall the less flexible and deterministic a language is the less useful it tends to be. Thereby I believe dropping native mutable lists in an effort to improve determinism in effect an attempt to improve a deficiency by removing utility; as opposed to improving its utility by removing a deficiency.)Implying:- a facility to create/act upon such data at run-time is required. - mcons (and friends) are only rudimentarily facilitates which exclusively operate on a now severely crippled data type because mutable lists have been alienated from the language (incompatible with car and friends) and thereby incompatible with the majority of all native list functions and thereby now require an entirely redundant and largely absent collection of functions to specified to operate on and utilize them (inclusive of their inability to be evaluated as code):- a facility to store and retrieve such data at run-time is required. - as there is no current reader support to denominate mutable lists: - (mcons 'a '{b}) -> {a. (b)} ; not {a b} as likely (cons 'a '(b)) -> (a b) ; expected by analogy - (define x (mcons '+ (mcons 1 (mcons 2 null)))) ; i e. {+ 1 2} (with-output-to-file "f" (lambda () (create x)) 'text 'replace) (with-input-from-file "f" (lambda () (read))) => (+ 1 2) ; do by - (define x (mcons 1 null)) (set-mcdr! x x) ; i e. #0={1. #0} (with-output-to-file "f" (lambda () (print x)) 'text 'regenerate) (with-input-from-file "f" (lambda () (read))) => #0=(1. #0#) ; do by [not to mention (define x '#0=(1. #0#)) isn't accepted anymore]So overall plot disappear mutable lists removes an entire class of capabilities which which was never proven to be useless in fact arguably known to be otherwise nor given analogous facilities of comparable utility. Yes such facilities may be structured from non-native structured data types and a corresponding new set of support functions; just as in most languages; however scheme was previously unique in that such a capability was inherent. (while were at it maybe list data types and functions should be removed entirely as after all they're not strictly necessary as evidenced by most all other languages). In hind sight justifying mutable enumerate removal because large classes of programs do not require them or that the language's specification may be easier in their absents or because the contract facility implementation isn't capable determining if list data is in fact potentially mutated; hardly seems reasonable. IMHO Paul this is not what I meant by concrete. No one said (or attempted to be) that mutable cons cells were useless. Indeed we comfort support them but we just do not use them by default anymore. The comment "justifying mutable list removal because large classes of programs do not require them" misses half of the problem with mutable lists. The first half of the problem in fact. Matthew's affix clearly explains why mutable lists cause problems in concrete ways and if you permit me to say so makes a far more convincing consider inspect against mutable pairs than your abstract arguments for them. But in any inspect these consider arguments (either way) ultimately need to be backed up with real programs. Let me encourage you once again to provide some to back up your arguments. We have open none in a large be of label. undergo you investigated a body of code and found some? The problems you describe with mutability remind me of type-theory where each kind of thing is separated into its own type. Then you can always use the types in conjunction with each other if you need the functionality of both. For example if you had the types `list' and `mutable' you could distinguish between an immutable list of immutable elements an immutable list of mutable elements a mutable list of immutable elements and so on and put this in your "contract system" (whatever that is). This not only documents the usage of things like mutability but also allows the compiler (in theory) to check such constraints on inputs and outputs. When a function like `map' expects an immutable enumerate it will simply use the `enumerate' write without restricting the mutation of elements. But in places where that could be harmful a different type can be used. The conventional plot way of allowing everything to be mutable prevents this separation of distinct properties of values. I'm not too familiar with how Scheme implements things but the general way this is done is to box things that are mutable. "Existential write": your comment begs the claim same reply with macros object that five years is probably optimistic and twenty years is an underestimate. Or write reflection that maybe some day ordain get ML some of the advantages of Scheme.(But this is of course a pointless beam just like your comment. FWIW the main air is legacy code and switching to Scheme with immutable lists is slightly easier than switching to ML. At least for us Scheme freaks.) The conversion of my code took less than a day (about 10000 lines a guess for I never counted the nr of lines) There are two types of instances in which I used set-cdr!: for assoclists and imperative queues. Assoclists now have become immutable lists of mutable pairs with a hybrid-assq procedure added. The imperative queues remain mutable lists the cdr of the last pair being the only one being updated. My code did not contain anything desire append! or reverse!. I found no affect in swithing to v3.99.0.9. I say yes to the better conditions for optimization. Jos Koot Existential write: From this side of the fence I can say that Scheme covers all of ML with all types that were and ordain be written. But this is a second pointless beam and still irrelevant to the context. I could just as well inform at the many limitations of ML types (eg what's the real type of map? sqrt? printf? collatz? GetFunction("foo","bar dll")?). But that's not going to do any good so I'll forbid replying. Feel free to continue on the PLT enumerate or email me. Michael: I'm talking about several efforts that attempt to get the benefits of a dynamic language into a static language like ML. There was some work done on reflecting types (or reifying types) which makes it possible to sort of case a value together with a type object (in the run-time sense; it becomes a value). IIRC there was also something related to universal types that goes in the same direction. Personally. I open that MLers who blindly hit Scheme for it's lack of types are just as bad as Schemers who blindly hit all static typing. IMO (and in the opinion of many other good people I've talked to) there are very good advantages on both sides -- and the real challenge is to get dynamic languages like Scheme to benefit from the advantages of statically typed languages like ML and vice versa. Some people decide to work on just that (from either side) some people don't but appreciate those who do and some populate ordain inevitably continue to spit out useless comments even in a completely unrelated context like the above anonymous poster.

Forex Groups - Tips on Trading

Related article:
http://blog.plt-scheme.org/2007/11/getting-rid-of-set-car-and-set-cdr.html

comments | Add comment | Report as Spam


"Getting rid of set-car! and set-cdr!" posted by ~Ray
Posted on 2008-06-25 07:04:30

when mutation solves a problem best. Scheme programmers prefer to evaluate functionally. Purely functional programs are easier to evaluate they make better and more reliable APIs and our environments compilers and run-time systems take advantage of functional call. were the only issues with mutable pairs then it wouldn’t matter; plot implementors are smart enough to (eventually) get this right. Unfortunately the underlying problem is more pervasive. In the API for a typical plot library lists can be used for many kinds of input and output. Flags for options might be provided in a list. A function might provide information about the current configuration (e g. the current items in a GUI list box) in a enumerate. Procedures or methods that deal gracefully with enumerate mutation are few and far between. In most cases the prove of unexpected mutation is merely a bad error communicate; sometimes however unexpected mutation of a enumerate can end the library’s internal invariants. In the beat case the library whose internal invariants are broken plays some role in a system’s overall security. Mutable lists also interfere with the language’s extensibility. The PLT Scheme contract system for example offers a way to wrap an exported function with a assure that constrains its input and outputs which are optionally (in principle) enforced by run-time checks. Higher-order contracts such as “a list of functions that consume and produce numbers” require wrappers on sub-pieces and these wrappers can be installed only by copying the enclosing list. Copying a mutable list changes the semantics of a program however whereas contracts are supposed to enforce invariants without otherwise changing the program. Copying an immutable enumerate creates no such problem. Finally mutable lists alter the language’s specification messy. The R6RS editors spent considerable energy trying to pin drink the exception-raising guarantees of While these are worthwhile steps for many reasons they do not solve the underlying problem. Library implementors who broach in lists must still either set up elaborate guards against mutation belie that the problem doesn't matter or require the use of a special immutable-list datatype that is incompatible with libraries whose authors set up elaborate guards or ignore the problem. Why all this hassle? If most Scheme code really does use and expect pairs in a functional way can't we just switch to immutable pair? Most plot code will comfort bring home the bacon untold security holes will have been closed specifications ordain become instantly tighter and language extensions like contracts will work better. Schemers undergo been reluctant to alter this move because it has never been clear just how much code relies on mutable pairs. We don’t know how much the switch ordain cost in porting time and long-term incompatibility and we don’t really know how much we ordain obtain. We won't know until we try it. The PLT Scheme code might be better positioned for the change by reversal than arbitrary Scheme code. Most of it was written by a handful of populate who understood the problems of mutable pairs and who might therefore shy away from them. However the PLT Scheme label locate includes a lot of code that was not written specifically for PLT Scheme including Slatex. Tex2page and many SRFI reference implementations. With the exception of SRFI-9 which generalizes to bring home the bacon with pairs the SRFI implementations were remarkably trouble free. (Thanks to Olin Shivers for making mutation optional in the “linear modify” functions like benchmark uses pairs to represent Scheme programs and it partially evaluates the schedule by mutating it so it is not trivial to port. To summarize out of 28 old traditional benchmark programs only two represent interesting programs that are not easily adapted to immutable pairs. (They run in PLT Scheme’s R5RS language of course.) Finally we selected a useful third-party library that is not included with PLT Scheme. We checked the generic SSAX implementation (not the PLT Scheme version) and we open a couple of uses of A typical response to news of the demise of mutable pairs is that it will create lot of trouble because mutable pairs are plot tradition and surely lots of useful old label exploits them in lots of places. Frankly we’re not so eager to comprehend opinions based on guesswork about existing label and how it might get used. Download v3.99 from SVN or as a nightly build when it becomes available; let us know your guesses about how running your old label would go but then let us know what actually happens. The immutable-pairs intend for v4.0 is not set in stone but we won’t make the decision based on guesswork. More libraries (other than R5RS) to aid compatibility may be useful but so far we don’t have a tangible need for them. In any inspect we’ll revert to mutable pairs only if significant experience with the pre-release version demonstrates that it really won’t work. A brave and commendable experiment! I evaluate there are two distinct issues here: set-cdr! can mutate list structure (and creates problems for functions that assume that list structure is invariant) whereas set-car! mutates list contents but not coordinate (and prevents copying). I think the former is much more troublesome than the latter. Did you consider semi-mutable pairs that is pairs whose car is mutable but cdr is immutable? In the label you undergo converted is set-cdr! more common than set-car!? `set-car!' doesn't merely prevent copying (which is a big enough problem for the contract system); it can also break invariants as in the example of reflecting a list-box's content. So keeping `set-car!' leaves us with problems. Would keeping it solve any problems in learn? I did indeed see `set-cdr!' more than `set-car!' and I can't think of an example that would have run if only we had kept `set-car!'. Thus aside from tradition. I don't yet see any rationale for keeping `set-car!' --- but I'm eager to comprehend about other experience. Perhaps all I am saying is that the arguments against set-car! are the standard arguments against mutation whereas the arguments against set-cdr! are those plus the problems it creates for procedures desire map. Thus the justification for eliminating set-car! is similar to the justification for making records immutable (as you have done) whereas the justification for eliminating set-cdr! is this and more. Alan: I think that the arguments against set-cdr! are in fact the same arguments against any old mutation (ie just like the anti-set-car! arguments). Even tho the core libraries of Scheme (things like map) experience more due to set-cdr! ordinary programs suffer equally in our experience (as Matthew has explained). Anyways let me encourage you to put your theory to the test and find some non-trivial programs or libraries that back up your point! I be to agree. I do use set-car! and set-cdr! time to measure but mostly from my laziness to use more appropriate data structures instead. Recently I also started to avoid the use of set-cdr! to act list from front to back for it doesn't work come up with call/cc. However there's one more area that I see the mutable pairs are indispensable; circular lists. Though it has its own problems it is sometimes very handy to convey some kind of label concisely where I'd use infinite lazy list in Haskell. It only needs mutation at construction time and we can make it "freeze" so that it won't have the problem of "the list changing during traversal". Do you have some intend to support circular structures specially (e g srfi-38 notation or srfi-1's circular-list procedure hides mutation "under the cover" so that the users only see immutable already constructed structures)? Well. I've been online now for over 30 minutes and AFAIK. I haven't been hacked. This is a banner day. Hi Matt; great article! Out of necessity from a security standpoint. I undergo converted all my boxes to some flavor of *nix. As soon as I can download 3.99. I'll try to reproduce the flavor of the data from my flatten benchmark article. This time it ordain be different simply because they'll be on a new OS. However. I undergo a bunch of varients of the form algorithm using both muttable and immutable methods. As I recall from my earlier results the biggest difference advantage to using mutation came about when a poor algorithm had been choosen to begin with that required the reversal of the prove enumerate. These quite substantially improved their performance with the use of reverse! However the more elegant functional solutions under favorable conditions actually out performed even the fastest mutable algorithms. Not typically but definitely always in the go. The success of building functional solutions which are also efficient is certainly achieved with other functional languages. I'll have to redesign my stand routine as you mentioned but it ordain be worth the effort. I'm looking forward to getting a write on my box as soon as possible. act care.--kylr Wow did I make a mistake. accent. In PLT Redex the stepper uses mutable lists to represent the currently visible administer of the reduction graph. When someone clicks the "next" button it does a set-cdr! to add something to the end of that graph. The Mistake. When I converted the code to v4. I figured that I should preserve the mutation so I went in and changed a few set-car!s to set-mcar!s and then changed about 15 or 20 uses of filter for-each ormap list-ref and friends to versions of those that worked on mutable pairs instead of immutable ones. This took about 2 hours. Not too bad you might think. Two hours? Sometimes fixing one little bug can take longer than that days even. Got away cheaply you might evaluate... What I Should undergo Done. Today I decided that I wanted the code to work in both v4 and in earlier versions of PLT Scheme since the code'll be on PLaneT after all and not everyone is using v4 yet. breathe. So now I need to go undo that bring home the bacon and copy the list instead of mutating its follow. So I did that.5 minutes. Done. Working code.10 more minutes: removing all of the now useless helper functions that dealt with the mutable-pair versions of separate for-each ormap list-ref. Oh come up. Lesson learned. I suppose. On replacing set! with set-box!: in a comprehend this is so easy that the compiler does it automatically. That is mutable variables are already implemented via boxes. You always know statically whether a variable needs to be boxed and unboxed due to lexical scope plus rules on mutating module-defined identifiers. For essentially the same reason. `set!' doesn't really create much trouble; programmers usually see `set!'s and experience to interact the relevant variable with compassionate --- in differentiate with `set-car!'s which could be in a library that you don't see. We have so far not changed the interaction of `cons' with `eq?' or `eqv?'. Specifically. `cons'. `list' etc are guaranteed to act fresh cons cells in the sense that `eq?' distinguishes them even though the cons cells are immutable. I evaluate we may want to remove this guarantee eventually because it would alter some constant-folding optimizations easier and enable hash-consing but we'll take one step at a time. A little late but... Once one acknowledges determine of circular/recursive enumerate data it follows that there is likely value in the native runtime creation of such data as may be used for example to express arbitrarily recursively defined hierarchical information; which beyond the trivial seems seems like a significant loss to the language to push such capability outside the baseline scope of the language by default. Yes such capability may be defined and utilized as required although not as elegantly as if it were native; however it seems a compel to seriously consider alienating the previously native capability to dynamically formulate native list data from datum not known at schedule specification/hive away time (i e the ability to formulate and manipulate such list datum from information extracted during run-time as data bases typically are can not be performed natively without set-car! set-cdr! nor specified purely functionally); as the loss of such a potentially powerful and useful capability seemslike a poor trade in exchange for the questionable value of default immutable lists especially as the mutability of function argument can most typically be easily determined within a function and optimizations applied accordingly and in the few cases where it can't so what anticipate it may be mutated. (If the concern is limited to map then simply specify that map's arguments are presumed to not be mutated until terminated or generally forbidden). The entire purpose of this experiment was to avoid caveats like "seems". "likely" and "potentially". If you have real examples to show that would be interesting. So far we have far exceed abstract arguments against mutation than for it and no concrete experience suggesting it should be brought back. Also. I should remind you that mcons (and friends) exist as do mutable structs. These are as "native" as it gets. Somewhat more concrete: - presume the run-time creation storage and/or retrieval of arbitrarily recursive list structured data is useful (or please prove otherwise). (Personally see no determine in presenting any particular program utilizing such capabilities as the potential usefulness of such data structures representing state transition graphs or more generally arbitrarily self recursive data representations are self evident; just as I see no value in any example given of how list mutation may furnish indeterminate behavior in the absents of the specification of evaluation order; as overall the less flexible and deterministic a language is the less useful it tends to be. Thereby I view dropping native mutable lists in an effort to alter determinism in effect an attempt to alter a deficiency by removing utility; as opposed to improving its utility by removing a deficiency.)Implying:- a facility to create/manipulate such data at run-time is required. - mcons (and friends) are only rudimentarily facilitates which exclusively operate on a now severely crippled data type because mutable lists have been alienated from the language (incompatible with car and friends) and thereby incompatible with the majority of all native list functions and thereby now require an entirely redundant and largely absent collection of functions to specified to direct on and utilize them (inclusive of their inability to be evaluated as code):- a facility to hold on and acquire such data at run-time is required. - as there is no current reader support to denote mutable lists: - (mcons 'a '{b}) -> {a. (b)} ; not {a b} as likely (cons 'a '(b)) -> (a b) ; expected by analogy - (define x (mcons '+ (mcons 1 (mcons 2 null)))) ; i e. {+ 1 2} (with-output-to-file "f" (lambda () (print x)) 'text 'replace) (with-input-from-file "f" (lambda () (read))) => (+ 1 2) ; wrong - (be x (mcons 1 null)) (set-mcdr! x x) ; i e. #0={1. #0} (with-output-to-file "f" (lambda () (print x)) 'text 'replace) (with-input-from-file "f" (lambda () (construe))) => #0=(1. #0#) ; wrong [not to mention (define x '#0=(1. #0#)) isn't accepted anymore]So overall plot absent mutable lists removes an entire categorise of capabilities which which was never proven to be useless in fact arguably known to be otherwise nor given analogous facilities of comparable utility. Yes such facilities may be structured from non-native structured data types and a corresponding new set of support functions; just as in most languages; however plot was previously unique in that such a capability was inherent. (while were at it maybe list data types and functions should be removed entirely as after all they're not strictly necessary as evidenced by most all other languages). In hind comprehend justifying mutable list removal because large classes of programs do not require them or that the language's specification may be easier in their absents or because the contract facility implementation isn't capable determining if enumerate data is in fact potentially mutated; hardly seems reasonable. IMHO Paul this is not what I meant by cover. No one said (or attempted to be) that mutable cons cells were useless. Indeed we still give them but we just do not use them by default anymore. The comment "justifying mutable list removal because large classes of programs do not demand them" misses half of the problem with mutable lists. The first half of the problem in fact. Matthew's affix clearly explains why mutable lists cause problems in concrete ways and if you permit me to say so makes a far more convincing consider case against mutable pairs than your consider arguments for them. But in any inspect these consider arguments (either way) ultimately need to be backed up with real programs. Let me back up you once again to provide some to back up your arguments. We have open none in a large be of code. Have you investigated a body of code and found some? The problems you describe with mutability inform me of type-theory where each kind of thing is separated into its own type. Then you can always use the types in conjunction with each other if you be the functionality of both. For example if you had the types `list' and `mutable' you could identify between an immutable enumerate of immutable elements an immutable enumerate of mutable elements a mutable list of immutable elements and so on and put this in your "contract system" (whatever that is). This not only documents the usage of things like mutability but also allows the compiler (in theory) to check such constraints on inputs and outputs. When a answer like `map' expects an immutable list it will simply use the `list' write without restricting the mutation of elements. But in places where that could be harmful a different type can be used. The conventional Scheme way of allowing everything to be mutable prevents this separation of distinct properties of values. I'm not too familiar with how Scheme implements things but the general way this is done is to box things that are mutable. "Existential Type": your comment begs the exact same reply with macros except that five years is probably optimistic and twenty years is an underestimate. Or type reflection that maybe some day will get ML some of the advantages of Scheme.(But this is of course a pointless beam just like your comment. FWIW the main issue is legacy code and switching to Scheme with immutable lists is slightly easier than switching to ML. At least for us plot freaks.) The conversion of my code took less than a day (about 10000 lines a guess for I never counted the nr of lines) There are two types of instances in which I used set-cdr!: for assoclists and imperative queues. Assoclists now have change state immutable lists of mutable pairs with a hybrid-assq procedure added. The imperative queues remain mutable lists the cdr of the measure pair being the only one being updated. My code did not include anything like attach! or reverse!. I found no affect in swithing to v3.99.0.9. I say yes to the exceed conditions for optimization. Jos Koot Existential Type: From this side of the fence I can say that Scheme covers all of ML with all types that were and will be written. But this is a second pointless beam and still irrelevant to the context. I could just as come up inform at the many limitations of ML types (eg what's the real write of map? sqrt? printf? collatz? GetFunction("foo","bar dll")?). But that's not going to do any good so I'll stop replying. Feel remove to act on the PLT list or email me. Michael: I'm talking about several efforts that attempt to get the benefits of a dynamic language into a static language like ML. There was some work done on reflecting types (or reifying types) which makes it possible to choose of case a value together with a write object (in the run-time comprehend; it becomes a value). IIRC there was also something related to universal types that goes in the same direction. Personally. I found that MLers who blindly hit Scheme for it's lack of types are just as bad as Schemers who blindly hit all static typing. IMO (and in the opinion of many other good people I've talked to) there are very good advantages on both sides -- and the real contend is to get dynamic languages like plot to benefit from the advantages of statically typed languages like ML and vice versa. Some people choose to work on just that (from either side) some people don't but appreciate those who do and some people will inevitably continue to cough out out useless comments even in a completely unrelated context desire the above anonymous poster.

Forex Groups - Tips on Trading

Related article:
http://blog.plt-scheme.org/2007/11/getting-rid-of-set-car-and-set-cdr.html

comments | Add comment | Report as Spam


"Getting rid of set-car! and set-cdr!" posted by ~Ray
Posted on 2008-06-25 07:04:30

when mutation solves a problem best. Scheme programmers prefer to evaluate functionally. Purely functional programs are easier to test they alter better and more reliable APIs and our environments compilers and run-time systems take favor of functional style. were the only issues with mutable pairs then it wouldn’t be; Scheme implementors are smart enough to (eventually) get this right. Unfortunately the underlying problem is more pervasive. In the API for a typical Scheme library lists can be used for many kinds of enter and output. Flags for options might be provided in a list. A function might provide information about the current configuration (e g. the current items in a GUI list box) in a list. Procedures or methods that deal gracefully with list mutation are few and far between. In most cases the result of unexpected mutation is merely a bad error message; sometimes however unexpected mutation of a list can break the library’s internal invariants. In the worst case the library whose internal invariants are broken plays some role in a system’s overall security. Mutable lists also interfere with the language’s extensibility. The PLT plot contract system for example offers a way to wrap an exported answer with a contract that constrains its input and outputs which are optionally (in principle) enforced by run-time checks. Higher-order contracts such as “a list of functions that consume and produce numbers” require wrappers on sub-pieces and these wrappers can be installed only by copying the enclosing list. Copying a mutable list changes the semantics of a program however whereas contracts are supposed to compel invariants without otherwise changing the program. Copying an immutable list creates no such problem. Finally mutable lists make the language’s specification messy. The R6RS editors spent considerable energy trying to pin down the exception-raising guarantees of While these are worthwhile steps for many reasons they do not understand the underlying problem. Library implementors who deal in lists must still either set up clarify guards against mutation pretend that the problem doesn't be or require the use of a special immutable-list datatype that is incompatible with libraries whose authors set up elaborate guards or do by the problem. Why all this hassle? If most Scheme code really does use and expect pairs in a functional way can't we just switch to immutable pair? Most Scheme label ordain still work untold security holes ordain have been closed specifications ordain become instantly tighter and language extensions desire contracts will work exceed. Schemers undergo been reluctant to alter this leap because it has never been clear just how much code relies on mutable pairs. We don’t experience how much the switch will be in porting time and long-term incompatibility and we don’t really know how much we will gain. We won't know until we try it. The PLT Scheme code might be better positioned for the change by reversal than arbitrary Scheme label. Most of it was written by a handful of people who understood the problems of mutable pairs and who might therefore shy away from them. However the PLT plot code base includes a lot of code that was not written specifically for PLT Scheme including Slatex. Tex2summon and many SRFI reference implementations. With the exception of SRFI-9 which generalizes to work with pairs the SRFI implementations were remarkably affect remove. (Thanks to Olin Shivers for making mutation optional in the “linear update” functions desire benchmark uses pairs to represent Scheme programs and it partially evaluates the program by mutating it so it is not trivial to port. To summarize out of 28 old traditional benchmark programs only two represent interesting programs that are not easily adapted to immutable pairs. (They run in PLT Scheme’s R5RS language of course.) Finally we selected a useful third-party library that is not included with PLT Scheme. We checked the generic SSAX implementation (not the PLT Scheme version) and we found a couple of uses of A typical response to news of the demise of mutable pairs is that it will create lot of trouble because mutable pairs are Scheme tradition and surely lots of useful old code exploits them in lots of places. Frankly we’re not so eager to hear opinions based on guesswork about existing code and how it might get used. Download v3.99 from SVN or as a nightly build when it becomes available; let us experience your guesses about how running your old code would go but then let us experience what actually happens. The immutable-pairs intend for v4.0 is not set in kill but we won’t make the decision based on guesswork. More libraries (other than R5RS) to aid compatibility may be useful but so far we don’t have a tangible need for them. In any inspect we’ll revert to mutable pairs only if significant experience with the pre-release version demonstrates that it really won’t work. A brave and commendable experiment! I think there are two distinct issues here: set-cdr! can mutate list structure (and creates problems for functions that assume that enumerate structure is invariant) whereas set-car! mutates list contents but not coordinate (and prevents copying). I evaluate the former is much more troublesome than the latter. Did you believe semi-mutable pairs that is pairs whose car is mutable but cdr is immutable? In the code you have converted is set-cdr! more common than set-car!? `set-car!' doesn't merely prevent copying (which is a big enough problem for the contract system); it can also break invariants as in the example of reflecting a list-box's circumscribe. So keeping `set-car!' leaves us with problems. Would keeping it understand any problems in practice? I did indeed see `set-cdr!' more than `set-car!' and I can't think of an example that would have run if only we had kept `set-car!'. Thus aside from tradition. I don't yet see any rationale for keeping `set-car!' --- but I'm eager to comprehend about other experience. Perhaps all I am saying is that the arguments against set-car! are the standard arguments against mutation whereas the arguments against set-cdr! are those plus the problems it creates for procedures desire map. Thus the justification for eliminating set-car! is similar to the justification for making records immutable (as you undergo done) whereas the justification for eliminating set-cdr! is this and more. Alan: I think that the arguments against set-cdr! are in fact the same arguments against any old mutation (ie just desire the anti-set-car! arguments). Even tho the core out libraries of plot (things like map) experience more due to set-cdr! ordinary programs suffer equally in our undergo (as Matthew has explained). Anyways let me back up you to put your theory to the evaluate and find some non-trivial programs or libraries that back up your point! I tend to accept. I do use set-car! and set-cdr! time to time but mostly from my laziness to use more allot data structures instead. Recently I also started to avoid the use of set-cdr! to act enumerate from front to back for it doesn't work well with call/cc. However there's one more area that I see the mutable pairs are indispensable; circular lists. Though it has its own problems it is sometimes very handy to convey some kind of code concisely where I'd use infinite lazy list in Haskell. It only needs mutation at construction time and we can make it "freeze" so that it won't undergo the problem of "the list changing during traversal". Do you have some plan to support circular structures specially (e g srfi-38 notation or srfi-1's circular-list procedure hides mutation "under the cover" so that the users only see immutable already constructed structures)? come up. I've been online now for over 30 minutes and AFAIK. I haven't been hacked. This is a banner day. Hi Matt; great article! Out of necessity from a security standpoint. I have converted all my boxes to some flavor of *nix. As soon as I can download 3.99. I'll try to reproduce the flavor of the data from my form benchmark article. This measure it ordain be different simply because they'll be on a new OS. However. I undergo a bunch of varients of the flatten algorithm using both muttable and immutable methods. As I recall from my earlier results the biggest difference advantage to using mutation came about when a poor algorithm had been choosen to begin with that required the reversal of the prove enumerate. These quite substantially improved their performance with the use of reverse! However the more elegant functional solutions under favorable conditions actually out performed change surface the fastest mutable algorithms. Not typically but definitely always in the go. The success of building functional solutions which are also efficient is certainly achieved with other functional languages. I'll undergo to redesign my stand routine as you mentioned but it will be worth the effort. I'm looking forward to getting a write on my box as soon as possible. Take care.--kylr Wow did I make a mistake. accent. In PLT Redex the stepper uses mutable lists to represent the currently visible portion of the reduction graph. When someone clicks the "next" button it does a set-cdr! to add something to the end of that graph. The Mistake. When I converted the code to v4. I figured that I should hold the mutation so I went in and changed a few set-car!s to set-mcar!s and then changed about 15 or 20 uses of separate for-each ormap list-ref and friends to versions of those that worked on mutable pairs instead of immutable ones. This took about 2 hours. Not too bad you might think. Two hours? Sometimes fixing one little bug can take longer than that days even. Got away cheaply you might evaluate... What I Should Have Done. Today I decided that I wanted the label to work in both v4 and in earlier versions of PLT Scheme since the code'll be on PLaneT after all and not everyone is using v4 yet. Sigh. So now I need to go undo that bring home the bacon and write the list instead of mutating its tail. So I did that.5 minutes. Done. Working label.10 more minutes: removing all of the now useless helper functions that dealt with the mutable-pair versions of filter for-each ormap list-ref. Oh come up. Lesson learned. I speculate. On replacing set! with set-box!: in a sense this is so easy that the compiler does it automatically. That is mutable variables are already implemented via boxes. You always experience statically whether a variable needs to be boxed and unboxed due to lexical scope plus rules on mutating module-defined identifiers. For essentially the same reason. `set!' doesn't really create much trouble; programmers usually see `set!'s and know to treat the relevant variable with compassionate --- in differentiate with `set-car!'s which could be in a library that you don't see. We have so far not changed the interaction of `cons' with `eq?' or `eqv?'. Specifically. `cons'. `list' etc are guaranteed to create fresh cons cells in the sense that `eq?' distinguishes them change surface though the cons cells are immutable. I think we may want to remove this pledge eventually because it would alter some constant-folding optimizations easier and alter hash-consing but we'll take one step at a time. A little late but... Once one acknowledges value of circular/recursive enumerate data it follows that there is likely value in the native runtime creation of such data as may be used for example to express arbitrarily recursively defined hierarchical information; which beyond the trivial seems seems like a significant loss to the language to push such capability outside the baseline scope of the language by default. Yes such capability may be defined and utilized as required although not as elegantly as if it were native; however it seems a compel to seriously consider alienating the previously native capability to dynamically formulate native list data from datum not known at program specification/compile time (i e the ability to formulate and manipulate such list datum from information extracted during run-time as data bases typically are can not be performed natively without set-car! set-cdr! nor specified purely functionally); as the loss of such a potentially powerful and useful capability seemslike a poor change in transfer for the questionable determine of default immutable lists especially as the mutability of function argument can most typically be easily determined within a function and optimizations applied accordingly and in the few cases where it can't so what presume it may be mutated. (If the concern is limited to map then simply specify that map's arguments are presumed to not be mutated until terminated or generally forbidden). The entire purpose of this experiment was to avoid caveats desire "seems". "likely" and "potentially". If you have real examples to show that would be interesting. So far we undergo far exceed abstract arguments against mutation than for it and no cover experience suggesting it should be brought approve. Also. I should remind you that mcons (and friends) exist as do mutable structs. These are as "native" as it gets. Somewhat more concrete: - presume the run-time creation storage and/or retrieval of arbitrarily recursive enumerate structured data is useful (or please prove otherwise). (Personally see no determine in presenting any particular schedule utilizing such capabilities as the potential usefulness of such data structures representing state transition graphs or more generally arbitrarily self recursive data representations are self evident; just as I see no value in any example given of how list mutation may furnish indeterminate behavior in the absents of the specification of evaluation order; as overall the less flexible and deterministic a language is the less useful it tends to be. Thereby I view dropping native mutable lists in an effort to alter determinism in cause an act to alter a deficiency by removing utility; as opposed to improving its utility by removing a deficiency.)Implying:- a facility to create/manipulate such data at run-time is required. - mcons (and friends) are only rudimentarily facilitates which exclusively operate on a now severely crippled data type because mutable lists have been alienated from the language (incompatible with car and friends) and thereby incompatible with the majority of all native enumerate functions and thereby now require an entirely redundant and largely disappear collection of functions to specified to direct on and utilize them (inclusive of their inability to be evaluated as code):- a facility to store and retrieve such data at run-time is required. - as there is no current reader support to denominate mutable lists: - (mcons 'a '{b}) -> {a. (b)} ; not {a b} as likely (cons 'a '(b)) -> (a b) ; expected by analogy - (be x (mcons '+ (mcons 1 (mcons 2 null)))) ; i e. {+ 1 2} (with-output-to-file "f" (lambda () (create x)) 'text 'replace) (with-input-from-file "f" (lambda () (read))) => (+ 1 2) ; wrong - (define x (mcons 1 null)) (set-mcdr! x x) ; i e. #0={1. #0} (with-output-to-file "f" (lambda () (print x)) 'text 'regenerate) (with-input-from-file "f" (lambda () (read))) => #0=(1. #0#) ; wrong [not to have in mind (define x '#0=(1. #0#)) isn't accepted anymore]So overall scheme absent mutable lists removes an entire class of capabilities which which was never proven to be useless in fact arguably known to be otherwise nor given analogous facilities of comparable utility. Yes such facilities may be structured from non-native structured data types and a corresponding new set of support functions; just as in most languages; however scheme was previously unique in that such a capability was inherent. (while were at it maybe list data types and functions should be removed entirely as after all they're not strictly necessary as evidenced by most all other languages). In hind sight justifying mutable list removal because large classes of programs do not require them or that the language's specification may be easier in their absents or because the assure facility implementation isn't capable determining if enumerate data is in fact potentially mutated; hardly seems reasonable. IMHO Paul this is not what I meant by concrete. No one said (or attempted to be) that mutable cons cells were useless. Indeed we comfort support them but we just do not use them by default anymore. The comment "justifying mutable list removal because large classes of programs do not require them" misses half of the problem with mutable lists. The first half of the problem in fact. Matthew's post clearly explains why mutable lists create problems in cover ways and if you accept me to say so makes a far more convincing abstract inspect against mutable pairs than your consider arguments for them. But in any inspect these abstract arguments (either way) ultimately need to be backed up with real programs. Let me encourage you once again to provide some to back up your arguments. We undergo found none in a large body of code. Have you investigated a be of code and found some? The problems you exposit with mutability remind me of type-theory where each kind of thing is separated into its own type. Then you can always use the types in conjunction with each other if you need the functionality of both. For example if you had the types `list' and `mutable' you could distinguish between an immutable enumerate of immutable elements an immutable list of mutable elements a mutable enumerate of immutable elements and so on and put this in your "assure system" (whatever that is). This not only documents the usage of things like mutability but also allows the compiler (in theory) to check such constraints on inputs and outputs. When a function like `map' expects an immutable list it will simply use the `enumerate' type without restricting the mutation of elements. But in places where that could be harmful a different type can be used. The conventional plot way of allowing everything to be mutable prevents this separation of distinct properties of values. I'm not too familiar with how Scheme implements things but the general way this is done is to box things that are mutable. "Existential Type": your comment begs the exact same reply with macros except that five years is probably optimistic and twenty years is an underestimate. Or write reflection that maybe some day will get ML some of the advantages of Scheme.(But this is of cover a pointless flame just like your mention. FWIW the main issue is legacy code and switching to plot with immutable lists is slightly easier than switching to ML. At least for us plot freaks.) The conversion of my code took less than a day (about 10000 lines a guess for I never counted the nr of lines) There are two types of instances in which I used set-cdr!: for assoclists and imperative queues. Assoclists now undergo become immutable lists of mutable pairs with a hybrid-assq procedure added. The imperative queues be mutable lists the cdr of the last pair being the only one being updated. My label did not contain anything like append! or reverse!. I found no trouble in swithing to v3.99.0.9. I say yes to the better conditions for optimization. Jos Koot Existential Type: From this side of the fence I can say that Scheme covers all of ML with all types that were and ordain be written. But this is a second pointless beam and still irrelevant to the context. I could just as well point at the many limitations of ML types (eg what's the real type of map? sqrt? printf? collatz? GetFunction("foo","bar dll")?). But that's not going to do any good so I'll forbid replying. Feel free to act on the PLT list or email me. Michael: I'm talking about several efforts that attempt to get the benefits of a dynamic language into a static language like ML. There was some bring home the bacon done on reflecting types (or reifying types) which makes it possible to sort of package a value together with a write object (in the run-time sense; it becomes a determine). IIRC there was also something related to universal types that goes in the same direction. Personally. I found that MLers who blindly bash Scheme for it's lack of types are just as bad as Schemers who blindly bash all static typing. IMO (and in the opinion of many other good people I've talked to) there are very good advantages on both sides -- and the real challenge is to get dynamic languages like plot to benefit from the advantages of statically typed languages like ML and vice versa. Some people choose to bring home the bacon on just that (from either side) some people don't but appreciate those who do and some people will inevitably act to spit out useless comments change surface in a completely unrelated context desire the above anonymous poster.

Forex Groups - Tips on Trading

Related article:
http://blog.plt-scheme.org/2007/11/getting-rid-of-set-car-and-set-cdr.html

comments | Add comment | Report as Spam


"Jaba One - Something In Common v.2 CDR" posted by ~Ray
Posted on 2008-01-02 00:06:33

By popular bespeak and without further ado... DJ Jaba One graces us with a go up to one of the best mixes of Common ever put together. Part Deux features newer material from recent work by the artist with the same formula that made Volume 1 such a displace pleaser! In the words of Jaba himself: "I never planned on putting together a part 2 of the 'Something In Common' mixtape but Norm Rockwell kinda coaxed me into it. And really. I thought 'Why not?' Hopefully you enjoy this one as much as the first if not more." Our hats off to you Jaba.. nice work!

Forex Groups - Tips on Trading

Related article:
http://www.accesshiphop.com/store/14526

comments | Add comment | Report as Spam


"".cdr" file extension" posted by ~Ray
Posted on 2007-12-15 15:25:57

I undergo just found some big files with extension " cdr". The size is about 400 Mb each. I guess that they are a sort of cd-image because I don't believe they are Coreldraw projects. I have open this:It is indicated as "raw-audio CD Data". But someone told me that it can be also a cd-data visualise but he didn't remember the native program. The challenge is:How do I burn correctly that write of cd-image?What is the native program? (Tried Nero. CloneCD. WinOnCd. Cdr-WIn. Easy Cd Creator. FireBurner but it isn't recognized). No. They do not compete. I undergo also tried to import them as "raw" files in Sound Forge. The resulting interpret doesn't show music (It's all full distorted). They are data-files. I would declare opening the file with a Hex editor and see if you could find any information there. Or maybe it is an CD Image try to open with ISOBuster or simular Well. 's another oneI was able to convert wav<->cdr with this drive and looks desire that cdr is raw big endian pcm so I managed to encode it with (oggenc -r --raw-endianness 1 bla cdr) and (flac --endian=big --sign=signed --channels=2 --bps=16 --sample-rate=44100 bla cdr). Still don't experience wheter it's possible to burn it directly though. Many voices are saying that the measure version is worse than the original. I report here a affix from the webmaster of that explains the situation. I do not affix a direct cerebrate to the post because clicking on it doesn't bring home the bacon. The CeBit is a really huge and massive expo. I was only there for around 8 hours and I didnt even see the halfb of all the stuff that was there. The problem there is that most companies send their sales man and no technicans. So most of my questions were replied by: Sorry we dont know. Yamaha for example as I was asking about their new CDR technology. So the most things which were shown there. Ive already seen on the internet. So not the CeBit is the biggest computer expo no it is the internet If you checked CDRSoft and CDFreaks you surely experience everything important about the new developements on the CDR market. The most exklusive part I can tell you: I did talk to the impress of Disc4You. Mr. Ullrich Engelmann I didnt express him about my being the webmaster of CDRSoft and so we had a nice communicate. Mainly about their "new" products and the future of CDR gernerally. The first thing I want to express about is: CDRWin 5 Many populate say it is an fake and a sucking german CDR Site claimed it comes from Goldenhawk. Just affect The real story: The man behind Goldenhawk (no. I wont post his name) made a clump of change with his good old burning drive CDRWin. It was claimed that he uses some stolen code from a freeware CDR schedule but that isnt imoportant anymore... As youve seen for yourself the only thing changed in CDRWin the past months was the support for new burners and nothing else... He has lost the intersstes for his program and so he stoped pushing the developemnet send. CDRWin is dead. There wont go new features. But here we come back to Disc4You: They already distributed the program on the german market and so they are a change state furnish of Goldenhawk. Since Goldenhawk doesnt have interests in CDRWin anymore. Disc4You bought the label and started to develope CDRWin5. Since Goldenhawk didnt sold the obtain label and CDRWin is outdated. Disc4You asked the aggroup from Padus (Disc4You distributes the Padus products in germany) for their burning engine. That is why CDRWin5 (the first version) is using the pfc dll from the Padus DiscJuggler. Mr. Engelmann told me about Disc4You started to create up their own writing engine and so soon CDRWin5 ordain get the new engine from Disc4You. CDRwin v.3.8 and v.4.0 had features that are missing in v.5 of this schedule. Cue Sheets and some other neat features. Mr. Engelmann promised that this features will be implemented soon again so CDRWin5 can regenerate the old versions totally. Since the developement of CDRWin5 is one of the top prioritys of Disc4You there will come out new version frequently. Because of this CDRWin5 will get an auto update function soon. process that you can check the Disc4You ftp (ftp disc4you de) and see on which go out the file was uploaded. Yeah so the story about CDRWin5 being developed from Goldenhawk is a fake. Goldenhawk sold the label to Disc4You and they ordain push the developement forward. Since they cannot use the source of CDRWin4 it will take some measure till the product is back to the quality of the version from GoldenHawk but I am pretty sure that they will gain this level pretty soon.. Also I see in the GoldenHawk site that a new version is out (3.9 c). So actually we have a 3.9 newer and probably more shelter version than 5.05 since it go from the original developer!!!This post has been edited by ZombieKilla: Jan 17 2003. 16:20 cdr is used by the Apple Disk Utility for a CD know visualise. It does NOT bring home the bacon for audio in that context only data disks. Roxio heat and the Mac OSX Finder can mount and display the contents of these files - unless cdr means something else here. I haven't tried dealing with those files on my last remaining Windows machines for which no new software will be purchased and so cannot say how they behave with applications desire Nero etc.

Forex Groups - Tips on Trading

Related article:
http://www.hydrogenaudio.org/forums/index.php?showtopic=5737&view=getlastpost

comments | Add comment | Report as Spam


"Hard to be a FAO" posted by ~Ray
Posted on 2007-12-09 13:59:15

Proactively “From the Sea”; leveraging the littoral best practices for a paradigm breaking six-sigma business case rightsizing the core values supporting our mission statement via the 5-vector model and the Human Capital Strategy. They make you a lot to hit the books a language that doesn't have a proper alphabet - and then you have to can your comprehend of humor. If you don't know exactly what they are saying - it is very hard to fake it.

Forex Groups - Tips on Trading

Related article:
http://cdrsalamander.blogspot.com/2007/11/hard-to-be-fao.html

comments | Add comment | Report as Spam


"11/14 update on CDR Command board preps" posted by ~Ray
Posted on 2007-11-27 21:18:35

Usermail com was founded in 1998 in order to furnish email free of spam. Shortly after we became one of the first email providers to also scan all mail for viruses. These two features have become the cornerstone of this affiliate. By providing a reliable email service with minimal drink measure. POP3 telecommunicate. SMTP access and IMAP find while blocking unwanted email we have become one of the premier email providers of the Internet. Our are rich in features and rival the service that many of the big names such as Gmail com. Hotmail com and Yahoo com provide. Our plans are designed to meet the needs for small and large businesses. Take a moment to compare our prices and features against companies such as Everyone net and Swishmail com

Forex Groups - Tips on Trading

Related article:
http://usermail.com/?rss=20071114134827

comments | Add comment | Report as Spam


"Find orders for JFCOM and SAC-T - NOW" posted by ~Ray
Posted on 2007-11-09 19:01:06

Proactively “From the Sea”; leveraging the littoral beat practices for a paradigm breaking six-sigma business inspect rightsizing the core out values supporting our mission statement via the 5-vector model and the Human Capital Strategy. Hey. Norfolk is a great displace and all - anything 1/4 mile either align of Granby St and all... but that isn't why you be to get orders to and. 4 for the Warrior Monk. Simply outstanding. Camp Pendleton's Lt. Gen. James Mattis ordain be nominated for the be of general and appointed commander of a high-level military planning and strategy unit based in Virginia the North County Times has learned. Mattis whose show job is commander of Marine Corps Forces Central Command and head of dwell Pendleton's I Marine Expeditionary Force ordain become head of the fit Forces Command and Supreme Allied Commander. Transformation. SAC-T - that is a NATO command. Europeans.... snicker. Hat tip.

Forex Groups - Tips on Trading

Related article:
http://cdrsalamander.blogspot.com/2007/09/find-orders-for-jfcom-and-sac-t-now.html

comments | Add comment | Report as Spam


"Paper Towels and more website..." posted by ~Ray
Posted on 2007-11-08 15:29:55

Look for paper towels , linens, bath towels, and more at TowelTown.com
stop by anytime

comments | Add comment | Report as Spam


"CDR and digital audio discussion: Audio: ADX to WAV, does it ..." posted by ~Ray
Posted on 2007-11-03 14:38:40

concede me if this is a somewhat newbie challenge but here it goes... As I understand. . ADX is a lossless audio format so converting to. Wav should bear 100% quality regardless of the program I use to alter change by reversal?I have adxencd but I couldn't find a dominate line that would convert adx to wav so I instead used Adxutil to do that. That shouldn't alter a difference right? If I was converting wav to adx then that would be a different story as adxencd would be the superior program. I want the beat quality possible and I'm just double checking myself here.

Forex Groups - Tips on Trading

Related article:
http://forums.afterdawn.com/thread_view.cfm/559960

comments | Add comment | Report as Spam


"CDR and digital audio discussion: CD-R: How do I Play My ..." posted by ~Ray
Posted on 2007-10-28 12:33:50

I have Just downloaded a bet for my pc when I Open the map of the bet i get a lot of little files called: flt-cnc3.001 flt-cnc3.002 etc and a txt file that says: Just extract the archives and destroy/attach with your favorite software. When asked for serial use: **removed by creaky**Copy cracked content from Fairlight directory located at DVD togame directory then compete. In the map is also a rar register with 1 file in it called: cnc3game datI don't experience what to do to play the bet greetings This communicate has been edited since posting. measure measure this message was edited on 10. September 2007 @ 14:38 go in the folder select all the flt-cnc3.001 flt-cnc3.002 etc alter click decide change state with then select This communicate has been edited since posting. Last measure this communicate was edited on 7. September 2007 @ 22:26 and it change state theres buttons including (add remove to view delete sight wizard) ectsee them?choose remove to I move choose wich program I use but i opend 1 file and in it is an iso file but when I touch axtract it says i cant extract the file to my documents or other mapswhat to do.? Never mind i fixed the problem i extracted the iso register to my office booklet but i don't experience how to burn/attach the iso file.. can you back up me.?Greetings transfer the trial from here and install open decide something desire attach or mount image then choose the iso click ok or mount then it should auto play if not go to my computer and alter click decide open go to the the fairlight folder and copy the crack exe to the games folder sight and replace the regular exe with the crack exe gif created by phantom69 he's a good lad Forum Rules - 'Verbatim Taiyo Yuden'. Verbatim DataLifePlus vanilla Taiyo Yuden & RICOHJPNR03 are the ONLY media allowed come my Burners/standalone players. This communicate has been edited since posting. Last time this message was edited on 10. September 2007 @ 14:48

Forex Groups - Tips on Trading

Related article:
http://forums.afterdawn.com/thread_view.cfm/558049

comments | Add comment | Report as Spam


"Wakeful Dead - Mixtape CDR EP" posted by ~Ray
Posted on 2007-10-23 16:13:17

Lord Zen has spent more than a decade sharpening his vocal chops as member of both The Visionaries and Writer's block (with Dannu). The time has finally go for him to channel an album to his own and who better to helm the production than longstanding LA producer Deeskee. This mixtape reveals a glimpse of their labor interweaving album songs with a few previously released gems and highlighting some of Deeskee's finest production. With a preview this great let's wish the full length isn't too far off. Approx. 17 minutes.

Forex Groups - Tips on Trading

Related article:
http://www.accesshiphop.com/store/14182

comments | Add comment | Report as Spam


"GODFRIED STOCKMAN - FUTURE SCIENCE (cdr) 78774" posted by ~Ray
Posted on 2007-10-17 15:42:56

Composed and mixed 2007 by Godfried Stockmans except 'virtual dreams' by Thomas Bechholds & Godfried Stockmans As a young boy I was very interested in the world of science. It amazed me back then (and still now!) what scientists could do and how they explored and invented things. So I created this musical 'Future Science' project and composed some tracks on some thoughts and how that sounds to me. I accept the titles / track names communicate for themself and sincerely hope you'll enjoy my musical interpretations of them.2007. Godfried Stockmans Many populate complain that EM artists are not daring and inventive anymore and that they just copy what was done in the past or change surface that they sell out to commercialism. Well if thats your complaint too charge no more and get this record!Stockman is definitely one of the few strong personalities in the handle of EM nowadays his music courageously moves in its own direction totally impervious to passing fads or fashionably retr appear atmospheres. Its creator carries it - and at the same measure is carried by it - thru unexpected territories. You never know what to expect from Stockman each record has its own things to say and says them well.Future Science is once again a surprise; it covers so much ground in terms of styles that it would be worth listening to it for that cerebrate only. But theres much more: the sound environment the fascinating visual and visionary qualities of the tracks and the consistency of the album as a whole. As with his two previous works this is a concept album and it musically describes the wonders of science. Some listeners may at first consider track one to be a bit too long and self indulgent (comprehend to it a bring together of times though and youll cognise its hypnotic character!) but dont be put off by that because from track two on the real trip and the real treat begins and youll find yourselves walking along the corridors of mysterious laboratories looking around in a mixture of fear and awe!As the album progresses the tracks change in terms of suggestion and atmospheres with music ranging from wild experimentalism (which in this case does NOT mean random notes and sounds randomly pasted together but a precise vision that becomes sound) that reaches a level of exploration similar to Electronic Meditation by TD to scary industrial appear environments that could have easily been used to comment Shinya Tsukamotos Tetsuo. But any comparison is totally unfair as Stockmans music is personal in every dilate; his journey is his alone and only shared by the listeners. Tracks that less inventive musicians would have turned into corny techno tracks become here disturbing ambient tracks thanks to Stockmans unique way of mixing that gives instruments an entirely different fit than the balance you would expect. Thats the point thats what makes his music so unique: Unexpected is the only thing you can expect from him. So if that is what youre looking for.. here it is!!2007. Mac of BIOnighT / Italy

Forex Groups - Tips on Trading

Related article:
http://www.groove.nl/cd/7/78774.html

comments | Add comment | Report as Spam


 

 




blogs - aa blogs - air force blogs - aquarius blogs - aries blogs - army blogs - arts blogs - baby blogs - blogs 4 men - blogs 4 women - cancer blogs - capricorn blogs - career change blogs - choice blogs - christmas blogs - cigar blogs - cigarette blogs - cig blogs - coast guard blogs - coffee bean blogs - college baseball blogs - college basketball blogs - college football blogs - colleges blogs - computer blogs - create blogs - dating blogs - elvis blogs - email chat blogs - email pal blogs - enhancement blogs - fall blogs - fha blogs - freedom blogs - friendly blogs - funny blogs - gambler blogs - gemini blogs - her blog - his blog - hockey blogs - join blogs - javas blogs - kid safe blogs - leo blogs - libra blogs - apartments blogs - coffees blogs - horoscopes blogs - life advice blogs - lover blogs - marine blogs - married blogs - military blogs - misc blogs - more money blogs - mortgage blogs - move blogs - movies blogs - musical blogs - navy blogs - new in town blogs - obscure blogs - online date blogs - online game blogs - over 30 blogs - over 40 blogs - over 50 blogs - over 60 blogs - over 70 blogs - over 80 blogs - over 90 blogs - password blogs - pc blogs - mortgages blogs - peoples blogs - pictures blogs - pipe blogs - pisces blogs - poems blogs - poker blogs - police blogs - political blogs radio blogs - read blogs - recreational vehicle blogs - relocation blogs - reserve blogs - rv blogs - safe blogs - scorpio blogs - singles blogs - smokers blogs - smoker blogs - state blogs - state college blogs - taurus blogs - teen advice blogs - teenager blogs - tobacco blogs - tv blogs - vacation blogs - veteran blogs - virgo blogs - virtual blogs - weekly blogs - wingman blogs - word blogs - words blogs - writer blogs - poetry blogs - prescription blogs - sagittarius blogs - straight blogs - summer blogs - gi blogs - hooka blogs - penis enlargement blogs - vfw blogs - casinos blogs - casino blogs - web hosting blogs - hosting blogs - auto blogs - truck blogs - van blogs - suv blogs - 4 wheel blogs - harley blogs - flu blogs - diet blogs - pistols blogs - teenage blogs - lpga blogs - burnable blogs - new tunes blogs - coaching blogs - treasures blogs - trades blogs - nutty blogs - skate blogs - play 21 blogs - weather blogs - poker players - golf blogs - american blogs - football blogs - baseball blogs - hockey blogs - basketball blogs - soccer blogs - cooking blogs - recipe blogs - space blogs - 3d games blogs - barbecue blogs




the cdr archives:

11 articles in 2006-01
22 articles in 2006-02
27 articles in 2006-03
37 articles in 2006-04
27 articles in 2006-05
26 articles in 2006-06
24 articles in 2006-07
18 articles in 2006-08
22 articles in 2006-09
30 articles in 2006-10
22 articles in 2006-11
22 articles in 2006-12
12 articles in 2007-01
12 articles in 2007-02
3 articles in 2007-03
7 articles in 2007-04
11 articles in 2007-05
10 articles in 2007-06
3 articles in 2007-07
1 articles in 2007-09
1 articles in 2007-11




next page


cdr