[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

where define is legal



   Date: 20 Apr 89 15:54:43 EDT (Thu)
   From: alms@spt.entity.com (andrew lm shalit)

   (define (foo bool)
     (if bool
	 (define (result) #true)
	 (define (result) #false))
     (result))

   When I try to run this in MacScheme, I get an error message.

   I agree with the semantics, but I couldn't find anything in the R3
   description of DEFINE which restricts where it may appear.

There is nothing in section 5 that could allow one to deduce that
definitions are permitted anywhere other than at top level or at the
beginning of a lambda, let, etc. body.  And the expression you have
written isn't generated by the grammar of section 7.1, since (define
...) is never an <expression>.

Some implementations do permit DEFINE forms in other places, but those
implementations are extending the language.