1. Re; Features
- Posted by David Cuny <dcuny at LANSET.COM> Sep 08, 1998
- 397 views
Einar Mogen suggested: >Now, when we are allready into things to add to Euphoria, I would like to >repeat two suggestions that I particulary like: > >1. Variable assignment on declarations: > >integer c = 0, x, y, b = 1 Yes! >2. Function return values to multiple variables: > >{x, y, z} = GetPos() Yes! [Dot Notation] Ralf suggested an alternate character for dot notation, such as '~' or ','. I'm flattered that he likes the idea, but I feel his suggestions come with too much semantic overhead. The '~' (tilde) has a couple of disadvantages - it represents a logical not in some languages, and a destructor in C++. Even worse, it requires a *shift* key on American keyboards. The trauma to my fingers at having to stretch that distance would be immeasurable. The ',' (comma) is already used as a delimiter in Euphoria. To make a symbol to double duty is just askig for trouble. The dot, on the other hand, is used in other languages for the very purpose I suggest (VisualBasic, not C++, served as the inspiration). It requires no shift key, and is conveniently placed. The emotional baggage it carries from those "other" languages means more less of a learning curve for coders. The biggest disadvantages to using the dot is (1) is it small, and sometimes difficult to see, and (2) it is a strong contender for the oft-requested type-checking element feature, such as: deck[1].suit = HEARTS for what is currently: deck[1][SUIT] = HEARTS But Robert has already voiced the unliklihood of adding such a feature to Euphoria. In any event, you can use the dot notation to implement type-save assignment of elements:: deck[1].setSuit(HEARTS) I should point out that my proposed syntax *can* be a bit confusing. If there is no assignment to a function, it is assumed that assignment is to the data. For example: b.append("x" ) is read as an implicit assignment: b = append( b, "x" ) because the value is not used, while a = b.append("x") if b.append("x") then convert to: a = append( b, "x" ) if append( b, "x" ) then because their values are explicitly assigned. I had considered alternative notations to make the assignment explicit, such as: self = append( b, "x" ) @ = append( b, "x" ) = append( b, "x" ) == append( b, "x" ) => append( b, "x" ) >> append( b, "x" ) but they all seemed awkward, while the more "magical" implicit syntax seemed very natural. Again, I suggest that people actually try syntax out - the DOT pre-processor actually does work. I don't think I've gotten any feedback from anyone who's actually tried to code using it (strongly hinting there is little interest). -- David Cuny