Я довольно новичок в Haskell, и я пытаюсь изменить список. В то же время я хочу изменить списки в этом списке. Так, например:Перемещение списка в другом списке в Haskell
Prelude> rev [[3,4,5],[7,5,2]]
[[2,5,7],[5,4,3]]
Я знаю, что следующий код изменяет список:
rev :: [[a]] -> [[a]]
rev [[]] = [[]]
rev [[x]] = [[x]]
rev xs = last xs : reverse (init xs)
Я изо всех сил за то время, я сделал некоторые дополнения к коду, но он по-прежнему не работает и я застрял.
rev :: [[a]] -> [[a]]
rev [[]] = [[]]
rev [[x]] = [[x]]
rev xs = last xs : reverse (init xs)
rev [xs] = last [xs] : reverse (init [xs])
Буду признателен за любую помощь. Заранее спасибо.
Непосредственно, это просто 'rev = reverse. карта обратная' – Alec
Отлично! Спасибо. – ZCoder
Кстати, естественный способ написать 'reverse' путем сопоставления шаблонов - использовать вспомогательную функцию и накопительный список; сначала 'rev ls = loop [] ls' then' loop acc [] = acc; loop acc (a: as) = loop (a: acc) ls' – Michael