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

Only non-keyword symbols should be bindable #184

Closed
Tracked by #164
porcuquine opened this issue Nov 30, 2022 · 0 comments · Fixed by #254
Closed
Tracked by #164

Only non-keyword symbols should be bindable #184

porcuquine opened this issue Nov 30, 2022 · 0 comments · Fixed by #254
Labels
bug Something isn't working circuit Addressing this issue will affect the circuit.
Milestone

Comments

@porcuquine
Copy link
Collaborator

Lurk currently allows binding any form at all as the 'variable' on the left-hand-side of a binding in let or letrec.

However, only symbols are ever looked up when evaluating.

It should be an evaluation-time syntax error to perform these useless bindings. Allowing them is confusing, can mask actual errors, and also has a performance cost (in other lookups).

Some example of the behavior we should eliminate follow. All of these should be explicit errors.

Lurk REPL welcomes you.
> (let (((a b) 123)) 1)
[3 iterations] => 1
> (let ((:a 123)) :a)
[3 iterations] => :A
> (let ((9 123)) 9)
[3 iterations] => 9
@porcuquine porcuquine added bug Something isn't working circuit Addressing this issue will affect the circuit. labels Nov 30, 2022
@jpeg07 jpeg07 mentioned this issue Dec 9, 2022
9 tasks
@porcuquine porcuquine added this to the 1.0 Alpha milestone Jan 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working circuit Addressing this issue will affect the circuit.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant