<div>That's not really pattern matching, it's just destructuring assignment. <span></span></div><div><br></div>On Friday, June 8, 2012, Tom Murphy  wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<p>Forgot the list:</p>
<div class="gmail_quote">---------- Forwarded message ----------<br>From: "Tom Murphy" <<a href="javascript:_e({}, 'cvml', 'amindfv@gmail.com');" target="_blank">amindfv@gmail.com</a>><br>
Date: Jun 8, 2012 9:31 PM<br>Subject: Re: [erlang-questions] More a comment that a question<br>
To: "Adam Rutkowski" <<a href="javascript:_e({}, 'cvml', 'adam.rutkowski@jtendo.com');" target="_blank">adam.rutkowski@jtendo.com</a>><br><br type="attribution"><p>Python has some basic pattern-matching, eg:</p>

<p>(a, b) = ("foo", "bar")</p><font color="#888888">
<p>Tom</p></font><div>
<div class="gmail_quote">On Jun 8, 2012 1:47 PM, "Adam Rutkowski" <<a href="javascript:_e({}, 'cvml', 'adam.rutkowski@jtendo.com');" target="_blank">adam.rutkowski@jtendo.com</a>> wrote:<br type="attribution">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
On Jun 8, 2012, at 7:37 PM, Eric Moritz wrote:<br>
<br>
> Where the danger comes in is mutating object, lists and dicts that other threads or functions have references to.  It is possible to have a reference to a dict in a module or up the call stack that gets changed in an unexpected way and things crash.  Erlang has made me a very paranoid Python developer.<br>



<br>
I let my Python code crash and I always regret it.<br>
Not to mention trivial indecisions like 'how should I deal with this without pattern matching?'.<br>
<br>
Thanks Erlang!<br>
<br>
><br>
> On Fri, Jun 8, 2012 at 1:21 PM, Bob Ippolito <<a href="javascript:_e({}, 'cvml', 'bob@redivi.com');" target="_blank">bob@redivi.com</a>> wrote:<br>
> On Fri, Jun 8, 2012 at 9:34 AM, Paul Barry <<a href="javascript:_e({}, 'cvml', 'paul.james.barry@gmail.com');" target="_blank">paul.james.barry@gmail.com</a>> wrote:<br>
><br>
> I've been coding/working with Erlang (and Chicago Boss) for a while<br>
> now, and I've recently had to do some work in Python.  I find myself<br>
> looking at some code I'm writing that looks like this:<br>
><br>
>   html = html + "some markup"<br>
><br>
> and getting nervous as I know this is a "naughty" that Erlang would<br>
> not let me away with.   If only there was a "make everything<br>
> immutable" switch for Python!  ;-)<br>
><br>
> Strictly speaking, there's no mutation at all here, because str in Python *are* immutable. What's happening is that the variable html is rebound to the result. This is roughly equivalent to something like this in Erlang [1]:<br>



><br>
>     HTML1 = <<HTML/binary, "some markup">>.<br>
><br>
> You really wouldn't want to have to write Python in single assignment form, especially without tail call optimization. Python IO would benefit from something like Erlang's iolist, but for use cases like the above people tend to append to a list and then join it with the empty string, or use an instance of cStringIO.StringIO.<br>



><br>
> [1] Some versions of CPython do have some hacks that can detect this x += s where x is a string with a reference count of 1 and strategically do these updates in-place with over-allocation... so it's possible that it's not quite as bad as you think it is (amortized).<br>



><br>
> -bob<br>
><br>
><br>
> _______________________________________________<br>
> erlang-questions mailing list<br>
> <a href="javascript:_e({}, 'cvml', 'erlang-questions@erlang.org');" target="_blank">erlang-questions@erlang.org</a><br>
> <a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
><br>
><br>
> _______________________________________________<br>
> erlang-questions mailing list<br>
> <a href="javascript:_e({}, 'cvml', 'erlang-questions@erlang.org');" target="_blank">erlang-questions@erlang.org</a><br>
> <a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br>
--<br>
AR<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="javascript:_e({}, 'cvml', 'erlang-questions@erlang.org');" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div>
</div></div>
</blockquote>