<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Hi!</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Your question looks like a typical X-Y problem, as described in: <a href="http://xyproblem.info/" style="font-family:Arial,Helvetica,sans-serif">http://xyproblem.info/</a></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">FWIW, your particular problem can be solved with list comprehensions, but require a helper function, as Oliver described:</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div>clamp_length({length, V}) when V > 255 -> {length, 255};<br>clamp_length(Otherwise) -> Otherwise.<br><br>t() -><br>    T = [{a,1}, {length,24568}, {b,2}, {c,3}, {length, 54741}],<br>    [clamp_length(X) || X <- T].<br></div><div dir="ltr"><br></div><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">But I'm guessing this is not a good solution to your real problem. Chances are you are better off breaking your long list into smaller parts first, then process each subpart on its own. Generally, the structure of the data should be followed by your recursive descent, as you are really writing a parser here. As you get more special cases, one large function pattern match isn't going to cut it. If you split it up, it gets much easier to handle and the code will also become more readable if you think a bit about the naming of the functions.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">So in short: what are you *really* trying to do?</div><br></div><div dir="ltr"><br></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jul 19, 2020 at 12:55 PM Papa Tana <<a href="mailto:papa.tana101@gmail.com">papa.tana101@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I had to do it like below:<br>
<br>
T = [{a,1}, {length,24568}, {b,2}, {c,3}, {length, 54741}].<br>
<br>
WithoutLength = [ {Tag, Value} || {Tag, Value} <-T, Tag/= length].<br>
HowManyLength = length([ {Tag, Value} || {Tag, Value} <-T, Tag== length]).<br>
Extra = lists:duplicate(HowManyLength, {length, 255}).<br>
<br>
>NewT = [WithoutLength | Extra ].<br>
[[{a,1},{b,2},{c,3}],{length,255},{length,255}]<br>
<br>
Not really the expected result, yes all values of tag length are<br>
replaced, but not in the right order.<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature">J.</div></div>