В последнее время я размышлял о продолжениях, и я запутался в правильной терминологии. Здесь Габриэль Гонсалес говорит:
Продолжение Хаскелла имеет следующий тип:
newtype Cont r a = Cont { runCont :: (a -> r) -> r }
то есть. целая вещь (a -> r) -> r
является продолжением (без упаковки)
wikipedia, похоже, поддерживает эту идею, говоря
продолжение является абстрактным представлением состояния управления компьютерной программы.
Однако здесь авторы говорят, что
Продолжения - это функции, которые представляют собой "оставшиеся вычисления".
но это будет только (a->r)
часть типа Cont
. И это соответствует тому, что говорит Евгений Цин здесь:
вычисление (функция), которое требует функции продолжения в порядке для полной оценки.
Было бы много видеть эту функцию, поэтому дайте ей более интуитивное имя. Позволяет называть их функциями ожидания.
Я видел еще один учебник (Брайан Бекман и Эрик Мейер), где они называют все это (функция ожидания) наблюдаемым и функцию, необходимую для завершения наблюдателя.
- Что такое продолжение,
(a->r)->r
вещь или просто(a->r)
вещь (без упаковки)? - Является ли формулировка наблюдаемого/наблюдателя правильной?
- Являются ли приведенные выше цитаты противоречивыми, существует ли общая истина?