<div dir="ltr"><div style=""><div style=""><div><font color="#222222" face="arial, sans-serif">{-</font></div><div><font color="#222222" face="arial, sans-serif">My "intuitive" way of doing this is to use recursion. Take the list, Find the first list element. Send the rest of the list back to the function to keep building the list of positions. Until you are out of list, then you halt.</font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">I have zero intuition on how to do that on a list comprehension, and the tuple pairs you get from zip just makes it harder.</font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">I don't really want a solution. What I really want to know is whether there is a "find" function I can import, how to import it, and some relevant documentation.</font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">I would like to add that I am working my way through Hutton, 2nd ed. without benefit of a class or instructor.</font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">On that note, can anybody recommend, preferably by personal experience, an Intro to Functional Programming MOOC taught in Haskell. No, I haven't Googled or searched the archives.<br></font></div><div><font color="#222222" face="arial, sans-serif">-}</font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">---------------------------------------</font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">{-</font></div><div><font color="#222222" face="arial, sans-serif">8. Redefine the function positions using the function find.</font></div><div><font color="#222222" face="arial, sans-serif">-}</font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">positions :: Eq a => a -> [a] -> [Int]</font></div><div><font color="#222222" face="arial, sans-serif">positions x xs = [i | (x', i) <- zip xs [0..], x == x']</font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">{-</font></div><div><font color="#222222" face="arial, sans-serif">Hutton, Graham. Programming in Haskell (Kindle Locations 1640-1642). Cambridge University Press. Kindle Edition. </font></div><div><font color="#222222" face="arial, sans-serif">-}</font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">-- OOO! look, SO simple!! Surely I could have done that! (cough.)</font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">---------------------------------------</font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">--import qualified Data.List as DList -- Trent</font></div><div><font color="#222222" face="arial, sans-serif">import qualified Data.Foldable as DFold -- Trent</font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">positions' :: Eq a => a -> [a] -> [Int]</font></div><div><font color="#222222" face="arial, sans-serif">positions' x xs = DFold.find x (zip xs [0..n]) </font></div><div><font color="#222222" face="arial, sans-serif">    where n = (length xs) - 1</font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">{-</font></div><div><font color="#222222" face="arial, sans-serif"><a href="https://github.com/arcomber/haskell/blob/master/exercises5.txt">https://github.com/arcomber/haskell/blob/master/exercises5.txt</a></font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">I can't get this to work.</font></div><div><font color="#222222" face="arial, sans-serif">-}</font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">{-</font></div><div><font color="#222222" face="arial, sans-serif">See:</font></div><div><font color="#222222" face="arial, sans-serif"><a href="https://searchcode.com/codesearch/view/71122841/">https://searchcode.com/codesearch/view/71122841/</a></font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">Also see:</font></div><div><font color="#222222" face="arial, sans-serif"><a href="https://github.com/macalimlim/programming-in-haskell/blob/master/Chapter5Ex.hs">https://github.com/macalimlim/programming-in-haskell/blob/master/Chapter5Ex.hs</a></font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">These look like they should work, but the author is not using a common, predefined Haskell function, which is what I take as Hutton's intent. That is, students should use "the" existing find function. Hutton is usually pretty clear when he wants the student to write or rewrite an available function by the same name.</font></div><div><font color="#222222" face="arial, sans-serif">-}</font></div></div></div></div>