Извините, если этот ТОЧНЫЙ вопрос уже был задан...
У меня есть задание судоку на Haskell, и я был бы признателен за отзывы здесь.
Цель состоит в том, чтобы реализовать функцию, представляющую судоку, содержащую только пустые ячейки, и затем назвать ее allBlankSudoku :: Sudoku
, где
data Sudoku = Sudoku [[Maybe Int]]
Вы должны использовать понимание списка или функцию карты, чтобы сделать это,
map :: (a -> b) -> [a] -> [b]
Это мой взгляд на это:
allBlankSudoku :: Sudoku
allBlankSudoku = Sudoku (map (replicate 9) (replicate 9 Nothing))
НО! Вот мой вопрос: в инструкциях сказано: «Не используйте здесь программирование копирования и вставки! Ваше определение не должно быть длиннее нескольких коротких строк».
Итак, мой код выше копирует и вставляет или нет? Есть ли дополнительный способ сделать это? Примечание. Это всего лишь первая задача из трех, поэтому я не думаю, что она должна быть сложной.
let r9 = replicate 9 in Sudoku (map r9 (r9 Nothing))
. Но на самом деле это не более читабельно и не более эффективно. - person user2407038   schedule 29.09.2015