Linter for R6RS/R7RS small program semantics #202
Labels
No labels
Batteries
Cleanup
Consent Docket
Environments
Foundations
Macrological Fascicle
Meta
Multiple proposals exist
Pie-in-the-sky ideas
Problems without solutions
Public Comment
Publications
Question
R6RS Compatibility
Resolution in draft
Specification exists
SRFI/RnRS spec exists
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: scheme/r7rs#202
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
While explaining the problem with R6RS/R7RS small top-level program semantics to my fiancé he suggested that it would be possible to suggest to implementations to support a linter mode where they warn about programs which use semantics which are incompatible between the two versions. This would let people check that their programs will work both as R6-style programs (probably to be called ‘top level programs’ in R7 large) and as R7-style programs (probably to be called ‘interactive mode scripts’ in R7 large).
This is a nice idea because, while such a checker would have to be integrated with an implementation’s macro expander and thus be non-portable, when used for its intended purpose (to check portable programs) it can check a program from the implementation it’s written for, and the programmer can then know the program will have consistent semantics on all implementations (provided the program uses no other undefined, unspecified, or implementation-defined behaviour).
Such a linter can check:
define-library
and .slslibrary
form are used, and that only lexical syntax compatible with both languages is used (ignoring the strict requirement to use#!r6rs
, which R7-small implementations will reject)