<div dir="ltr">活活,这个就和 bash 里的 brace expansion 一样:<br>--------<br><br>$ echo {a}-{b,c}-{d,e,f}-{a}<br><br>-------<br><br>确实是有趣的用法 :-)<br><br><br><div class="gmail_quote">2008/10/6 agentzh <span dir="ltr">&lt;<a href="mailto:agentzh@gmail.com">agentzh@gmail.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div dir="ltr">2008/10/6 Jeff Peng <span dir="ltr">&lt;<a href="mailto:jeffpeng@gmx.net" target="_blank">jeffpeng@gmx.net</a>&gt;</span><div class="Ih2E3d">
<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
例如,对这么一组数据:<br>
{a}-{b,c}-{d,e,f}-{a}<br>
每组里抽一个字母,写出所有组合(按顺序)。<br>
我想了下,自己用一堆的map{}也七七八八能搞定,但Randal用一行就搞定了:<br>
<br>
my @result = glob &quot;{a}-{b,c}-{d,e,f}-{a}&quot;;<br>
<br>
</blockquote></div><br></div>这个一定要顶。。。原来 glob 也能这么用。。。哈哈!<br><br>Haskell 里可以这么写:<br><br>&nbsp;&nbsp; [ Data.List.intersperse &#39;-&#39; [u,v,w,x] | u &lt;- &quot;a&quot;, v &lt;- &quot;bc&quot;, w &lt;- &quot;def&quot;, x &lt;- &quot;a&quot;]<br>

<br>GHCi 的输出是<br><br>&nbsp;&nbsp; [&quot;a-b-d-a&quot;,&quot;a-b-e-a&quot;,&quot;a-b-f-a&quot;,&quot;a-c-d-a&quot;,&quot;a-c-e-a&quot;,&quot;a-c-f-a&quot;]<br><br>在 Python, Erlang 等支持 list comprehension 的语言里都可以写成这样的,呵呵。可惜。。。Perl 里没有 list comprehension。。。glob 在这个例子中极好,只是对于更复杂的情形还不够一般,呵呵。<br>

<br>Thanks!<br>-agentzh<br></div>
<br>_______________________________________________<br>
China-pm mailing list<br>
<a href="mailto:China-pm@pm.org">China-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/china-pm" target="_blank">http://mail.pm.org/mailman/listinfo/china-pm</a><br></blockquote></div><br></div>