4 ms·
This is also how Swift implements it support for optional. So far I don’t see a difference in expressive power between the two languages. A user never has to ac
by flipgimble 8y ago
This is also how Swift implements it support for optional. So far I don’t see a difference in expressive power between the two languages. A user never has to actually type out Optional, when adding ? is enough. Swift also has optional chaining and nil coalescing operators as syntactic sugar. Under the hood there is still an Optional type for the type checker to work with.
I think this is becoming a trend in modern language design. However as this comments section demonstrates it’s hard to understand its benefits or why it’s an important improvement, if your only experience is from C/C++/C#/Java etc
- RX14 8y agoDoes swift have flow typing? The expressive power of sum types with nil is only exposed with flow typing. Also I don't think swift supports arbitrary sum types it just has a "fake" sum type syntax that only works with null. In crystal you can have an `Int32 | String` just the same as you can have an Int32?
- Zarel 8y agoSwift doesn't have flow typing, unfortunately. It has a few constructs, like `guard let` and `if let`, which let you unwrap optionals in a somewhat nicer way than other languages and are sort of similar to one aspect of flow typing.
- Veedrac 8y agoYou mean "union type" where you say "sum type". AFAICT Swift does support sum types.
- RX14 8y agoyeah in crystal we call them union types. We don't have sum types so I'm not really certain on the difference. I should have stuck to terminology I know.
- AnimalMuppet 8y agoI've seen this come up a couple of times in this discussion, so ELI5: What is "type flowing"?
- RX14 8y agoFlow typing is where the type of a variable changes based on control flow. Consider: x : Int32 | String if x.is_a? Int32 # typeof(x) == Int32 else # typeof(x) == String end
- AnimalMuppet 8y agoThanks!
- Veedrac 8y agoSwift has sum types, not union types.