<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Sep 18, 2010, at 12:51 AM, Christopher Tauss wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div>&nbsp;</div><div>I am a professional programmer with 11 years experience, yet I just do not seem to be able to get the hang of even simple things in Haskell.&nbsp; I am trying to write a function that takes a list and returns the last n elements.</div><div>&nbsp;</div></span></blockquote><div><br></div>Note that keeping just the suffix is the same as dropping the prefix. &nbsp;Consider your data:</div><div><br></div><div>A finite list.</div><div>The length of the suffix to keep.</div><div>An algebraic relationship between lengths of lists, &nbsp;suffixes, and their prefixes:</div><div><br></div><div>length(prefix) + length(suffix) = legnth(list)</div><div><br></div><div>Putting all of this together:</div><div><font class="Apple-style-span" face="Courier"><br></font></div><div><font class="Apple-style-span" face="Courier">n_tail n list = drop (prefix_length) list&nbsp;where&nbsp;</font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier">        </font></span><font class="Apple-style-span" face="Courier">prefix_length = length list - n</font></div><div><br></div><div>You may be interested in how drop is carrying around some state:</div><div><font class="Apple-style-span" face="Courier"><br></font></div><div><meta charset="utf-8"><span class="Apple-style-span" style="font-family: Times; "><pre><span class="hs-definition"><font class="Apple-style-span" face="Courier">drop</font></span><font class="Apple-style-span" face="Courier"> </font><span class="hs-varid"><font class="Apple-style-span" face="Courier">n</font></span><font class="Apple-style-span" face="Courier"> </font><span class="hs-varid"><font class="Apple-style-span" face="Courier">xs</font></span><font class="Apple-style-span" face="Courier">     </font><span class="hs-keyglyph" style="color: red; "><font class="Apple-style-span" face="Courier">|</font></span><font class="Apple-style-span" face="Courier"> </font><span class="hs-varid"><font class="Apple-style-span" face="Courier">n</font></span><font class="Apple-style-span" face="Courier"> </font><span class="hs-varop"><font class="Apple-style-span" face="Courier">&lt;=</font></span><font class="Apple-style-span" face="Courier"> </font><span class="hs-num"><font class="Apple-style-span" face="Courier">0</font></span><font class="Apple-style-span" face="Courier"> </font><span class="hs-keyglyph" style="color: red; "><font class="Apple-style-span" face="Courier">=</font></span><font class="Apple-style-span" face="Courier">  </font><span class="hs-varid"><font class="Apple-style-span" face="Courier">xs</font></span><font class="Apple-style-span" face="Courier">
<a name="line-349"></a></font><span class="hs-definition"><font class="Apple-style-span" face="Courier">drop</font></span><font class="Apple-style-span" face="Courier"> </font><span class="hs-keyword" style="color: blue; "><font class="Apple-style-span" face="Courier">_</font></span><font class="Apple-style-span" face="Courier"> </font><span class="hs-conid"><font class="Apple-style-span" face="Courier">[]</font></span><font class="Apple-style-span" face="Courier">              </font><span class="hs-keyglyph" style="color: red; "><font class="Apple-style-span" face="Courier">=</font></span><font class="Apple-style-span" face="Courier">  </font><span class="hs-conid"><font class="Apple-style-span" face="Courier">[]</font></span><font class="Apple-style-span" face="Courier">
<a name="line-350"></a></font><span class="hs-definition"><font class="Apple-style-span" face="Courier">drop</font></span><font class="Apple-style-span" face="Courier"> </font><span class="hs-varid"><font class="Apple-style-span" face="Courier">n</font></span><font class="Apple-style-span" face="Courier"> </font><span class="hs-layout" style="color: red; "><font class="Apple-style-span" face="Courier">(</font></span><span class="hs-keyword" style="color: blue; "><font class="Apple-style-span" face="Courier">_</font></span><span class="hs-conop"><font class="Apple-style-span" face="Courier">:</font></span><span class="hs-varid"><font class="Apple-style-span" face="Courier">xs</font></span><span class="hs-layout" style="color: red; "><font class="Apple-style-span" face="Courier">)</font></span><font class="Apple-style-span" face="Courier">          </font><span class="hs-keyglyph" style="color: red; "><font class="Apple-style-span" face="Courier">=</font></span><font class="Apple-style-span" face="Courier">  </font><span class="hs-varid"><font class="Apple-style-span" face="Courier">drop</font></span><font class="Apple-style-span" face="Courier"> </font><span class="hs-layout" style="color: red; "><font class="Apple-style-span" face="Courier">(</font></span><span class="hs-varid"><font class="Apple-style-span" face="Courier">n</font></span><span class="hs-comment" style="color: green; "><font class="Apple-style-span" face="Courier">-</font></span><span class="hs-num"><font class="Apple-style-span" face="Courier">1</font></span><span class="hs-layout" style="color: red; "><font class="Apple-style-span" face="Courier">)</font></span><font class="Apple-style-span" face="Courier"> </font><span class="hs-varid"><font class="Apple-style-span" face="Courier">xs</font></span><font class="Apple-style-span" face="Courier">
</font></pre><div><br></div></span></div></body></html>