Описание тега corecursion
В информатике corecursion - это тип операции, который двойственен рекурсии. В то время как рекурсия работает аналитически, начиная с данных дальше от базового случая и разбивая их на более мелкие данные и повторяя до тех пор, пока не будет достигнут базовый вариант, corecursion работает синтетически, начиная с базового случая и наращивая его, итеративно производя данные, удаленные из базовый вариант.
1
ответ
Corecursion не заканчивается после небольшого изменения
Я написал в Racket функцию для создания чего-то похожего на следующий фрактал. (define CUT-OFF 5) (define CIRCLE-MODE "outline") (define (circle-fractal size colour) (local [(define full-circle (circle size CIRCLE-MODE colour))] (cond [(<= size C…
02 фев '16 в 19:48
2
ответа
Рекурсивная функция с растущими значениями
Я пытаюсь написать рекурсивную функцию оценки для 3(2+1)+4(3+2+1)+...+(n+1)(n+...+2+1) Я знаю, что в общем случае нам нужно записать это как индукцию, результат для базового случая, скажем, n=1, а затем вызвать функцию для n-1, которая в конечном ит…
01 май '18 в 08:38
1
ответ
"недопустимая функция карты" при определении базового дерева
Я делаю свои первые эксперименты с codatatypeНо я застрял довольно рано. Я начал с этого определения ветвления, возможно, бесконечного дерева: codatatype (lset: 'a) ltree = Node (lnext : "'a ⇒ 'a ltree option") и некоторые определения работают норма…
12 ноя '14 в 09:17
4
ответа
Наблюдаемый от Цепных Задач
Я пытаюсь создать Observable, где каждый элемент создается с помощью асинхронной задачи. Следующий элемент должен быть произведен посредством асинхронного вызова на результат предыдущего элемента (ко-рекурсия). На языке "Generate" это будет выглядет…
17 июл '15 в 22:12
2
ответа
Как использовать corecursion в c?
Мне нужна помощь, чтобы найти место для размещения операторов печати в каждой функции (alpha_count и sum_digits), чтобы они печатались только один раз (в конце программы). Ex.Количество символов: 8Сумма цифр: 19 На данный момент они печатаются кажды…
24 окт '15 в 21:18
1
ответ
Рассуждая о полноте кодатипа в Изабель /HOL
Я хотел бы записать некоторые определения (и доказать несколько лемм!) О путях в графе. Допустим, что граф задан неявно отношением типа 'a => 'a => bool, Чтобы говорить о возможном бесконечном пути в графе, я подумал, что разумно было бы испол…
21 мар '18 в 09:22
3
ответа
Как выполнить corecursion в C++?
Я работаю над проектом C++, который требует частого взаимодействия с древовидной структурой, что означает множество рекурсивных функций, и я ищу способы улучшить код. Я столкнулся с corecursion на днях, и я заинтересован в изучении этой стратегии дл…
12 фев '15 в 17:37
1
ответ
Развертывание непустых структур в списках
Я хочу написать Foldable.toList для непустого розового дерева, использующего анаморфизм, но кажется невозможным извлечь последний элемент: import Data.Functor.Foldable data RoseTree a = RoseNode a [RoseTree a] ana5 :: RoseTree a -> [a] ana5 = ana…
15 фев '17 в 04:32
1
ответ
Как (со) рекурсивное определение работает в Haskell?
Я играю с языком, чтобы начать учиться, и я озадачен неуверенностью в том, как работает рекурсивное определение. Например, давайте возьмем последовательность треугольных чисел (TN n = sum [1..n]) Решение было предоставлено: triangularNumbers = scanl…
27 июл '15 в 14:48
1
ответ
Coinduction на Coq, несоответствие типов
Я пробовал коиндуктивные типы и решил определить коиндуктивные версии натуральных чисел и векторов (списки с их размером в типе). Я определил их и бесконечное число так: CoInductive conat : Set := | cozero : conat | cosuc : conat -> conat. CoIndu…
13 окт '17 в 23:28
2
ответа
Схемы рекурсии на Haskell: обозначьте дерево с промежуточными результатами
С помощью cata Я могу сложить АСТ к результату. С Cofree Я могу хранить дополнительные аннотации на AST. Как я могу взять AST и вернуть аннотированный AST с результатами на каждом этапе пути? alg :: Term Result -> Result alg = undefined run :: Fi…
09 сен '17 в 14:59
1
ответ
Почему:p зависает в GHCi, когда я даю ему это corecursive значение?
Я определил бесконечный список бесконечных списков pathCounts и бесконечный список конечных списков pathCounts': import Data.Function (fix) nextRow xs = fix $ \ys -> zipWith (+) xs (0:ys) pathCounts = repeat 1 : map nextRow pathCounts pathCounts'…
12 фев '14 в 15:34
0
ответов
Генеративная рекурсия против корекурсии
Обсуждение рекурсии в Википедии указывает на то, что порождающие рекурсивные функции " часто можно интерпретировать как corecursive функции" (выделено мной), в то время как обсуждение в corecursion в Википедии звучит так, как если бы два автора назы…
14 май '15 в 16:29
1
ответ
Observable.Generate в RxJava?
В.NET Reactive Extensions есть удобный метод генерации последовательностей с использованием corecursion, который называется Observable.Generate. Есть ли в RxJava метод аналогов, позволяющий генерировать данные с помощью corecursion? Если нет, то мож…
07 июн '16 в 15:44
1
ответ
Решить динамическое программирование в Прологе с помощью corecursion
Я хотел бы решить следующую проблему динамического программирования с помощью corecursion в Prolog. Но я застрял в поиске в ширину, который хотел бы осуществить корректирующим образом: Есть здание n этажей с лифтом, которое может подниматься только …
31 авг '18 в 21:22
1
ответ
Неожиданный corecursive вызов
Это (обрезанное) определение corecursive функции в Изабель primcorec tree :: "'form fset ⇒ 'vertex ⇒ 'preform ⇒ (('form fset × 'form), ('rule × 'preform) NatRule) dtree" where "tree Γ v p = (case undefined of Hyp h c ⇒ undefined | Reg c ⇒ Node undef…
01 фев '16 в 15:37
1
ответ
Python: создание генераторов во время выполнения
Я знаю, что в Python классы и функции могут быть созданы во время выполнения, используя type и lambda соответственно, но могут ли генераторы быть созданы во время выполнения? Пример: ключевое слово, условие, действие, доходность lambda x,a: a<x,a…
28 мар '14 в 19:20
1
ответ
Выразить футуморфизм, специализированный для списков, как обязательный цикл
Я пытался перевести эту рекурсивную реализацию на Хаскелле футуморфизма, специализированного на Lists futuL :: (a -> Maybe (b, ([b], Maybe a))) -> a -> [b] futuL f x = case f x of Nothing -> [] Just (y, (ys, mz)) -> y : (ys ++ fz) whe…
01 июн '19 в 08:06
1
ответ
Что представляют собой codata в контексте программирования?
Это базовый алгоритм, потому что с каждой итерацией он вызывает себя для данных, которые больше, чем были раньше: iterate f x = x : iterate f (f x) Он похож на стиль накопителя хвостовой рекурсии, но его накопитель неявный, а не передается в качеств…
10 май '20 в 22:42
1
ответ
Как закодировать corecursion/codata в строго оцененной настройке?
Corecursion означает обращение к данным на каждой итерации, которые больше или равны тем, что были у вас раньше. Corecursion работает с codata, которые представляют собой рекурсивно определенные значения. К сожалению, рекурсия значений невозможна в …
04 мар '20 в 18:29