dbo:abstract
|
- In computer science, corecursion is a type of operation that is dual to recursion. Whereas recursion works analytically, starting on data further from a base case and breaking it down into smaller data and repeating until one reaches a base case, corecursion works synthetically, starting from a base case and building it up, iteratively producing data further removed from a base case. Put simply, corecursive algorithms use the data that they themselves produce, bit by bit, as they become available, and needed, to produce further bits of data. A similar but distinct concept is generative recursion which may lack a definite "direction" inherent in corecursion and recursion. Where recursion allows programs to operate on arbitrarily complex data, so long as they can be reduced to simple data (base cases), corecursion allows programs to produce arbitrarily complex and potentially infinite data structures, such as streams, so long as it can be produced from simple data (base cases) in a sequence of finite steps. Where recursion may not terminate, never reaching a base state, corecursion starts from a base state, and thus produces subsequent steps deterministically, though it may proceed indefinitely (and thus not terminate under strict evaluation), or it may consume more than it produces and thus become non-productive. Many functions that are traditionally analyzed as recursive can alternatively, and arguably more naturally, be interpreted as corecursive functions that are terminated at a given stage, for example recurrence relations such as the factorial. Corecursion can produce both finite and infinite data structures as results, and may employ self-referential data structures. Corecursion is often used in conjunction with lazy evaluation, to produce only a finite subset of a potentially infinite structure (rather than trying to produce an entire infinite structure at once). Corecursion is a particularly important concept in functional programming, where corecursion and codata allow total languages to work with infinite data structures. (en)
- In de informatica is corecursie een operatietype dat het duale is van recursie. Corecursie wordt typisch in samenhang met luie evaluatie gebruikt om oneindige datastructuren te representeren. De regel voor primitieve corecursie op is de duale van de regel voor primitieve recursie op data. In plaats van de argumenten van boven naar beneden te bekijken, lopen we de resultaten van beneden naar boven door. Merk op dat de corecursie (mogelijk oneindige) codata creëert, terwijl de gewone recursie (noodzakelijkerwijs eindige) data analyseert. Gewone recursie is niet toepasbaar op de codata, omdat de recursie mogelijk niet eindigt. Omgekeerd is corecursie niet toepasbaar als het resultaattype van de data eindig moet zijn. Een anamorfisme is op dezelfde manier een vorm van corecursie als een catamorfisme een vorm van recursie is. De bewijsassistent ondersteunt corecursie en en maakt daarbij gebruik van het CoFixpoint commando. (nl)
- Кореку́рсия — в теории категорий и информатике тип операции, дуальный к рекурсии. Обычно корекурсия используется (совместно с механизмом ленивых вычислений) для генерации бесконечных структур данных. (ru)
- 共递归在计算机科学重视一类操作,与递归在范畴论上对偶。因而递归是分析地工作,把数据分解为更小的数据直至达到基本情况。共递归是合成地工作,从基本情况构造出数据。共递归的数据是自己一点一点构造出来的。一个类似但不同的概念是(generative recursion)。 共递归常与惰性求值配合,产生一个潜在无穷结构的有限子集。 (zh)
- В інформатиці, корекурсія — це операція двоїста до рекурсії. Тоді як рекурсія працює аналітично, починаючи з даних далеких від базового випадку, розбиває їх на менші шматки, і повторюється допоки не досягне базового випадку, корекурсія працює синтетично, починаючи з базового випадку і просувається ітеративно продукуючи дані далі віддалені від базового випадку. Просто кажучи, корекурсивні алгоритми використовують дані які самі ж створюють, крок за кроком, по мірі того як вони стають доступними і потрібними для утворення нових даних. У той час як рекурсія дозволяє програмам діяти на даних довільної складності, допоки їх можна звести до простих даних (базових випадків), корекурсія дозволяє програмам видавати довільно складні і потенціально нескінченні структури даних, такі як потоки, поки це можливо із простих даних (базових випадків). Тоді як рекурсія може не закінчитись, ніколи не досягши базового випадку, корекурсія починає з базового випадку, і отже продукує наступні кроки детерміністично, хоча вона може продовжуватись нескінченно (і також не завершитись за умови ), або вона може споживати більше ніж видавати і таким чином стати непродуктивною. Багато функцій, що традиційно аналізуються як рекурсивні можна представити як корекурсивні, що завершуються на певній стадії, наприклад рекурентні співвідношення такі як факторіали. Корекурсія може створювати скінченні і нескінченні структури даних, і може задіювати автореферентні структури даних. Корекурсію часто використовують разом із лінивими обчисленнями, для того, щоб утворити лише скінченну підмножину потенційно нескінченної структури (замість спроби отримати повну нескінченну структуру одразу). Корекурсія є дуже важливою концепцією у функціональному програмуванні, де корекурсія і кодані дозволяють цілковито функціональним мовам працювати із нескінченними структурами даних. (uk)
|
rdfs:comment
|
- Кореку́рсия — в теории категорий и информатике тип операции, дуальный к рекурсии. Обычно корекурсия используется (совместно с механизмом ленивых вычислений) для генерации бесконечных структур данных. (ru)
- 共递归在计算机科学重视一类操作,与递归在范畴论上对偶。因而递归是分析地工作,把数据分解为更小的数据直至达到基本情况。共递归是合成地工作,从基本情况构造出数据。共递归的数据是自己一点一点构造出来的。一个类似但不同的概念是(generative recursion)。 共递归常与惰性求值配合,产生一个潜在无穷结构的有限子集。 (zh)
- In computer science, corecursion is a type of operation that is dual to recursion. Whereas recursion works analytically, starting on data further from a base case and breaking it down into smaller data and repeating until one reaches a base case, corecursion works synthetically, starting from a base case and building it up, iteratively producing data further removed from a base case. Put simply, corecursive algorithms use the data that they themselves produce, bit by bit, as they become available, and needed, to produce further bits of data. A similar but distinct concept is generative recursion which may lack a definite "direction" inherent in corecursion and recursion. (en)
- In de informatica is corecursie een operatietype dat het duale is van recursie. Corecursie wordt typisch in samenhang met luie evaluatie gebruikt om oneindige datastructuren te representeren. De regel voor primitieve corecursie op is de duale van de regel voor primitieve recursie op data. Een anamorfisme is op dezelfde manier een vorm van corecursie als een catamorfisme een vorm van recursie is. De bewijsassistent ondersteunt corecursie en en maakt daarbij gebruik van het CoFixpoint commando. (nl)
- В інформатиці, корекурсія — це операція двоїста до рекурсії. Тоді як рекурсія працює аналітично, починаючи з даних далеких від базового випадку, розбиває їх на менші шматки, і повторюється допоки не досягне базового випадку, корекурсія працює синтетично, починаючи з базового випадку і просувається ітеративно продукуючи дані далі віддалені від базового випадку. Просто кажучи, корекурсивні алгоритми використовують дані які самі ж створюють, крок за кроком, по мірі того як вони стають доступними і потрібними для утворення нових даних. (uk)
|