Вопросы по теме 'recursion-schemes'

Есть ли что-то вроде ката, но где вы можете сопоставить внутреннюю структуру?
У меня этот язык AST data ExprF r = Const Int | Var String | Lambda String r | EList [r] | Apply r r deriving ( Show, Eq, Ord, Functor, Foldable ) И я хочу преобразовать его в строку...
164 просмотров

Выразите футуморфизм, специализированный для списков, в виде императивного цикла
Я пытался перевести эту рекурсивную реализацию Haskell футуморфизма, специализированного на List s futuL :: (a -> Maybe (b, ([b], Maybe a))) -> a -> [b] futuL f x = case f x of Nothing -> [] Just (y, (ys, mz)) -> y : (ys ++...
165 просмотров

Что такое катаморфизм и можно ли его реализовать в C # 3.0?
Я пытаюсь узнать о катаморфизмах, и я прочитал статью в Википедии и первые пару сообщений в серии тем для F # на Блог, посвященный F # . Я понимаю, что это обобщение складок (т. Е. Сопоставление структуры множества значений с одним...
11361 просмотров

Что такое анаморфизм и как он выглядит на C #?
Я пытаюсь осмыслить концепцию анаморфизма. В функциональном программировании анаморфизм - это обобщение концепции разворачивания списков. Формально анаморфизмы - это общие функции, которые могут коркурсивно конструировать результат...
1308 просмотров

Библиотечная реализация схемы рекурсии
Я «изобрел» рекурсивную схему, являющуюся обобщением катаморфизма. Когда вы сворачиваете структуру данных с катаморфизмом, у вас нет доступа к подтермам, только к подрезультатам сворачивания: {-# LANGUAGE DeriveFunctor #-} import qualified...
520 просмотров

В чем разница между Fix, Mu и Nu в пакете схемы рекурсии Эда Кметта
В пакете recursion-scheme Эда Кметта есть три объявления: newtype Fix f = Fix (f (Fix f)) newtype Mu f = Mu (forall a. (f a -> a) -> a) data Nu f where Nu :: (a -> f a) -> a -> Nu f В чем разница между этими тремя типами...
2939 просмотров

Алгоритм W с использованием рекурсивных схем
Я хотел иметь возможность сформулировать алгоритм вывода типа Хиндли-Милнера, используя типы данных с фиксированной точкой и схемы рекурсии. Игнорируя все детали, кроме фактических частей рекурсии: w env term = case term of Lam n e -> lam...
291 просмотров

Пример хрономорфизма
Я не понимаю, как я могу создать пример с хрономорфизмом. Я знаю о гиломорфизме ( cata , ana ), также я знаю о histo и futu . Но я не понимаю какого-то примера хрономорфизма (может быть, какое-то поведение, как в монаде Тардис). Также...
708 просмотров
schedule 19.05.2023

Схемы рекурсии с несколькими типами
Прямо сейчас у меня есть AST для выражения, которое полиморфно по типу рекурсии: data Expr a = Const Int | Add a a Это было невероятно полезно, поскольку позволило мне использовать тип для простой рекурсии ( Fix Expr ) и еще один,...
202 просмотров

Демонстрация взаимосвязи между hylo и hyloM
Мне сказали, что следующие функции эквивалентны по мощности hylo :: Functor f => (f b -> b) -> (a -> f a) -> a -> b hylo f g = h where h = f . fmap h . g hyloM :: (Traversable g, Monad m) => (g b -> m b) -> (a -> m...
71 просмотров
schedule 18.12.2022

Как я могу использовать этот тип со схемой рекурсии вместо явной рекурсии?
Рассмотрим этот код: import Data.Maybe (fromMaybe) data MyStructure = Foo Int | Bar String MyStructure | Baz MyStructure MyStructure | Qux Bool Bool MyStructure MyStructure deriving(Eq,Show) makeReplacements :: [(MyStructure, MyStructure)] ->...
244 просмотров

Как решить эту ошибку косвенной рекурсии?
#include <iostream> #include <stdio.h> using namespace std; void funB(int n){ if (n>1){ cout<<n<<" "; funA(n/2); } } void funA(int m) { if (m>0){ cout<<m<<" ";...
19 просмотров

Могу ли я написать «foldr» (или «foldMap») в терминах «схем рекурсии» «cata»?
Недавно я читал о схемах рекурсии , где катаморфизмы описываются как аналоги обобщенных foldr . Можно ли записать экземпляр Foldable (через foldr или foldMap ) в терминах cata во всех случаях?
244 просмотров

Схема рекурсии для символьного дифференцирования
Следуя терминологии из этой замечательной серии , давайте представим такое выражение, как (1 + x^2 - 3x)^3 на Term Expr , где типы данных следующие: data Expr a = Var | Const Int | Plus a a | Mul a a | Pow a Int deriving...
308 просмотров
schedule 22.03.2024