Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Future improvements #20

Open
eric-unc opened this issue Mar 22, 2021 · 0 comments
Open

Future improvements #20

eric-unc opened this issue Mar 22, 2021 · 0 comments

Comments

@eric-unc
Copy link
Owner

We want bindings/variables, obviously (see #19). Another is the ability to define new procedures. This will require a procedure value. I am thinking that a new procedure could be defined like...

(define times-two (function (n) 2*n))

(Related to #19, I prefer define as a keyword, which is what I'm used to in Racket. It would be good to set as a separate keyword, so there is a separation between declaration/initialization and changing of values, like := v. = in Go)

Furthermore, all procedures in Limp should be defined as procedures in the environment, including (especially) built-in ones. But, there should be room for some distinction between procedures defined purely in Limp and ones that rely on "native" (Rust) code. Because obviously there has to be some base of things defined in Rust, just like there is for say, Ruby. For this, some kind of native interface would be useful. And there needs to be a way to define native-based procedures as individual modules, instead of putting them all in one giant switch statement.

Needless to say, figuring out how to implement all of this is rather complicated, and could be subject to a future hackathon/project. Some research is required.

(Other potential future features: strings, arrays, maps.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant