Вопросы по теме '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 просмотров
schedule
10.09.2021
Выразите футуморфизм, специализированный для списков, в виде императивного цикла
Я пытался перевести эту рекурсивную реализацию 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 просмотров
schedule
26.07.2022
Что такое катаморфизм и можно ли его реализовать в C # 3.0?
Я пытаюсь узнать о катаморфизмах, и я прочитал статью в Википедии и первые пару сообщений в серии тем для F # на Блог, посвященный F # .
Я понимаю, что это обобщение складок (т. Е. Сопоставление структуры множества значений с одним...
11361 просмотров
schedule
02.08.2022
Что такое анаморфизм и как он выглядит на C #?
Я пытаюсь осмыслить концепцию анаморфизма.
В функциональном программировании анаморфизм - это обобщение концепции разворачивания списков. Формально анаморфизмы - это общие функции, которые могут коркурсивно конструировать результат...
1308 просмотров
schedule
07.08.2022
Библиотечная реализация схемы рекурсии
Я «изобрел» рекурсивную схему, являющуюся обобщением катаморфизма. Когда вы сворачиваете структуру данных с катаморфизмом, у вас нет доступа к подтермам, только к подрезультатам сворачивания:
{-# LANGUAGE DeriveFunctor #-}
import qualified...
520 просмотров
schedule
14.09.2023
В чем разница между 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 просмотров
schedule
19.04.2023
Алгоритм W с использованием рекурсивных схем
Я хотел иметь возможность сформулировать алгоритм вывода типа Хиндли-Милнера, используя типы данных с фиксированной точкой и схемы рекурсии. Игнорируя все детали, кроме фактических частей рекурсии:
w env term = case term of
Lam n e -> lam...
291 просмотров
schedule
23.05.2023
Пример хрономорфизма
Я не понимаю, как я могу создать пример с хрономорфизмом. Я знаю о гиломорфизме ( cata , ana ), также я знаю о histo и futu .
Но я не понимаю какого-то примера хрономорфизма (может быть, какое-то поведение, как в монаде Тардис).
Также...
708 просмотров
schedule
19.05.2023
Схемы рекурсии с несколькими типами
Прямо сейчас у меня есть AST для выражения, которое полиморфно по типу рекурсии:
data Expr a = Const Int
| Add a a
Это было невероятно полезно, поскольку позволило мне использовать тип для простой рекурсии ( Fix Expr ) и еще один,...
202 просмотров
schedule
22.09.2023
Демонстрация взаимосвязи между 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 просмотров
schedule
10.05.2023
Как решить эту ошибку косвенной рекурсии?
#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 просмотров
schedule
09.05.2023
Могу ли я написать «foldr» (или «foldMap») в терминах «схем рекурсии» «cata»?
Недавно я читал о схемах рекурсии , где катаморфизмы описываются как аналоги обобщенных foldr .
Можно ли записать экземпляр Foldable (через foldr или foldMap ) в терминах cata во всех случаях?
244 просмотров
schedule
20.03.2024
Схема рекурсии для символьного дифференцирования
Следуя терминологии из этой замечательной серии , давайте представим такое выражение, как (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