@amiloradovsky @otini I couldn't watch beyound the first example and goals.
They have all the same problems that static typing for JS has and there are already very good solutions like Flow which match ducktyping nature. But they want no annotations and to still accept ill typed code? What's the point then?
@charlag @amiloradovsky They do have annotations, and I think what Théophane meant is that type errors should not prevent from typechecking the rest or running the code.
I'm more disturbed by the enormous complexity of the type system, and that all the examples shown seem to be code that no one reasonable would want to write. I wonder if there couldn't be a simpler type system with the same objectives. But I really am illiterate in gradual typing.
@amiloradovsky I think the same problems would arise to typecheck package descriptions written in GNU Guile, no?
@otini Not quite. #Guix is splitting hairs much better, even despite #Guile #Scheme being also a dynamically-typed language.
Record types there, for example, have fixed set of fields with default values, AFAIK, so one cannot just put arbitrary stuff in there and expect it to pass through.
Actually, I'd say Guix already has some type-system, look at this for example:
There is definitely some static analysis going on.
@amiloradovsky If Guile has real record types with a fixed set of fields, that's probably better. I never quite understood where dynamic field labels where used in NIxpkgs.
@amiloradovsky I would try it but I also need some proprietary software for my laptop.
@otini If this is a user-land software, you can probably just create an expression for it, and build it with `guix build` then install.
If this is a kernel drivers, for example, then I'm not sure how difficult it would be: maybe just `insmod` would suffice, maybe not, IDK.
See e.g. Acknowledgments in
There is much more, I'm sure.
And I heard several times that the lack of non-free s/w in Guix is a problem for them.
• If this is something "mission-critical" (assuming businesses have a mission lol), you may not want to expose it to the whole world for audit, especially if it's really cheap (e.g. site's back-end).
• If this is a tooling, needing constant support and integration with the rest of the world, let's "open-source" it and make hordes of jobless amateurs do all the dirty work… Plus get the badge of "open-source company" as a bonus, good.
functional.cafe is an instance for people interested in functional programming and languages.