4 ms·
The second link is relevant but only speaks to the performance of the language, which is something fixable in the implementation. Personally, I think the R lan
by hadley 14y ago
The second link is relevant but only speaks to the performance of the language, which is something fixable in the implementation. Personally, I think the R language is pretty nice, and well suited to its domain. It has first-class functions and first-class environments, and an object system inspired by common lisp and Dylan. While not homoiconic, it's pretty easy to compute on the language. Statistically, having support for missing values built in at a very low level is important.
But maybe you just don't like "dynamically typed" languages?
- Locke1689 14y agoPlease reread the paper. It contains many things about the language semantics, e.g. As for sharing, the semantics cleary demonstrates that R prevents sharing by performing copies at assignments. The R implementation uses copy-on-write to reduce the number of copies. With superassignment, environments can be used as shared mutable data structures. The way assignment into vectors preserves the pass-by-value semantics is rather unusual and, from personal experience, it is unclear if programmers understand the feature And no, I did my master's thesis in Racket. I'm fine with unityped languages, I just describe them properly.
- hadley 14y agoThat's a consequence of having first class environments - but given that it's rarely used, shouldn't a sufficiently intelligent compiler be able to optimise it away in the common case? I'm sure I read a paper along those lines, but I can't find it again. On a related note, have you read the riposte paper? http://www.justintalbot.com/wp-content/uploads/2012/10/pact080talbot.pdf http://www.justintalbot.com/wp-content/uploads/2012/10/pact0...
- Locke1689 14y ago"sufficiently intelligent compiler" ;) But seriously, every under-used feature harbors a ton of bugs in the compiler and drains resources for implementation. Promises, for example, seem like a "feature" in R that only really serves to destroy performance and no one uses it.
- hadley 14y agoAgreed, but it's hard to know in advance what features will be useful, and once a language is established, it's hard to remove less-used features without breaking existing code.