You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We also need proper error messages, to start out we'd have to revamp the scanner so that we can pass line number and maybe column information to the parser
I've considered it don't think we should have variadic lambdas anymore. They're significantly slower than just having multiple functions unless we implement it as syntax sugar, which has other problems. Since we have a match expression already it also seems a bit excessive and doesn't work well with the let name = fn(args) => expr syntax
Inlining functions at preprocess time might be impossible since little is known about the functions called. However, it might be possible at runtime on a block by block basis
edit: alternatively, we could add an inline keyword
could also mark a function body as inlineable at definition time, and then actually in-line it at call time
it might be possible to make a non tail recursive function tail recursive via ast transformation to use an accumulator in simple cases or by adding a stack accumulator in more complicated ones
Activity
mkhan45 commentedon Oct 20, 2021
named/optional arguments seem unnecessary since we can just use a map as an argument with pattern matching, but maybe there could be some syntax sugar
mkhan45 commentedon Oct 21, 2021
We also need proper error messages, to start out we'd have to revamp the scanner so that we can pass line number and maybe column information to the parser
mkhan45 commentedon Oct 21, 2021
records/named tuples might also be unneeded with maps
mkhan45 commentedon Oct 23, 2021
I've considered it don't think we should have variadic lambdas anymore. They're significantly slower than just having multiple functions unless we implement it as syntax sugar, which has other problems. Since we have a match expression already it also seems a bit excessive and doesn't work well with the
let name = fn(args) => exprsyntaxWilliamRagstad commentedon Oct 25, 2021
We also want the interactive REPL to not crash when an error occurs, but keep the previous state.
mkhan45 commentedon Oct 25, 2021
I've made #22 for that
mkhan45 commentedon Nov 5, 2021
currying might cause hard to debug errors, since error reporting is pretty minimal right now
mkhan45 commentedon Nov 6, 2021
Inlining functions at preprocess time might be impossible since little is known about the functions called. However, it might be possible at runtime on a block by block basis
edit: alternatively, we could add an inline keyword
could also mark a function body as inlineable at definition time, and then actually in-line it at call time
mkhan45 commentedon Nov 6, 2021
it might be possible to make a non tail recursive function tail recursive via ast transformation to use an accumulator in simple cases or by adding a stack accumulator in more complicated ones
edit: https://en.wikipedia.org/wiki/Continuation-passing_style