<div dir="ltr">2008/10/6 Jeff Peng <span dir="ltr">&lt;<a href="mailto:jeffpeng@gmx.net">jeffpeng@gmx.net</a>&gt;</span><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>这个一定要顶。。。原来 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>