Actually I like it a lot better - it looks more like a normal "method definition" of signature followed by method body. Plus it looks better when you put the opening brace on it's own line.
I also fixed a grammar problem to allow method type literals:
Type f()
{
return |Int->Real|.type
}
brianThu 22 Jun 2006
Previously if you wanted to do a no arg closure you could use a double pipe:
verifyErr(Err.type) || { Int.parse("x") } // same as below
verifyErr(Err.type) |->Void| { Int.parse("x") }
I really disliked that, so now I allow you leave the braces off completely for no arg closures - but removed support for the double brace symbol. So now you write the above as:
verifyErr(Err.type) { Int.parse("x") }
andyThu 22 Jun 2006
Actually its a good thing you did that, because I saw that code in the test suite and thought you were doing some OR comparison somehow, and didn't really understand it. So this should clear up code as a side effect.
brianTue 27 Jun 2006
We gotta change the no arg closure syntax because just a {} is likely going to conflict with "with blocks". Alternatives:
brian Fri 10 Feb 2006
One of the things that has been bothering me about our closure syntax is that it doesn't jive well with how we do braces:
If we make the transition to change how we do braces, then we could do this:
Another option I've been thinking about is to move the |sig| outside of the braces:
What do you guys think?
andy Fri 10 Feb 2006
I think outside the sig makes more sense anyways, since that is how other methods are declared:
Also, that way, its consistent in both single and multi line styles - instead of using a different sytanx a la Ruby.
brian Fri 10 Feb 2006
Ok, I reworked the compiler and tests to use the |...| {...} syntax:
Actually I like it a lot better - it looks more like a normal "method definition" of signature followed by method body. Plus it looks better when you put the opening brace on it's own line.
I also fixed a grammar problem to allow method type literals:
brian Thu 22 Jun 2006
Previously if you wanted to do a no arg closure you could use a double pipe:
I really disliked that, so now I allow you leave the braces off completely for no arg closures - but removed support for the double brace symbol. So now you write the above as:
andy Thu 22 Jun 2006
Actually its a good thing you did that, because I saw that code in the test suite and thought you were doing some OR comparison somehow, and didn't really understand it. So this should clear up code as a side effect.
brian Tue 27 Jun 2006
We gotta change the no arg closure syntax because just a {} is likely going to conflict with "with blocks". Alternatives:
andy Tue 27 Jun 2006
I vote |,|
brian Tue 27 Jun 2006
Ok I changed the syntax for no arg closures to be |,| - examples:
If we change our mind or figure out later that we can use just braces, then at least that symbol will be easy to search and replace.