<p>Using setelement is a bad idea, at least unless the tuples are very small: the cost in time and allocation is n^2.<br>
A better scaling approach is to use tuple_to_list + map + list_to_tuple; that should be linear, and my guess is that it'd be faster even for small tuple sizes.<br>
(For the actual n=4 case, I don't know which is better; must  measure...)<br>
/Erik</p>
<div class="gmail_quote">Den 09/07/2012 22.54 skrev "Lukas Larsson" <<a href="mailto:lukas@erlang-solutions.com">lukas@erlang-solutions.com</a>>:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Writing a generic tuple:map/2 would not be that hard either:<br>
<br>
map(F, Tuple) -><br>
   map(F, Tuple, size(Tuple)).<br>
<br>
map(F,Tuple,1) -><br>
   setelement(1,Tuple,F(element(1,Tuple)));<br>
map(F,Tuple,N) -><br>
   map(F,setelement(N,Tuple,F(element(N,Tuple))),N-1).<br>
<br>
It's not very pretty, or efficient, but it gets the job done.<br>
<br>
Lukas<br>
<br>
On Mon, Jul 9, 2012 at 9:59 PM, Daniel Goertzen<br>
<<a href="mailto:daniel.goertzen@gmail.com">daniel.goertzen@gmail.com</a>> wrote:<br>
><br>
> On Sun, Jul 8, 2012 at 1:22 AM, <<a href="mailto:ok@cs.otago.ac.nz">ok@cs.otago.ac.nz</a>> wrote:<br>
>><br>
>> I'm with /Joe on this one.  There aren't all _that_ many<br>
>> list operations that make sense on tuples, and<br>
>>     map4(F, {A,B,C,D}) -> {F(A), F(B), F(C), F(D)}.<br>
>> is easy enough to define.  Perhaps the code needs turning<br>
>> inside out.<br>
>><br>
><br>
> Thanks for the idea; my functional instincts are still developing.  I will<br>
> go with this approach since my sequence size really is only 4.<br>
><br>
> Dan.<br>
><br>
> _______________________________________________<br>
> erlang-questions mailing list<br>
> <a href="mailto:erlang-questions@erlang.org">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>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">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>