Описание тега tying-the-knot

Tying the knot is a technique in which you can create circular data structures in the absence of mutation by referencing a yet to be produced value.
1 ответ

Летрек в Скала? (Неизменный способ "завязать узел?")

Предположим, у меня есть глупый маленький класс case, например: case class Foo(name: String, other: Foo) Как я могу определить a а также b неизменно так, что a.other является b, а также b.other является a? Предоставляет ли scala какой-либо способ "з…
06 июн '12 в 00:26
1 ответ

Есть ли какой-нибудь способ удобного способа выразить графики, используя стратегию связывания узлов?

Как объяснялось в моем предыдущем вопросе, невозможно различить два графика, построенных с использованием стратегии связывания узлов, если у вас нет какой-то уникальной метки на ваших узлах. Используя двухсторонний график в качестве примера: data No…
16 окт '15 в 00:09
3 ответа

Можно ли выполнить поиск на графике, построенном по стратегии связывания узлов?

Стратегия привязки к узлу может быть использована для построения графиков, например, используя простой двусторонний граф в качестве примера: data Node = Node Node Node -- a - b -- | | -- c - d square = a where a = Node b c b = Node a d c = Node a d …
15 окт '15 в 22:47
3 ответа

Почему "итерация" из прелюдии не завязывает узел?

Почему нет iterate определяется как iterate :: (a -> a) -> a -> [a] iterate f x = xs where xs = x : map f xs в прелюдии?
20 июн '15 в 01:39
4 ответа

Самостоятельная ссылка в структуре данных - Проверка на равенство

В моей первоначальной попытке создания структуры данных с непересекающимся множеством я создал Point тип данных с parent указатель на другой Point: data Point a = Point { _value :: a , _parent :: Point a , _rank :: Int } Чтобы создать одноэлементный…
06 авг '13 в 10:20
3 ответа

Взаимно рекурсивный оценщик в Хаскеле

Обновление: я добавил ответ, который описывает мое окончательное решение (подсказка: единственный Expr Тип данных не было достаточно). Я пишу оценщик для небольшого языка выражений, но я застрял на LetRec построить. Это язык: type Var = String type …
5 ответов

Завязывание узла с государственной монадой

Я работаю над проектом на Haskell, который включает в себя завязывание большого узла: я анализирую сериализованное представление графа, где каждый узел находится в некотором смещении в файле и может ссылаться на другой узел по смещению. Поэтому мне …
16 июн '12 в 03:34
1 ответ

Исправление рекурсивно определенного списка без << цикла >>

контекст Мы все знаем рекурсивно определенную последовательность Фибоначчи: fibs = 1 : 1 : zipWith (+) fibs (tail fibs) λ&gt; fibs [1,1,2,3,5,9,13,21,34,55,89... Вопрос Я пытаюсь "залатать" его в нескольких местах, чтобы: общее рекурсивное уравнение…
31 дек '18 в 15:22
0 ответов

Haskell: обработка циклических зависимостей при завязывании узла

При написании языка программирования, который будет иметь локальный вывод типов (т. Е. Он будет способен выводить типы за исключением параметров функций, таких как Scala), я столкнулся с проблемой циклических зависимостей. Я выполняю проверку / выво…
1 ответ

Ошибка в реализации Data.Map?

Я наткнулся на что-то, что я думаю, это ошибка в Data.Map, но это также вполне возможно ошибка в моих знаниях Haskell. Надеюсь, кто-нибудь может уточнить, что это такое:) Пожалуйста, обратитесь к этой сути. Я сериализую структуру кругового связанног…
24 июн '12 в 19:28
0 ответов

Как сохранить нативную структуру циклического списка во время преобразований в Haskell?

Я изучаю графоподобные вещи в Хаскеле, используя технику "связывания узла". Полагаю, циклические списки - это просто внутренняя реализация бесконечного списка, поэтому в идеальном мире не нужно заботиться о subj. Но это может оказать существенное вл…
1 ответ

Связывание узла на взаимно рекурсивных ADT с хорошо типизированной обработкой ошибок

(Примечание: этот пост является файлом грамотного языка Haskell. Вы можете скопировать и вставить его в текстовый буфер, сохранить его как someFile.lhsи затем запустите его, используя ghc.) Описание проблемы: я не хочу создавать граф с двумя различн…
1 ответ

Эквациональное рассуждение с завязыванием узла

Я пытаюсь обернуть голову вокруг Cont и callCC, уменьшив эту функцию: s0 = (flip runContT) return $ do (k, n) &lt;- callCC $ \k -&gt; let f x = k (f, x) in return (f, 0) lift $ print n if n &lt; 3 then k (n+1) &gt;&gt; return () else return () Мне у…
2 ответа

Как вы строите бесконечную сетку, подобную структуре данных в Haskell?

Я пытаюсь сформировать бесконечную сетку, подобную структуре данных, связывая узел. Это мой подход: import Control.Lens data Grid a = Grid {_val :: a, _left :: Grid a, _right :: Grid a, _down :: Grid a, _up :: Grid a} makeLenses ''Grid makeGrid :: G…
18 окт '17 в 15:27
1 ответ

Функциональная Жемчужина: Реализация трассировки в JavaScript

Росс Патерсон: " Стрелки и вычисления" trace функция (на стр. 11): trace :: ((a, c) -&gt; (b, c)) -&gt; a -&gt; b trace f a = let (b, c) = f (a, c) in b trace Функция полезна для модуляции шага магической обратной связи в круговых программах. Наприм…
1 ответ

Какие-нибудь методы для восстановления достаточно лени, чтобы связать себя узами монады?

Я хочу написать небольшой кусочек кода (сэкономив мне много времени для реализации в противном случае), связав узел. Это примерно так, n &lt;- myinstr n x где в теории, myinstr должен бежать x получить значение, которое станет n, myinstr, который ра…
05 дек '11 в 00:41
2 ответа

Объяснение "завязывания узла"

Читая материал, связанный с Хаскеллом, я иногда сталкиваюсь с выражением "завязывать узел", думаю, я понимаю, что он делает, но не как. Итак, есть ли хорошие, простые и простые для понимания объяснения этой концепции?
4 ответа

Лениво связывая узел для 1-мерного динамического программирования

Несколько лет назад я прошел курс алгоритмов, где мы давали следующую задачу (или такую): Есть здание n этажи с лифтом, который может подниматься только на 2 этажа одновременно и на 3 этажа одновременно. Используя динамическое программирование, напи…
1 ответ

Неисчерпывающие паттерны в вспомогательной функции для завязывания узла

Я пытаюсь написать функцию в Haskell, которая берет таблицу и дополняет ячейки каждого столбца в соответствии с максимальным размером строки в этом столбце. Я делаю это, используя технику - завязывая узел. Вот функция, которую я написал: type Row = …
15 сен '15 в 09:32
2 ответа

Бирекурсивное определение дважды бесконечного списка списков

контекст Я спросил о исправлении рекурсивно определенного списка на днях. Сейчас я пытаюсь поднять его до уровня, используя вместо этого 2D-список (список списков). Я буду использовать треугольник Паскаля в качестве примера, как, например, этот кра…
08 янв '19 в 17:06