exoteric said:
Bass said:
*snip*

Not quite sure what you mean but this work impresses me

 

http://www.cse.unsw.edu.au/~dons/papers/CLS07.html 

This paper presents an automatic fusion system, stream fusion, based on equational transformations, that fuses a wider range of functions than existing short-cut fusion systems. In particular, stream fusion is able to fuse zips, left folds and functions over nested lists, including list comprehensions. A distinguishing feature of the stream fusion framework is its simplicity: by transforming list functions to expose their structure, intermediate values are eliminated by general purpose compiler optimisations.
We have reimplemented the entire Haskell standard list library on top of our framework, providing stream fusion for Haskell lists. By allowing a wider range of functions to fuse, we see an increase in the number of occurrences of fusion in typical Haskell programs. We present benchmarks documenting time and space improvements.

Vala is a language inspired by C# which does not allow null reference types without explictly idenitfying them as nullable.

 

eg:

 

string foo()
{
   return null;
}

   

 

won't compile

 

string? foo()
{
   return null;
}

   

 

would.

 

This will alert the caller on the possibility that function can return null, and thus the programmer can take the needed precautions.

 

C# could use similar syntax. Hopefully one day we can get rid of NullReferenceExceptions for good. They do not belong in an managed language IMO.