Это домашнее задание в первую очередь. Нам дана матрица нового типа, которая является реализацией профессором абстрактной матрицы. Моя главная проблема заключается в том, как создать список типа Matrix. Первая функция fillWith, которую мне нужно реализовать, принимает кортеж, который представляет собой (количество строк, количество столбцов) матрицы для создания и данных для размещения в каждом индексе.
module Matrix (Matrix, fillWith, fromRule, numRows, numColumns,
at, mtranspose, mmap, add, mult)
where
-- newtype is like "data", but has some efficiency advantages
newtype Matrix a = Mat ((Int,Int),(Int,Int) -> a)
--fillWith :: (Int,Int) -> a -> (Matrix a)
--fillWith ix val = Mat ((,
--trying to create a row of type Matrix
row_matrix :: [a] -> Matrix a
row_matrix ls = Mat ((1, length ls), (\x y -> if x > 1 then undefined else ls !! (y-1)))
Matrix
ужасно. Вы можете передать своему профессору, что я так сказал. Unidiomatic, и я оспариваю заявления о выигрыше в эффективности по сравнению с просто немного страннымdata Matrix a = Mat { width, height :: Int, members :: (Int, Int) -> a }
. - person Daniel Wagner   schedule 09.10.2015