<div dir="ltr">Hi,<div><br><div>I think your interpretation of <font face="monospace">(replicate (n-1) tail)</font> is wrong. First note that <font face="monospace">tail</font> is not applied to anything, is just the function <font face="monospace">tail</font>.</div><div>So <font face="monospace">replicate (n-1) tail</font> is <font face="monospace">[tail, tail, tail, .... , tail]</font>. For example</div><div><font face="monospace">replicate 3 tail = [tail, tail, tail]</font></div><div>Note that if you try to compute this in Haskell it won't be able to show that result, because there is no "show" defined for something that has the type of a list of functions. </div></div><div><br></div><div>Having said this, your example can now be written</div><div><font face="monospace">elementAt [1,2] 2 = </font></div><div><font face="monospace">= head (foldr ($) [1,2] (replicate 1 tail))</font></div><div><font face="monospace">= head (foldr ($) [1,2] [tail])</font></div><div><font face="monospace">= head (tail $ (foldr ($) [1,2] []))</font></div><div><font face="monospace">= head (tail $ [1,2])</font></div><div><font face="monospace">= head (tail ([1,2])) = head [2] = 2</font></div><div><br></div><div>For a more general example you can try </div><div><br></div><div><div><font face="monospace">elementAt [1,2,3,4] 3 = </font></div><div><font face="monospace">= head (foldr ($) [1,2,3,4] (replicate 2 tail))</font></div><div><font face="monospace">= head (foldr ($) [1,2,3,4] [tail,tail])</font></div><div><font face="monospace">= head (tail $ (foldr ($) [1,2,3,4] [tail]))</font></div><div><font face="monospace">= head (tail $ tail $ [1,2,3,4]) </font></div><div><span style="font-family:monospace">= head (tail (tail [1,2,3,4)))</span></div><div><font face="monospace">= head (tail [2,3,4]) = head [3,4] = 3</font></div></div><div><br></div><div>Cheers,</div><div>Ut <br></div></div><div id="DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2"><br> <table style="border-top:1px solid #d3d4de">
        <tr>
      <td style="width:55px;padding-top:18px"><a href="http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail" target="_blank"><img src="https://ipmcdn.avast.com/images/icons/icon-envelope-tick-green-avg-v1.png" alt="" width="46" height="29" style="width: 46px; height: 29px;"></a></td>
                <td style="width:470px;padding-top:17px;color:#41424e;font-size:13px;font-family:Arial,Helvetica,sans-serif;line-height:18px">Mail priva di virus. <a href="http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail" target="_blank" style="color:#4453ea">www.avg.com</a>                 </td>
        </tr>
</table>
<a href="#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2" width="1" height="1"></a></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno gio 14 gen 2021 alle ore 07:25 Lawrence Bottorff <<a href="mailto:borgauf@gmail.com">borgauf@gmail.com</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">With <a href="https://wiki.haskell.org/99_questions/Solutions/3" target="_blank">99 questions</a> Problem 3 wants a function elementAt that will take a list and an index and return the element for that index. One very odd version in the solutions is<div><br></div><div>elementAt xs n = head $ foldr ($) xs $ replicate (n - 1) tail<br></div><div><br></div><div>So the function "passed" is ($) and the accumulator "seed" is the incoming list xs and the list to be worked on is (replicate (n-1) tail) which . . . and I can't fathom what's happening -- other than perhaps (replicate (n-1) (tail xs))</div><div><br></div><div>elementAt [1,2] 2 would be </div><div><br></div><div>foldr ($) [1,2] (replicate 1 (tail [1,2])</div><div>foldr ($) [1,2] ([2])</div><div><br></div><div>. . . now I'm lost. Can someone walk me through this?</div><div><br></div><div>LB</div></div>
_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
</blockquote></div>