A lot of stuff deleted, not because it is uninteresting but just
because I don't really have a reply to it yet. We'll see when I get
there.<br><br><div><span class="gmail_quote">On 05/12/2007, <b class="gmail_sendername">YC</b> <<a href="mailto:yinso.chen@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">yinso.chen@gmail.com
</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br><div class="gmail_quote"><span>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div>As yours but quoted:<br><div>(case a<br>  ('foo #('bar))<br>  ('bar #('foo 'bar)))
<br></div><div></div></div></blockquote></span><div><br>The one I wrote was scheme's version.  It can match multiple bindings with one clause, but that can make it harder to transform into erlang. <br> </div><span>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<div><div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="gmail_quote"><div><div style="margin-left: 40px;">foo(1) -> 2; foo(abc) -> {foo, bar}. => (defun foo ((1) 2) ((abc) #(foo bar)))
</div></div></div></blockquote></div><div><br>I was more into:<br><br>(defun foo (arg)<br>  (case arg<br>    (1 2)<br>    (abc '#(foo bar)))) </div></div></blockquote></span><div><br>To me this is where the basic lisp language doesn't offer as much as erlang.  Ability to match on the function head is a very nice syntactic sugar - it *just* look better than case statements, especially with recursions. 
<br><br>In scheme with pattern matching lib (below is PLT scheme) one can write</div></div></blockquote><div><br>What I didn't explain, or show, properly here is that (case ... ) uses Erlang type matching. So<br><br>

    case foo(4) of<br>        {ok,Res} when is_integer(Res) -> {integer,Res};<br>        {ok,Res} -> {other,Res};<br>        {error,E} -> boom(E)<br>    end <br><br>becomes<br><br>    (case (foo 4)<br>      ((#('ok res) (when (integer? res)) #('integer res))
<br>      ((#('ok res) #('other res))<br>      ((#('error e) (boom 3)))<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<div class="gmail_quote"><span></span>Lastly - I think your idea is interesting and the above are my 2 cents of input to your goal, hopefully it helps more than it hurts :)</div></blockquote><div><br>No worries, I have no problems in stealing other peoples' good ideas.
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="gmail_quote"><div>p.s. did you see Mark Feely's scheme to erlang? It might provide some inspirations. 
<a href="http://www.erlang.org/pipermail/erlang-questions/2007-June/027057.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://www.erlang.org/pipermail/erlang-questions/2007-June/027057.html
</a></div></div></blockquote><div><br>Yes, I read it, but unfortunately from the point of view of the current discussion he ignores the interesting question of inter-module calls. :-)<br><br>Robert<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

</blockquote></div>