This is the mail archive of the
guile@sourceware.cygnus.com
mailing list for the Guile project.
Re: why undefined return values?
- To: PILCH Hartmut <phm at a2e dot de>
- Subject: Re: why undefined return values?
- From: Mikael Djurfeldt <mdj at mdj dot nada dot kth dot se>
- Date: 20 Jan 2000 15:34:05 +0100
- Cc: guile at sourceware dot cygnus dot com
- Cc: djurfeldt at nada dot kth dot se
- References: <Pine.LNX.4.10.10001201606390.3257-100000@aliuC2.oas.a2e.de>
PILCH Hartmut <phm@a2e.de> writes:
> Having read r4rs and scsh-manual.ps and started to write scheme programs,
> I am desperately looking for something like (setq a 1) that will return
> the value. (set! a 1) is quite useless in most programming contexts that
> I am used to think in, coming from (Common and Emacs) Lisp.
>
> I can't see any design advantage in providing unspecified return values
> and I expected to find a heated debate on this in some FAQ, but I didn't.
> Scheme is said to be functional, but it looks rather procedureal, often
> returning undefined or useless values, like C.
>
> Should I go back to Lisp and not bother with Scheme any longer, or could
> there possibly be some good reasoning behind this?
I'm not aware of the precise reasoning, but it seems to me that the
idea of the language construct (set! VAR VAL) is to alter the value of
VAR. It doesn't seem to be a good idea to add further functionality
to this construct since that mixes concepts.
Also, while Scheme is mostly functional, it also supports imperative
programming, through set!, set-car! and set-cdr!.
It is a good idea to try to avoid these altogether. It's likely that
such operations won't be as efficient as purely functional code in
future Scheme compilers and interpreters.