Что такое список слияний? [Дубликат]

Другим сценарием является то, что вы нанесли нулевой объект в тип значения . Например, код ниже:

object o = null;
DateTime d = (DateTime)o;

Он выкинет NullReferenceException в роли. В приведенном выше примере это кажется совершенно очевидным, но это может произойти в более «поздних связующих» сложных сценариях, где нулевой объект был возвращен из некоторого кода, которого вы не являетесь, и приведение, например, генерируется некоторой автоматической системой.

Одним из примеров этого является этот простой фрагмент привязки ASP.NET с элементом управления календарем:

" />

Здесь SelectedDate на самом деле является свойством - типа DateTime - типа Calendar Web Control, и привязка может отлично вернуть что-то null. Неявный генератор ASP.NET создаст кусок кода, который будет эквивалентен приведенному выше методу. И это поднимет NullReferenceException, что довольно сложно определить, потому что он лежит в сгенерированном ASP.NET коде, который компилирует отлично ...

61
задан Don Stewart 17 April 2011 в 22:01
поделиться

2 ответа

Неправильно ли, что, когда GHC в 6.12 использует эти новые функции по умолчанию, они также будут реализовывать [x..y] и перечислять ошибки в этом нерекурсивном режиме? Потому что единственная причина, по которой они не являются правильной строкой, состоит в том, что они internal и не написаны на самом деле в Haskell, но больше похожи на ключевые слова для скорости и / или потому, что вы не сможете переопределить этот синтаксис.

-1
ответ дан BAReFOOt 26 August 2018 в 04:48
поделиться

Насколько мне известно, и вопреки тому, что сказал Норман, потоковое слияние - это , а не , реализованное в настоящее время в базе GHC (т. е. вы не можете просто использовать функции Prelude). Для получения дополнительной информации см. билет GHC 915 .

Чтобы использовать потоковое слияние, вам необходимо установить библиотеку потокового фьюжн, импортировать Data.List.Stream (вы также можете импортировать Control.Monad .Stream) и использовать только функции из этого модуля, а не функции Prelude. Это означает, что Prelude скрывает все функции списка по умолчанию и не использует конструкцию [x..y] или понимание списка.

13
ответ дан Chai T. Rex 26 August 2018 в 04:48
поделиться
Другие вопросы по тегам:

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