2014-12-16 4 views
-1

У меня есть заданная строка: abcdpqrs, где output будет: badcqpsr.Перестановка строки, Haskell

Мой текущий код:

f :: [a] -> [a] 
f (a:b:xs) = b:a:xs 
f xs = xs 

Оценка f "abcdpqrs" результатов в "bacdpqrs". Как это можно использовать для получения «badcqpsr»?

+4

Вы задали тот же вопрос несколько дней назад, и он был закрыт. Пожалуйста, не отправляйте один и тот же вопрос несколько раз ... Вместо этого вы должны отредактировать исходный вопрос и добавить свою текущую попытку. Во всяком случае, вам не хватает рекурсивного вызова: он должен быть 'f (a: b: xs) = b: a: f xs'. – Jubobs

+0

@Jubobs благодарит вас, если вы измените свой комментарий, чтобы ответить, я его выберу. – rel1x

ответ

2

Попробуйте обрабатывать больше, чем просто первые два символа с помощью рекурсии на оставшуюся часть списка:

f :: [a] -> [a] 
f (a:b:xs) = b:a:f xs 
f xs = xs