Вопросы по теме 'continuation-passing'

Преобразование в CPS (стиль продолжения прохождения)
Как преобразовать эти процедуры из схемы в форму CPS? (lambda (x y) ((x x) y)) (lambda (x) (lambda (f) (f (lambda (y) (((x x) f) y)))) ((lambda (x) (x x) (lambda (x) (x x)) *Это не домашнее задание!
5718 просмотров
schedule 17.10.2022

Почему в стандартной библиотеке OCaml так много нерекурсивных функций?
В последнее время я переписывал многие функции стандартной библиотеки OCaml, чтобы они были хвостовыми рекурсивными. Учитывая, что это повлекло за собой прямое преобразование CPS, я не понимаю, почему версии по умолчанию не написаны таким образом....
1362 просмотров

Продолжение передачи стиля представления типов
Предположим, у нас есть монада, определяемая return , (>>=) и набором законов. Есть тип данных newtype C m a = C { unC ∷ forall r. (a → m r) → m r } также известный как Codensity . C m a ≅ m a учитывая, что m является Monad ,...
1059 просмотров

SICP, стиль прохождения продолжения и батут Clojure
Я работаю с SICP, и упражнение 2.29-b дало мне возможность повеселиться со стилем передачи продолжений при обходе мобильных и ответвлений. Короче говоря, у каждого мобильного телефона есть левая и правая ветви, которые состоят из длины и либо...
947 просмотров

Использование привязки для очистки стека вызовов во время вычисления CPS
EDIT : этот мой вопрос оказался довольно некорректным. Я все еще верю, что, особенно просматривая комментарии, это может дать некоторую пищу для размышлений, но если будет набрано достаточно голосов, чтобы закрыть его, я пойму. Во время...
305 просмотров

Написание интерпретатора для языка с разрывами
Я пытаюсь написать интерпретатор для простого языка программирования на схеме. Прямо сейчас я пишу процедуру для обработки циклов while с операторами break. Чтобы решить эту проблему, я использую call/cc. Когда язык разобран, это выглядит так:...
197 просмотров

Как использовать тип Reader, закодированный в стиле передачи продолжения
У меня сложилось впечатление, что каждое значение типа a может быть описано с помощью полиморфного типа newtype Id a = Id {runId :: forall r. (a -> r) -> r } ранга 2 в стиле передачи продолжения. Поэтому я получил следующий тип, чтобы...
60 просмотров

Как мне лениво преобразовать список в этот тип?
Рассмотрим этот тип Vect : {-# LANGUAGE GADTs, DataKinds, KindSignatures, RankNTypes #-} import Data.Kind (Type) data Nat = Zero | Succ Nat data Vect :: Nat -> Type -> Type where Nil :: Vect 'Zero a Cons :: a -> Vect n a ->...
115 просмотров

Как передавать массивы между страницами без формы в php
Я использовал многомерный массив из базы данных, чтобы вернуть строку ($ dataTotal) и еще одну, чтобы вернуть позицию в этой строке ($ data ['position1']), в зависимости от того, хочу ли я отобразить что-либо в массиве. на той первой странице Когда...
22 просмотров