﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	difficulty
209	Chicken allows for shadowing syntax in a way disallowed by R5RS/sec.5.3	Jeronimo Pellegrini	felix winkelmann	"Hi,

With master/HEAD, (latest commit is 8acb3f92df82f369fc5dbef8f7c44a68468a92c3):

{{{
#;7> (define define (lambda () 'z))
#;8> define
#<procedure (define)>
#;9> (define)

Error: (car) during expansion of (define ...) - bad argument type: ()

    Call history:

    <syntax>        (define)    <-- 
#;9> (let ((a define)) (a))
z
#;10> 
}}}

But section 5.3 of R5RS explicitly disallows defining define among other things (it mentions ""(define define 3)"" as an example of error, and Chicken allows it).

This is not listed in the ""Deviations form the standard"" section of the manual, so it's not clear if it's a bug or an intended deviation.


P.S.: Bigloo does the same;
Chibi signals an error;
Guile shadows the define syntax even when it's in procedure-calling position: ""(define)"" above works in Guile and returns the symbol z!
"	task	closed	minor		expander	4.5.x	fixed		Alex Shinn	
