News for hackers. Stuff that matters.
Re:Why don't more languages offer flow typing? by munificent on Monday April 04, 2022 @04:53PM (#30911808)
Almost all of the languages I know that do "flow typing" (TypeScript, Flow, Hack), "smart casts" (Kotlin), or "type promotion" (Dart) are fairly statement-oriented.

Expression-based languages tend to have pattern matching which provides another way to solve the same problem.

Flow typing is most useful in imperative languages where code like this is common:

    if (foo is! Bar) return "not a Bar";
    foo.someBarMethod();
Early returns and other imperative control flow is idiomatic and it's annoying if the static type system doesn't understand it.

In a more functional or expression-oriented language, early returns and other imperative control flow like that is rarer, so there's less "flowing" to type over.

Re:Why don't more languages offer flow typing? by cannabis_sam on Tuesday April 05, 2022 @12:24AM (#30915284)
How does pattern matching solve the same problem?
Re:Why don't more languages offer flow typing? by munificent on Tuesday April 05, 2022 @01:06PM (#30921673)
It gives you a very nice notation for checking if a value has some type and, if so, binding a new variable that refers to it as that more specific type.
Re:Why don't more languages offer flow typing? by cannabis_sam on Tuesday April 05, 2022 @04:25PM (#30924534)
How does that solve the problem of statements being devoid of return information?

Also, what? Pattern matching differentiate between values of a single type, and while the assignment mechanism is a great nice-to-have, it still completely follows the basic type consistency that actually typed functions provide.

Statements have none of these qualities..

Re:Why don't more languages offer flow typing? by munificent on Tuesday April 05, 2022 @07:12PM (#30926351)
I'm sorry, but we seem to be talking past each other.

Why is it a problem that statements are "devoid of return information"? A statement occurs in a position where, by definition, no value it produces will be used.