[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-janitors] #1635: Include multiple times in a row 'interrupt
From: |
Chicken Trac |
Subject: |
Re: [Chicken-janitors] #1635: Include multiple times in a row 'interrupts' definitions |
Date: |
Wed, 24 Jul 2019 07:23:19 -0000 |
#1635: Include multiple times in a row 'interrupts' definitions
---------------------------------+---------------------
Reporter: dieggsy | Owner:
Type: defect | Status: new
Priority: minor | Milestone: someday
Component: expander | Version: 5.1.0
Resolution: | Keywords:
Estimated difficulty: hard |
---------------------------------+---------------------
Changes (by sjamaan):
* difficulty: => hard
* component: unknown => expander
Comment:
This won't be easy. The issue is that when `##sys#canonicalize-body`
encounters a `##core#include`, it will hand back to the compiler and
passes the remaining body along with it. The compiler then calls
`canonicalize-body/ln` (which is basically `##sys#canonicalize-body`) with
the forms from the file and the remaining ones appended. This extra call
is unaware of what came before and starts a new `letrec`.
See 0be9d247a57da082bb2126b2e91958ea191c5513, which made this work at all
(before, the include would be processed at toplevel, which is strictly
much worse than what we have now).
Changing this probably requires restructuring how the canonicalization
works (again). Maybe we'd have to introduce a new compiler form that
allows canonicalize-body to be run in two steps, or something like it.
--
Ticket URL: <https://bugs.call-cc.org/ticket/1635#comment:2>
CHICKEN Scheme <https://www.call-cc.org/>
CHICKEN Scheme is a compiler for the Scheme programming language.