unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* Why not support (begin), (cond), (case-lambda), etc?
@ 2012-01-06  0:49 Mark H Weaver
  2012-01-06  3:37 ` Alex Shinn
                   ` (2 more replies)
  0 siblings, 3 replies; 29+ messages in thread
From: Mark H Weaver @ 2012-01-06  0:49 UTC (permalink / raw)
  To: guile-devel

Hello all,

I'd like to argue in favor of supporting (begin), (cond), (case-lambda)
and other such degenerate forms, for the same reason that we support
(*), (+), and (let () ...).

First of all: Is there any compelling reason not to support them?
I can't think of one.  Can you?  If so, please do tell.

Imagine if we didn't support (*) and (+).  Then you couldn't simply
write (apply + xs) to add a list of numbers; instead you'd have to write
(if (null? xs) 0 (apply + xs)).  In other words, they simplify
higher-order programming by freeing the user from handling degenerate
cases specially.

The same argument applies to (begin), (cond), and (case-lambda).  They
simplify writing robust syntax transformers without having to handle
degenerate cases specially.

Apart from this general argument, I can think of one particularly
compelling reason to support (begin).  Suppose you have a macro that
generates a sequence of local definitions.  How do you return an empty
sequence of definitions without terminating definition context?  The
only way I can think of is to generate a dummy definition with a gensym
name.  That's very ugly.  Why force users into such complications
needlessly?

     Mark



^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2012-05-08 14:42 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-06  0:49 Why not support (begin), (cond), (case-lambda), etc? Mark H Weaver
2012-01-06  3:37 ` Alex Shinn
2012-01-06  5:03   ` Mark H Weaver
2012-01-06  6:08     ` Alex Shinn
2012-01-06  8:03       ` Mark H Weaver
2012-01-06 12:08         ` Alex Shinn
2012-01-06 12:26           ` David Kastrup
2012-01-06 12:38             ` Alex Shinn
2012-01-06 12:50               ` David Kastrup
2012-01-06 12:52                 ` Alex Shinn
2012-01-06 13:02                   ` David Kastrup
2012-01-06 16:13                 ` Andy Wingo
2012-01-06 16:19                   ` David Kastrup
2012-01-06 17:23                     ` Andy Wingo
2012-01-06 17:11           ` Mark H Weaver
2012-05-01 14:10       ` Who moderates the scheme-reports list? Mark H Weaver
2012-05-05  5:09         ` Alex Shinn
2012-05-06  3:36           ` Mark H Weaver
2012-05-06  3:47             ` Alex Shinn
2012-05-06 10:12               ` David Kastrup
2012-05-07 16:26               ` Ludovic Courtès
2012-05-07 17:36                 ` Mark H Weaver
2012-05-07 22:06                 ` Alex Shinn
2012-05-08 14:42                   ` Ludovic Courtès
2012-01-06  9:48   ` Why not support (begin), (cond), (case-lambda), etc? David Kastrup
2012-01-06  9:46 ` David Kastrup
2012-01-06 16:48   ` Mark H Weaver
2012-01-06 17:02     ` David Kastrup
2012-01-06 16:53 ` Ian Price

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).