Описание тега tailrecursion-modulo-cons
Tail recursion modulo cons is similar to ordinary tail recursion, except that the recursive call is wrapped in a tail call to a constructor, which can be allocated and partially filled in _before_ the recursive call which thus becomes tail.
2
ответа
Объяснение алгоритма Пролог для добавления двух списков вместе
Это алгоритм для добавления двух списков: Domains list= integer* Predicates nondeterm append(list, list, list) Clauses append([], List, List) :- !. append([H|L1], List2, [H|L3]) :- append(L1, List2, L3). Goal append([9,2,3,4], [-10,-5,6,7,8], Ot). Р…
16 май '12 в 13:50
2
ответа
F# PurelyFunctionalDataStructures WeightBiasedLeftistHeap ex 3.4
Я работаю над чисто функциональными структурами данных Окасаки и пытаюсь построить реализацию F# вещей. Я также выполняю упражнения, перечисленные в книге (некоторые довольно сложные). Ну, я застрял в упражнении 3.4, которое вызывает изменение функц…
13 июн '11 в 16:17
5
ответов
Функция добавления списка версий хвостовой рекурсии
Я вижу несколько примеров реализации append элемент списка, но все не используют хвостовую рекурсию. Как реализовать такую функцию в функциональном стиле? (define (append-list lst elem) expr)
06 ноя '12 в 16:55
3
ответа
Будет ли этот код на Haskell занимать слишком много памяти?
Как в этом коде: import Data.Char groupsOf _ [] = [] groupsOf n xs = take n xs : groupsOf n ( tail xs ) problem_8 x = maximum . map product . groupsOf 5 $ x main = do t <- readFile "p8.log" let digits = map digitToInt $concat $ lines t print $ pr…
25 ноя '11 в 23:46
4
ответа
Как можно объединить две строки, которые расположены в алфавитном порядке в LISP с помощью рекурсии
Я учу Лисп. Я реализовал общую функцию lisp, которая объединяет две строки, которые упорядочены в алфавитном порядке с использованием рекурсии. Вот мой код, но что-то не так, и я не понял этого. (defun merge (F L) (if (null F) (if (null L) F ; retur…
24 апр '12 в 19:30
2
ответа
Схема хвостовой рекурсии
Я пытаюсь создать схему хвостовой рекурсивной функции flatten-tl-rec, которая сглаживает вложенный список списков. (define flatten-tl-rec (lambda (xs) (letrec ([flatten-tl-rec-acc (lambda (xs acc) (cond ((empty? xs) acc) ((list? (first xs)) (flatten…
19 фев '13 в 02:03
2
ответа
Хвост-рекурсивный ограниченный поток пар целых чисел (Scala)?
Я очень новичок в Scala, так что прости мое невежество! Я пытаюсь перебрать пары целых чисел, которые ограничены максимумом. Например, если максимум равен 5, то итерация должна вернуть: (0, 0), (0, 1), ..., (0, 5), (1, 0), ..., (5, 5) Я решил попроб…
09 май '12 в 23:15
5
ответов
Сложности во время выполнения для рекурсивных алгоритмов
Я искал высоко и низко и не могу найти много материала, связанного со сложностями во время выполнения, рекурсией и Java. В настоящее время я изучаю сложности времени выполнения и нотацию Big-O в моем классе Algorithms, и у меня возникают проблемы с …
02 мар '12 в 21:34
4
ответа
Стоит ли избегать хвостовой рекурсии в Прологе и вообще?
Я работаю над онлайн-книгой "Learn Prolog now" для удовольствия. Я пытаюсь написать предикат, который проходит через каждого члена списка и добавляет один к нему, используя аккумуляторы. Я уже сделал это легко без хвостовой рекурсии. addone([],[]). …
31 дек '12 в 02:00
1
ответ
Почему можно оптимизировать Tail Recursion Modulo Cons?
Например, это не хвостовой вызов: map _ [] = [] map f (x : xs) = f x : map f xs рекурсивный вызов охраняется (:)конструктор данных, поэтому он не будет создавать огромный стек, как это может сделать эквивалент на каком-то другом языке. Это работает …
01 мар '20 в 14:57
0
ответов
Хвостовая рекурсия с монадами State и CPS?
Я занимаюсь созданием простой библиотеки синтаксического анализа в Haskell, которая компилирует спецификацию синтаксического анализатора в оптимизированный код с использованием Template Haskell. Однако я пытаюсь выяснить, какой код наиболее эффектив…
17 авг '21 в 15:07