Пожалуйста, перейдите к редактированию:
Мне нужно решить проблему с домашним заданием, возможно, я совершенно не прав в этом, но я новичок в функциональном программировании.
У меня есть Матрица 5x5 со строками, я хочу их прочитать, преобразовать в элемент данных и применить к новой матрице.
Я использую рекурсивный подход, потому что хочу добавить позицию Строка в элемент данных!
вот что я попробовал:
cycleMatrix :: Int -> Int -> [[String]] -> [[Data]]
cycleMatrix 0 0 matrix = (strToData 0 0 (matrix !! 0) !! 0))
cycleMatrix n 0 matrix = (cycleMatrix (n - 1) 0 matrix):(strToData n 5 ((matrix !! n) !! 5))
cycleMatrix n m matrix = (cycleMatrix n (m - 1) matrix):(strToData n n ((matrix !! n) !! m))
с strToData
Я получаю строку из матрицы и передаю x и y, возвращая объект данных (это работает)
В данный момент я просто пытаюсь добавить каждый элемент в массив, но я действительно хочу начинать новый список каждый раз, когда достигаю нуля на m
(после cycleMatrix n 0 matrix
)
My вопросы: это путь к go и как мне правильно добавить этот элемент?
Редактировать: Хорошо, я наконец-то заставил его работать, разделив функции (спасибо Руди, что я не сказал сделать все сразу)
Но мои вопросы все еще стоят. Теперь у меня есть 8 списков, заполненных элементами данных. Я могу добавить их все в список с помощью [] ++ []
, но есть ли способ создать матрицу из списков, например [] : []
(добавление списка в качестве элемента в список)?