Hacker Newsnew | past | comments | ask | show | jobs | submit | foobar99's commentslogin

Bidirectional type checking is what makes Swift type checking exponential. Operators and literals just really jack up the numbers in the exponential function because they quickly lead to deeply nested expression trees with many choices on each nesting. So that's why they're the most commonly cited examples. They look very innocent and simple but aren't in Swift.

But you can absolutely construct slow expressions just with functions that are overloaded on both sides (i.e. parameters and return type). Generics and Closures also drive up the complexity a lot, though.


What would happen? The customer would know beforehand what is true, anyway.

Berlin Brandenburg Airport was estimated to be opened in October 2011, then 2012, and currently 2013. Costs were estimated with 630 million. The current estimate is 1.2 billion.

Not giving an estimate isn't the entire solution, either.

The problem with an airport is that every time a deadline arrives, all you can do is notice that you don't have an airport, yet. You must estimate again (and you're wrong again).

With software you can say: "We're going to give you a shippable version every week. You can cancel the project at any time and you keep what you've paid for so far. We can screw up completely and you still have last week's shippable product."

Personally, I'd love that pay-as-you-go approach for the rest of the world.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: