Fun post on the power and perils of Haskell partial functions: https://medium.com/position-development-blog/2-2-5-and-why-compiler-warnings-are-good-e50bc5cfab22
miniblog.
Related Posts
I'm not sure how I feel about languages with auto currying.
Upside: Partial application is easy.
Downside: It's common to miss a parameter when refactoring, and errors can be unclear.
Upside: You can be generic on functions: a -> b.
Downside: An a -> b isn't very useful.
Adding LLVM control flow integrity to make exploits harder is coming to Rust: https://rcvalle.com/docs/rust-cfi-design-doc.pdf
The primary use case is mixing C/C++ with Rust: you have weaker memory safety guarantees and hardening is still necessary. You don't want a partial Rust port to reduce security!
TypeScript has a really neat way of changing the required-ness of fields in objects.
Partial<Foo> is the same shape as Foo, but all the fields are optional. Required<Foo> is the same shape as foo but all the fields are required.