Opened 4 years ago
Closed 14 months ago
#1736 closed defect (fixed)
Incomplete SRFI-46/R7RS tail pattern support
Reported by: | Vasilij Schneidermann | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | 6.0.0 |
Component: | core libraries | Version: | 5.2.0 |
Keywords: | syntax-rules srfi-46 | Cc: | |
Estimated difficulty: |
Description
I've run into an expansion error when trying to install (chibi optional)
. It's using a tail pattern of the (binding ... . rest)
kind. SRFI-46 only shows one tail pattern example of the ((binding ...) . rest)
kind, but R7RS is explicit about allowing both:
⟨transformer spec⟩ −→ (syntax-rules (⟨identifier⟩*) ⟨syntax rule⟩*) | (syntax-rules ⟨identifier⟩ (⟨identifier⟩*) ⟨syntax rule⟩*) ⟨syntax rule⟩ −→ (⟨pattern⟩ ⟨template⟩) ⟨pattern⟩ −→ ⟨pattern identifier⟩ | ⟨underscore⟩ | (⟨pattern⟩*) | (⟨pattern⟩+ . ⟨pattern⟩) | (⟨pattern⟩* ⟨pattern⟩ ⟨ellipsis⟩ ⟨pattern⟩*) | (⟨pattern⟩* ⟨pattern⟩ ⟨ellipsis⟩ ⟨pattern⟩* . ⟨pattern⟩) | #(⟨pattern⟩*) | #(⟨pattern⟩* ⟨pattern⟩ ⟨ellipsis⟩ ⟨pattern⟩*) | ⟨pattern datum⟩
According to SRFI-46 alexpander does support both patterns just fine, the error message originates from synrules.scm. I've attached a file with simplified examples for both the working and not working pattern. I've also done a brief check across R7RS-compliant Scheme implementations, it seems that Cyclone doesn't support it either, while Chibi, Kawa, Gauche, Sagittarius and Foment do.
Attachments (1)
Change History (3)
Changed 4 years ago by
comment:1 Changed 14 months ago by
Milestone: | someday → 6.0.0 |
---|
comment:2 Changed 14 months ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
Should work now in C6