So you add a fancy effect system to your functional programming language. Now it's all too easy to write everything in imperative style. And imperative style doesn't encourage good functional design.
Seems like jujutsu is good for stacked PRs where you mutate (rebase) your changes between these PRs. But I always felt like rebasing & force pushing is an anti pattern.
Announcing TypeNix: full typing for Nix, based on TypeScript.
The trick: map Nix AST -> TS AST: the typechecker never knows it's looking at Nix.
Types all 42K nixpkgs files, 13s locally. Fixed-point patterns (`makeExtensible`, etc.) typed.
Early PoC: https://t.co/4lXz8OxCJK
@typescript@grhmc@tweagio
My biggest grievances are:
- lack of declaration-site variance
- checked exceptions don't work well with lambdas
- lack of "withers" for records
- lack of pattern matching for literals/enums