On Dec 12, 2012, at 10:29 AM, Matthias Felleisen wrote:

> In Racket, Scheme, and Lisp, parentheses are NOT optional, they are 
> meaningful. Everyone counts.

In specific, one of the things parentheses often mean is that the first thing 
inside the parentheses is a function to be applied to the remaining things.

In your example, 
... (begin ((print a) (loop (+ 1 a))))
you're basically asking Scheme to use the result of (print a) as a function 
which it can then apply to the result of (loop (+ 1 a)).  Since (print a) 
doesn't return any result at all, it certainly doesn't return a function that 
can be called on something else.

What you're running into is a common problem for students moving from high 
school algebra to Lisp/Scheme/Racket: in high school algebra, MISSING 
parentheses can sometimes give you wrong answers due to order-of-operations 
errors, but EXTRA parentheses can never hurt.  In Lisp/Scheme/Racket, either 
one can hurt.

Stephen Bloch
sbl...@adelphi.edu


____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to