Skip to content

Instantly share code, notes, and snippets.

@Porges
Last active August 29, 2015 13:57
Show Gist options
  • Select an option

  • Save Porges/9654760 to your computer and use it in GitHub Desktop.

Select an option

Save Porges/9654760 to your computer and use it in GitHub Desktop.
some syntactical ideas for C#
class Example
{
// "init-anywhere" syntax (along the lines of Haskell)
Foo Do()
{
var x = new Foo { bar = 1 }; // <- currently available
return x { bar = 3 }; // <- proposed (note that this mutates unlike Haskell)
}
Foo Also()
{
var x = new Foo { bar = 1 };
// this could be used akin to VB 'with' ;)
x {
bar = 2,
baz = 3,
};
return x;
}
// And for Java-parity:
// - reuse keyword 'where' to do anonymous inner classes (it's needed to disambig)
public void YEAH()
{
var x = new Foo { bar = 1 }
where
{
public override string ToString()
{
Console.WriteLine("HAHA!");
}
};
return x;
}
// without 'where' there'd some some ambiguity when parsing collection initializers
List<int> DisambigRequired()
{
// also, methods should default to "public" inside wheres
// not private!
return new List<int> where { int Length { return Count; } }
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment