continuation-passing

Я изучаю CPS с помощью Racket, и мне удалось записать следующие функции: ;lift a regular single-arg function into CPS (define (lift/k f) (lambda (x k) (k (f x)))) ;compose two CPS functions (define (compose/k f g) (lambda (x k) (g x (lambda (y) (f y k))))) Они, кажется, работают пр...

У меня есть вычисления в следующем формате: s -> a -> s, где s - тип некоторого состояния. Результатом такой функции является также состояние следующей оценки. Например, appendInt :: String -> Int -> String appendInt s i = s ++ (show i) Тогда appendInt "Int: " 1 даст "Int: 1", а (appendInt $ a...

Возможный дубликат:какова реакция Хаскелла на узел?js?Как я могу смотреть несколько файлов / сокетов, чтобы стать читаемым/доступным для записи в Haskell? Можно ли написать программу Haskell, которая выполняет ввод-вывод неблокирующим способом, как в nodejs? Например, я хотел бы получить 10 записей ...

В "Scheme Programming Language 4th Edition", есть пример, как показано ниже: (define product (lambda (ls) (call/cc (lambda (break) (let f ([ls ls]) (cond [(null? ls) 1] [(= (car ls) 0) (break 0)] [else (* (car ls) (f (cdr ls)))])))))) (проду...

Я просматривал по всему интернету в поисках просветления о продолжениях, и это уму непостижимо, как самые простые объяснения могут так сильно запутать программиста JavaScript, как я. Это особенно верно, когда большинство статей объясняют продолжения с кодом в схеме или используют монады. Итак, вот что знаю...