3 ms·
Many languages do this (type inference), to some extent. The moment you have any expression that can evaluate to more than one type, though, it requires annotat
by bastawhiz 9y ago
Many languages do this (type inference), to some extent. The moment you have any expression that can evaluate to more than one type, though, it requires annotations.
- hliyan 9y agoAre there any languages that do it beyond the first value assignment, or outside the current scope? Also, any languages that subsequently revise the type definition?
- tedmiston 9y agoNot sure if this is exactly what you're asking but one can reassign variables to change their types in Python: >>> x = 1 >>> type(x) <class 'int'> >>> x = 'foo' >>> type(x) <class 'str'>
- xapata 9y agoI believe the question was about inferred static typing for union types. Python does not do any static type inference. Also, I'm not sure how a union type could be distinguished from an error during type inference. Maybe a nullable, but otherwise it'd be very tricky.
- bitwalker 9y agoThat's not always true, rank-1 polymorphic functions (i.e. functions polymorphic in their argument) don't usually require type annotations. Higher-rank polymorphic functions though do generally require them, because without the annotations type inference is undecidable in the general case for such functions. For example: pair x y = (x, y) This function creates a pair for any two types, and doesn't require any annotations.