Am 20.12.2011 um 19:16 schrieb Niko Matsakis:

> Hi,
> 
> In preparation for the 0.1 release, Brian and I were thinking it might be 
> nice to try to address small, annoying problems that come up in everyday Rust 
> programming.  Of course, a lot of these are already the result of compromises 
> over contentious issues (e.g., trailing dot for nullary tag in a pattern), 
> but I'd still like to know what the set of annoying things are; some of them 
> may be easier to resolve now.  Can you please e-mail me your favorite pet 
> peeve(s).  Thanks.
> 

Hi, great idea!

First, hello on the mailing list, most of you probably have already seen me on 
irc.

So here's my list of scratches, surely not all of them are for 0.1:

1. I support being able to drop mandatory literal type specifiers on values 
that are within the range of their expected type

   Related: I'd like contributed source highlighting code for vim, emacs etc. 
to highlight all literal type specifiers
   (very long f32, f64 literal constants can be difficult to read otherwise, 
e.g. -XXXX.YYYYe-Zf32)

2. Some kind of match or fail or default statement/library utility function as 
suggested by elly would be nice.
   Would be volunteering to do it.

   Possible idea in this direction

   let pat = expr1 or expr2 or ... or { fail|ret|default value that statically 
is known to match pat }

   First match wins.  
 
   This is like an inverse of alt: instead of matching the same experession 
against different patterns
   this matches different expressions against the same pattern

3. Some way to deal with nullary tags in patterns. 

   The problem for a good syntax seems to be that we want to write patterns in 
the same way as regular code as much as possible.
   
   I feel for consistency it may be the better road to mark variables somehow, 
as pattern variables are actually a bit
   of a different construct than regular variables.  

   Alternatively, the established "constr." syntax should just do fine.

4. Lack of break, continue, and labels.  I know this is a big one but some 
loops are difficult to write without. Anything
   more than what is there today will be much apreciated.
 
   I hit this when writing bench/sudoku.rs which is a port from some Java code 
of mine.  Any code conversion to rust may
   suffer from lack of these features (same holds for C style for loops).  Also 
common in numeric code.

5. import/export
   
   - support for (at least trivial) type casting, i.e.

     import XY as TYP, export XY as TYP

     Rationale: Would help me drop a lot of wrapper functions in core::float 
and seems clearer to me than 
     the wrappers that are in place now.  Haven't looked into how hard it would 
be to do this.

   - syntax for exporting all or no constructor(s) of a tag, perhaps using a 
special export clause "export* tag")

6. Support for consts refering to other consts from the same crate (again, for 
math).

7. Some form of tail calls, please :)  

   I'v written up an idea around this in the wiki, please feel free to edit 
there.

8. a bit more documentation in the compiler on how things are supposed to work, 
especially the central data structures
   could use a few comments


So much for now,


Greetings,


Stefan
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to