Opened 10 years ago

Closed 8 years ago

#701 closed defect (wontfix)

require-extension has a hygiene problem

Reported by: Alaric Snell-Pym Owned by:
Priority: major Milestone:
Component: expander Version: 4.7.x
Keywords: Cc:
Estimated difficulty:

Description

It appears that require-extension doesn't work if you've locally rebound QUOTE:

alaric@ubuntu:~/personal/tmp$ cat test.scm 
(let ((quote 1))
     (require-extension aes))
alaric@ubuntu:~/personal/tmp$ csi -script test.scm

Error: unbound variable: aes

	Call history:

	<syntax>	  (let ((quote 1)) (require-extension aes))
	<syntax>	  (##core#let ((quote 1)) (require-extension aes))
	<syntax>	  (##core#begin (##core#require-extension (aes) #t))
	<syntax>	  (##core#require-extension (aes) #t)
	<syntax>	  (##core#begin (##core#begin (##core#begin (##sys#require (quote aes))) (import aes)) (##core#undefin......
	<syntax>	  (##core#begin (##core#begin (##sys#require (quote aes))) (import aes))
	<syntax>	  (##core#begin (##sys#require (quote aes)))
	<syntax>	  (##sys#require (quote aes))
	<syntax>	  (quote aes)
	<syntax>	  (import aes)
	<syntax>	  (import scheme chicken foreign extras)
	<syntax>	  (##core#undefined)
	<syntax>	  (##core#undefined)
	<syntax>	  (##core#undefined)
	<eval>	  (##sys#require (quote aes))
	<eval>	  (quote aes)	<--
alaric@ubuntu:~/personal/tmp$ csc test.scm
alaric@ubuntu:~/personal/tmp$ ./test 

Error: unbound variable: aes

	Call history:

	quote0	  	<--

Change History (5)

comment:1 Changed 10 years ago by Alaric Snell-Pym

FYI, I found this while trying to import only the identifiers I needed for something - see the annotation at http://paste.call-cc.org/paste?id=be84fd7f5049eee3f2bf3fa8a5f7efe936e49131#a1

comment:2 Changed 10 years ago by felix winkelmann

Yes, all expansions generated by ##sys#do-the-right-thing use an unrenamed quote.

comment:3 Changed 10 years ago by johnwcowan

It's really quote that has a hygiene problem, but Scheme is stuck with that for backward compatibility. In effect, quote, quasiquote, unquote, and splicing-unquote are absolute constants and should never be bound.

comment:4 Changed 10 years ago by felix winkelmann

Milestone: 4.8.0

comment:5 Changed 8 years ago by Christian Kellermann

Resolution: wontfix
Status: newclosed

Due to the lack of interest for this I am marking the bug as WONTFIX.

Note: See TracTickets for help on using tickets.