<div dir="ltr"><div>{-</div><div>8. Redefine the function positions using the function find.</div><div>-}</div><div><br></div><div dir="ltr"><div>positions :: Eq a => a -> [a] -> [Int]<br></div></div><div dir="ltr"><div>positions x xs = [i | (x', i) <- zip xs [0..], x == x']</div><div><br></div><div>{-</div><div>Hutton, Graham. Programming in Haskell (Kindle Locations 1640-1642). Cambridge University Press. Kindle Edition. </div><div>-}</div><div><br></div></div><div dir="ltr"><div>find :: Eq a => a -> [(a,b)] -> [b]</div><div>find k t = [v | (k',v) <- t, k == k']</div><div><br></div><div>{-</div><div>Hutton, Graham. Programming in Haskell (p. 49). Cambridge University Press. Kindle Edition. </div><div>-}</div><div><br></div></div><div dir="ltr"><div>positions' :: Eq a => a -> [a] -> [Int]</div></div><div dir="ltr"><div>positions' x xs = find x (zip xs [0..])</div><div>-------------------------------------------------------------------</div><div>Having read the chapter a week ago, I had forgotten that Hutton had previously defined a function "find" for tuples (see above). After trying a search of the Kindle book the solution was trivial.</div><div><br></div><div>Trent.</div><div><br></div></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
</blockquote></div></div>