Фильтрация списка кортежей с помощью isPrefixOf

Мне нужна функция, которая может делать следующее:

prefixes :: String -> [String] -> [(Int,String)]
prefixes "apples" ["ap","appl","le"] == [(0, "ap"), (1, "appl")] :: [(Int, String)]

Пока что мне удалось сделать вот это:

prefixes xs (y:ys) = filter ((isPrefixOf xs).snd) a where
a=(zip [0..] (y:ys))

Но результатом этого является пустой список, и я не могу придумать, как заставить его работать. (Да, это было домашнее задание, которое я не выполнил вовремя, но мне все еще интересно, как сделать это правильно)

9
задан Bill the Lizard 16 September 2012 в 22:31
поделиться