3 ms·
It looks pretty nice. I'm curious about how the code generation works and whether Clay has the potential to produce the kind of code bloat you sometimes see wit
by Chickencha 16y ago
It looks pretty nice. I'm curious about how the code generation works and whether Clay has the potential to produce the kind of code bloat you sometimes see with C++ templates. Say I have a function
min(a, b) {
if(a < b)
return a;
return b;
}
From what I understand, this function can accept two Int32s, or a Uint8 and a Float32, or basically any other combination of numeric types. Is a new function for each type combination generated? I don't think there's any way around this to some degree, but I'm curious if you've been able to do anything to ease the pain.
- kssreeram 16y agoYou can control type specialization to a certain extent with overloading. For instance, if a procedure takes two arguments, and if both these types can vary independently, then you can use overloading to ensure that both arguments are converted to a common type. procedure foo; [T1,T2] overload foo(a:T1, b:T2) { // by default, convert both arguments // to the type of first argument. foo(T1(a), T1(b)); } // the following overload specializes for the case // when both arguments are of the same type. [T] overload foo(a:T, b:T) { ... implement the logic here ... }