Hello,<br><br>I thought that the whole purpose of <i><span style="font-family: courier new,monospace;">switch</span></i> was to compare some value to the result of evaluated forms. I don't think it is nice to impose a restriction that avoid using evaluated variables and forms, and I didn't quite understand why it should.<br>
<br>As for allow either an atom or a list of forms, I don't like it very much, but it should be more or less ok. Some particular cases should be analyzed first, though, like<br><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">(switch (something)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;"> ('some-symbol ...)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> (*some-variable* ...)<br> ...)</span><br><br>It could lead to a wrong interpretation unless you explicitly test if the first symbol of your list is <i style="font-family: courier new,monospace;">quote</i>. Another solution is to require the user to write more parenthesis<br>
<br><span style="font-family: courier new,monospace;">(switch (something)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> (('some-symbol) ...)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> (*some-variable*
...)<br>
...)</span><br><br>An alternative to avoid this and other problems (e.g. excessive parenthesis) is to allow the use of some key, like:<br><br><span style="font-family: courier new,monospace;">(switch (something)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> ((:any value1 value2 ...) ...)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> ((car some-list)
...)<br>
...)</span><br><br><font face="arial,helvetica,sans-serif">In my opinion, this would be much better. Using the key <i style="font-family: courier new,monospace;">:member</i> </font>instead of <i style="font-family: courier new,monospace;">:any</i> would be a good option too.<br>
<br>Cheers,<br><br>Gustavo.<br>