, takes an expression and puts it in directly<div><br></div><div>`(something ,(list 1 2 3) else) ===&gt; &#39;(something (1 2 3) else)</div><div><br></div><div>,@ takes an expression that evaluates to a list and &quot;splices&quot; it in place</div>
<div><br></div><div>`(something ,@(list 1 2 3) else) ===&gt; &#39;(something 1 2 3 else)</div><div><br></div><div>I typically do something like</div><div><br></div><div>`(something ,@(if condition (list answer) empty) else)</div>
<div><br></div><div>and even may make a macro out of it</div><div><br></div><div>(define-syntax-rule (when-xexpr cond expr)</div><div> (if cond (list expr) empty))</div><div><br></div><div>Jay<br><br><div class="gmail_quote">
On Fri, Dec 9, 2011 at 11:12 PM, Jordan Schatz <span dir="ltr">&lt;<a href="mailto:jordan@noionlabs.com">jordan@noionlabs.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
I think thats there must be a &quot;lisp&quot; way of doing this, but I&#39;m still too<br>
new to see how. Anyone care to enlighten me?<br>
<br>
I&#39;m trying to create a function that produces an xexpr:<br>
<br>
(define (custom-input name<br>
                      #:class [class &quot;xlarge&quot;]<br>
                      #:id [id #f]<br>
                      #:size [size 30]<br>
                      #:type [type &quot;text&quot;]<br>
                      #:placeholder [placeholder #f]<br>
                      #:autofocus [autofocus #f]<br>
                      #:label [label #f])<br>
  `(div ((class &quot;clearfix&quot;))<br>
        ,(if label<br>
           `(label ((for ,name)) ,name)<br>
           &#39;())<br>
        (div ((class &quot;input&quot;))<br>
             (input ((name ,name) (class ,class)<br>
                     (size ,(number-&gt;string size)) (type ,type)<br>
                     ,(if id<br>
                          `(id ,id)<br>
                          `(id ,name))<br>
                     ,(when placeholder<br>
                        `(placeholder ,placeholder))<br>
                     ,(when autofocus<br>
                          &#39;(autofocus &quot;autofocus&quot;)))))))<br>
<br>
But using &quot;when&quot; produces #&lt;void&gt; like so:<br>
<br>
(validate-xexpr<br>
 (custom-input &quot;Company&quot;<br>
               #:label #t<br>
               #:placeholder &quot;Your company name (optional)&quot;))<br>
<br>
 &gt; Expected a symbol as the element name, given (name &quot;Company&quot;)<br>
<br>
Substituting an<br>
(if condition<br>
    then-branch<br>
    empty)<br>
for the &quot;when&quot; also produces an invalid xexpr, though I&#39;d rather not use<br>
if and have an else branch unless I really wanted it to be there.<br>
<br>
Thanks,<br>
Jordan<br>
<br>
<br>
<br>
<br>
_________________________________________________<br>
  For list-related administrative tasks:<br>
  <a href="http://lists.racket-lang.org/listinfo/users" target="_blank">http://lists.racket-lang.org/listinfo/users</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Jay McCarthy &lt;<a href="mailto:jay@cs.byu.edu" target="_blank">jay@cs.byu.edu</a>&gt;<br>Assistant Professor / Brigham Young University<br><a href="http://faculty.cs.byu.edu/~jay" target="_blank">http://faculty.cs.byu.edu/~jay</a><br>
<br>&quot;The glory of God is Intelligence&quot; - D&amp;C 93<br>
</div>