On Saturday, 2003-06-21, 03:23, CEST, Brett Kelly wrote: > Hello all, > > I'm trying to write a function that takes a list and a element (same type) > and returns the index of the first instance of the element in the list. > like: getindex "brett" 'e' would return 2, etc. > > i'm trying to accomplish this using an accumulator, here's what i've got: > > pyindex :: Eq a => a -> [a] -> Maybe Int > pyindex c l = pyindex' 0 chr (x:xs) > where pyindex' count chr (x:xs) = do > if x == chr > then return count > else pyindex' (count + 1) chr xs > > now, i know i've got a syntax problem, because i'm pretty sure my logic is > correct (or at least MOSTLY correct). > > can anybody see what's wrong with my stuff? > > thanks!
Hello, I think, the following code, which uses certain prelude functions, would be clearer and more elegant: pyindex :: Eq a => a -> [a] -> Maybe Int pyindex c l = lookup c (zip l [0 ..]) I would it generally consider better style to not do recursion explicitely but use the recursion already provided by predefined functions like lookup. Wolfgang _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe