3 ms·
Another thing that TS does nicely is object handling in general: dot access for objects attributes, object destructuring, typed objects for function options. In
by saiojd 3y ago
Another thing that TS does nicely is object handling in general: dot access for objects attributes, object destructuring, typed objects for function options. In most ML projects I see a bunch of functions that look like:
def my_fn(x, **kwargs):
...
return y_1, y_2, y_3
Which is a pain because kwargs could be anything really + now every call site has to expect 3 return values exactly while knowing their order; there's no way of adding an extra return value without changing everyone. In typescript the same function could look like:
function myFn(x, options = { someOption: 1 }) {
...
return { y_1, y_2, y_3 };
}
Which is so much nicer because everything is typed with all types inferred automatically! And you don't burden the call sites with values they don't need:
const { y_1 } = myFn(x, { someOption: 1 });
In Python, everyone mostly passes unbundled arguments through every function, and changing anything involves threading these untyped arguments through a bunch of untyped call sites, its not the end of the world but we can do better...
- int_19h 3y agoPython also has pattern matching on dicts and typed kwargs these days. It seems that the only thing missing is syntactic sugar for unconditional destructuring.
- saiojd 3y agoYes! It's getting close, but we are still far from things being convenient and widely adopted
- praeclarum 3y agoI’m of the same opinion. While I think I will keep the standard parameter order from torch, I will include the options overload to give all the benefits you describe.
- saiojd 3y agoAwesome :D Really nice project by the way