[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-janitors] #1355: make define-record-type setters hygienic
From: |
Chicken Trac |
Subject: |
Re: [Chicken-janitors] #1355: make define-record-type setters hygienic |
Date: |
Wed, 22 Mar 2017 14:49:47 -0000 |
#1355: make define-record-type setters hygienic
-------------------------------------+-------------------------------------
Reporter: ashinn | Owner:
Type: defect | Status: new
Priority: major | Milestone: someday
Component: core | Version: 4.12.0
libraries | Keywords: define-record-type,
Resolution: | hygiene
Estimated difficulty: |
-------------------------------------+-------------------------------------
Comment (by ashinn):
Note debugging with `##core#syntax` shows the expansion is correct:
{{{
(begin151
(define-record-type152 stuff (make-stuff foo bar) stuff?
(foo stuff-foo %set148)
(bar stuff-bar %set150))
(define153 (stuff-foo-set! x154 v155)
(display156 "mutation is evil!\n")
(%set148 x154 v155))
(define153 (stuff-bar-set! x154 v155)
(display156 "mutation is evil!\n")
(%set150 x154 v155)))
}}}
Also, debugging the `define-record-type` macro show it's output also looks
correct:
{{{
(##core#begin
(define221 (make-stuff foo bar)
(##sys#make-structure (##core#quote stuff) foo bar))
(define221 (stuff? x223)
(##sys#structure? x223 (##core#quote stuff)))
(define221 stuff-foo
(##core#lambda (x223)
(##core#check (##sys#check-structure x223 (##core#quote stuff)
(##core#quote stuff-foo)))
(##sys#block-ref x223 1)))
(define221 %set212
(##core#lambda (x223 y224)
(##core#check (##sys#check-structure x223 (##core#quote stuff)
(##core#quote #f)))
(##sys#block-set! x223 1 y224)))
(define221 stuff-bar
(##core#lambda (x223)
(##core#check (##sys#check-structure x223 (##core#quote stuff)
(##core#quote stuff-bar)))
(##sys#block-ref x223 2)))
(define221 %set214
(##core#lambda (x223 y224)
(##core#check (##sys#check-structure x223 (##core#quote stuff)
(##core#quote #f)))
(##sys#block-set! x223 2 y224))))
}}}
however, it seems that hygiene is stripped from all defined identifiers,
so the renamed sets all revert to %set.
--
Ticket URL: <https://bugs.call-cc.org/ticket/1355#comment:2>
CHICKEN Scheme <https://www.call-cc.org/>
CHICKEN Scheme is a compiler for the Scheme programming language.
- [Chicken-janitors] #1355: make define-record-type setters hygienic, Chicken Trac, 2017/03/20
- Re: [Chicken-janitors] #1355: make define-record-type setters hygienic, Chicken Trac, 2017/03/20
- Re: [Chicken-janitors] #1355: make define-record-type setters hygienic,
Chicken Trac <=
- Re: [Chicken-janitors] #1355: define strips hygiene from defined identifiers (was: make define-record-type setters hygienic), Chicken Trac, 2017/03/22
- Re: [Chicken-janitors] #1355: define strips hygiene from defined identifiers at top-level (was: define strips hygiene from defined identifiers), Chicken Trac, 2017/03/22
- Re: [Chicken-janitors] #1355: define strips hygiene from defined identifiers at top-level, Chicken Trac, 2017/03/22
- Re: [Chicken-janitors] #1355: define strips hygiene from defined identifiers at top-level, Chicken Trac, 2017/03/22