Metaprogramming for madmen https://fgiesen.wordpress.com/2012/04/08/metaprogramming-for-madmen/ (how .kkreiger used partial evaluation to get down to a 96K demo)
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.
