Как лучше всего извлечь диагональ из матрицы в Haskell?

Меня попросили написать функцию, которая извлекала бы диагональ матрицы, хранящейся в виде списка списков. Первая версия заключалась в извлечении числа путем индексации списков, но вскоре я пришел к выводу, что это не так. Также есть ли разница в производительности между деконструкцией списка при сопоставлении с образцом, например ((x: _): xs), или с функцией head, как показано выше?

РЕДАКТИРОВАТЬ: На самом деле это больше любопытный вопрос, чем домашнее задание, они не Здесь я преподаю функциональное программирование в технических университетах (что, на мой взгляд, жалко), но я оставлю метку.

12
задан Bill the Lizard 18 September 2012 в 03:13
поделиться