Общее программирование принимает за разработчиков Haskell для предотвращения? [закрытый]

Любой IBOutlet, который является подпредставлением основного представления Вашего Nib, не должен быть выпущен, потому что они будут отправлены сообщение автовыпуска после создания объекта. Единственный IBOutlet's, который необходимо выпустить в dealloc, является объектами верхнего уровня как контроллеры или другой NSObject's. Это все упоминается в документе Apple, связанном с вышеупомянутым.

13
задан Imagist 1 August 2009 в 17:53
поделиться

5 ответов

Самая распространенная ошибка, о которой я знаю, - это вводить утечку пространства из-за ленивых вычислений . Есть много способов добиться этой ошибки, но один, который особенно привлекает программистов с другим опытом функционального программирования, - это поместить результат в параметр накопления, думая, что параметр накопления будет занимать постоянное место. Во многих случаях накапливаемый параметр занимает линейное пространство, потому что параметры не вычисляются.

Другая распространенная ошибка - забывать, что let всегда рекурсивно . Непреднамеренное

let x = ... x ...

может привести к сбивающим с толку результатам.

Большинство других распространенных неприятных событий проявляются не в виде ошибок, а в виде проблем с прохождением программ через средство проверки типов или трудностей с пониманием монадической модели ввода-вывода. Иногда возникают трудности с пониманием списков и с нотациями do .

В общем, трудности, с которыми сталкиваются начинающие программисты на Haskell, включают

  • Большой язык с множеством темных углов, особенно в системе типов
  • программы для компиляции, особенно когда они выполняют операции ввода-вывода
  • Выполнение всего в монаде IO
  • Сложно предсказать поведение ленивых функциональных программ во времени и пространстве
15
ответ дан 1 December 2019 в 21:38
поделиться

Распространенная ошибка , начинающаяся с программистов Haskell - это забудьте о различии между пространствами имен конструктора и типа . Это была такая ошибка новичка, что мне неловко, что к ней прикреплено мое имя, но я

8
ответ дан 1 December 2019 в 21:38
поделиться

Разница между [] и [[]] : пустой список и список с 1 элементом, а именно пустой список. Этот особенно часто возникает в базовых случаях рекурсивных функций.

4
ответ дан 1 December 2019 в 21:38
поделиться

Используйте невозвратные функции или не строгие складки, возникающие при переполнении штабеля.

-1
ответ дан 1 December 2019 в 21:38
поделиться

Понятие выражения для начинающих довольно запутанное. Возьмем условную конструкцию в императивных языках программирования. Там это всего лишь конструкция, а в Хаскелле - выражение. То есть если условие должно иметь соответствие, то и то, и другое должно давать значения одного и того же типа вычислений.

wrongFunc n = if n > 18
              then 1
              else False

Блок if вычисляет целое число, где, как и остальные, возвращает bool. Это распространенная ошибка, так как в Хаскелле это не просто блок выражений, а выражения.

-1
ответ дан 1 December 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: