derw icon indicating copy to clipboard operation
derw copied to clipboard

[TS] Code generation error

Open sharpvik opened this issue 1 year ago • 1 comments

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}`;
}

sharpvik avatar Mar 03 '24 12:03 sharpvik

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!

eeue56 avatar Mar 08 '24 17:03 eeue56