Replacing the Type Checker

Going unidirectional would lose inference for lambda argument types, AIUI. So instead of:

[1, 2, 3].map { $0*2 }

you have to write:

[1,2,3].map { (x: Int) in x*2 }

You'd also lose the concise enum syntax. So instead of:

myFunc(.MyEnumCase)

you'd have to write:

myFunc(MyCoolEnum.MyEnumCase)

I'm definitely ok with losing the latter, but I'd have to do more research on the former. I'm going to try going through my code and spelling out the lambda arguments to see how bad it is.

More info here: "unable to type-check this expression in a resonable time" - #3 by audulus