Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion predicate

Path: g2news2.google.com!news3.google.com!feeder1.cambriumusenet.nl!feeder3.cambriumusenet.nl!feeder2.cambriumusenet.nl!feed.tweaknews.nl!193.201.147.87.MISMATCH!news.astraweb.com!border2.a.newsrouter.astraweb.com!hitnews.eu!feeder.news-service.com!de-l.enfer-du-nord.net!feeder1.enfer-du-nord.net!eternal-september.org!feeder.eternal-september.org!.POSTED!not-for-mail
From: Joshua Taylor <tay...@cs.rpi.edu>
Newsgroups: comp.lang.lisp
Subject: Re: predicate
Date: Wed, 09 Mar 2011 22:25:38 -0500
Organization: A noiseless patient Spider
Lines: 42
Message-ID: <il9gbk$927$1@news.eternal-september.org>
References: <ikgi82$fm8$1@news.eternal-september.org> <wkv4wrkkf77o.fsf@runa.se> <ikglak$c84$1@news.eternal-september.org> <d0bf0d60-469b-4713-8efc-b2b3f315b453@w7g2000pre.googlegroups.com> <barmar-7D65C8.20330628022011@news.eternal-september.org> <507fe5b2-46f5-4228-874d-76139ce72bed@o21g2000prh.googlegroups.com> <6r1pm6pvpp46l3tsah3opjhdk6hgsns66g@4ax.com> <87oc5vxtrj.fsf@kuiper.lan.informatimago.com> <ihfqm656rgiiu4hcqfv28jk771v773uru7@4ax.com> <87lj0yqcrq.fsf@mail.geddis.org> <gg7dn6lhvomv9au1f17t0er2ss2ts9e6tb@4ax.com> <a0dee7b1-d735-4dde-80f7-aad963a4e897@r19g2000prm.googlegroups.com> <8762rs74ze.fsf@mithlond.arda> <8574e7e1-7b97-4349-af23-f85a506f9f03@q40g2000prh.googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Injection-Date: Thu, 10 Mar 2011 03:25:40 +0000 (UTC)
Injection-Info: mx03.eternal-september.org; posting-host="iqFEUM8Hgu/C8GGuLzZX7Q";
	logging-data="9287"; mail-complaints-to="ab...@eternal-september.org";	posting-account="U2FsdGVkX18Gbrs1nrvNxUwGKwAkGJc4"
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2.13) Gecko/20101207 Thunderbird/3.1.7
In-Reply-To: <8574e7e1-7b97-4349-af23-f85a506f9f03@q40g2000prh.googlegroups.com>
Cancel-Lock: sha1:cRawhS+j2cNnAdvvOe5ahMNurHI=

On 2011.03.09 9:32 PM, TheFlyingDutchman wrote:
> Is there a way for a macro to handle the &optional parameter
> differently depending on if it is present or not? So that in the case
> of bif, it would generate only an "if then" if the else is not
> supplied, or generate "if then else" when else is supplied?
> 
> ie.
> 
> (bif (= 2 a) (dostuff))
> 
> would not generate code that has a bare "nil" sitting as one branch of
> an if/case/cond?

How about

(defmacro minimal-code-if (test-form
                           then-form
                           &optional
                           (else-form nil else-form-p))
  (if else-form-p
    `(if ,test-form ,then-form ,else-form)
    `(if ,test-form ,then-form)))

or

(defmacro minimal-code-if (test-form
                           then-form
                           &optional
                           (else-form nil else-form-p))
  `(if ,test-form ,then-form
     ,@(when else-form-p
         (list else-form))))

CL-USER> (macroexpand '(minimal-code-if x a b))
(IF X A B)
T

CL-USER> (macroexpand '(minimal-code-if x a))
(IF X A)
T

?