Skip to content

contracts on binding-operations that assert arguments are DSL syntax #78

@quasarbright

Description

@quasarbright

If you try to use binding operations on plain racket syntax, sometimes they work, and other times, they give the wrong answer, which can be a confusing user experience.

> (alpha-equivalent? #'(lambda (x) x) #'(lambda (x) x))
#t ; right
> (alpha-equivalent? #'(lambda (x) x) #'(lambda (y) y))
#f ; wrong
> (free-identifiers #'(x x))
'() ; wrong

I think it would be better to just error when the input is not DSL-expanded syntax

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions