[TS] Code generation error
The following derw code defines a lambda of type string -> string.
main: string -> string
main = \name -> `Hello ${name}`
Running derw compile on this results in the following output:
function main(_0: string): string {
return function(name: any) {
return `Hello ${name}`;
};
}
which declares that main is a string -> string but in reality, main: string -> any -> string as is evident from the code.
However, using the regular function notation like so
main: string -> string
main name = `Hello ${name}`
fixes the problem:
function main(name: string): string {
return `Hello ${name}`;
}
Thanks for trying Derw out! Lambdas are currently aren't type-checked, though I think fixing it for this specific case makes sense. It's possible to see if the value is a lambda, and if args are missing, they get passed on. Though I would say the general style of Derw is to be explicit with arguments rather than going down the point-free road, so there's also a case for just having it be a compile error to be missing an argument. I'll have a think about it!