Вы можете использовать
digits = map (`mod` 10) . reverse . takeWhile (> 0) . iterate (`div` 10)
или для обратного порядка
rev_digits = map (`mod` 10) . takeWhile (> 0) . iterate (`div` 10)
Итерационная часть генерирует бесконечный список, делящий аргумент на каждом шаге на 10, поэтому 12345 становится [ 12345,1234,123,12,1,0,0 ..]. При этом часть занимает только интересную непустую часть списка. Затем мы отменим (если хотим) и возьмем последнюю цифру каждого номера списка.
Здесь я использовал стиль без точек, поэтому вы можете представить невидимый аргумент n по обе стороны от " уравнение". Однако, если вы хотите записать его таким образом, вы должны подставить верхний уровень .
на $
:
digits n = map(`mod` 10) $ reverse $ takeWhile (> 0) $ iterate (`div`10) n
Я думаю, что вам нужно преобразовать элемент data
в классе ListNode
из типа T
в array
или list
в T