Я пишу предикат, чтобы проверить, является ли матрица (квадратная) нижняя треугольная .
Идея заключается в возвращении true если все элементы первой строки (кроме элемента с индексом 0) равны нулю, а затем снова вызвать предикат для подматрицы , полученный , исключая 1 строка и 1 столбец.Рекурсия должна заканчиваться, когда подматрицей является всего 1 число (например, [[x]]), которое, конечно, является нижней треугольной.
Вопрос: как я могу сопоставить [[x]], где x это просто число?
lowertriangular (???) = True
lowertriangular (x:xs) = all (==0) (tail x) && lowertriangular (map tail xs)
Редактировать :
m = [[1,0,0],[2,-3,0],[4,5,6]]
lt m = all (==0) [0, 0] && lt [[-3, 0], [5, 6]]
= all (==0) [0, 0] && (all (==0) [0] && lt [6])
lt [6] должен соответствовать [[_]], который возвращает True.