Описание тега tail-call-optimization
Оптимизация хвостового вызова - это когда функция возвращает непосредственно результат вызываемой функции, чтобы избежать выделения нового кадра стека. Это особенно полезно в рекурсивных функциях.
1
ответ
Каково текущее состояние оптимизации хвостового вызова для F# на Mono (2.11)?
Каково текущее состояние реализации Tail Call Optimization (TCO) в Mono (2.11)? Где-то читал, что вся кодовая база должна быть изменена для использования соглашения callee-pops-arguments. Каков статус этого изменения? Актуален ли порт ARM/Linux по э…
07 мар '12 в 03:53
3
ответа
Хвостовая рекурсия в NodeJS
Так что недавно я столкнулся с вопросом о том, что мне нужно написать код, где сам обратный вызов вызывает и так далее, и задался вопросом о NodeJS и поддержке tail-call, поэтому я нашел этот ответ /questions/7907762/optimizatsiya-hvostovogo-vyizova…
15 янв '17 в 21:54
3
ответа
Булевы операторы хвостового вызова оптимизированы?
Изучая Racket и изучая программирование в целом, я определял ormap двумя различными способами: (define (or-map proc lst) (cond [(null? lst) #false] [(proc (car lst)) #true] [else (or-map proc (cdr lst))])) (define (or-map proc lst) (if (null? lst) #…
14 сен '15 в 16:13
2
ответа
Оптимизация хвостовой рекурсии и рекурсия в Java
У меня есть вопрос об оптимизации хвостовых вызовов, мне нужно знать, как ведет себя этот код Java: private void doSomething(int v) { inf f = someCalculation(v); if (f < 0) doSomething(v/2); else doSomething(v*2); } Этот код является бессмысленны…
23 фев '15 в 09:43
2
ответа
Хвостовая рекурсия с Groovy
Я кодировал 3 факторных алгоритма: Во-первых, я ожидаю провала из-за переполнения стека. Нет проблем. Во-вторых, я пытаюсь вызвать рекурсивный вызов, преобразовать предыдущий алгоритм из рекурсивного в итерационный. Это не работает, но я не понимаю …
10 сен '11 в 21:42
2
ответа
Гарантия оптимизации хвоста - циклическое кодирование в Haskell
Итак, короткая версия моего вопроса такова: как мы вообще должны кодировать циклы в Haskell? В Haskell нет гарантии оптимизации хвоста, паттерны взрыва даже не являются частью стандарта (верно?), И парадигма фолд / фолд не гарантируется в любой ситу…
05 фев '12 в 12:21
2
ответа
Устраняет ли Xcode для iPhone рекурсию хвостового вызова?
Поддерживает ли Xcode оптимизацию хвостового вызова на iPhone?
23 июн '09 в 23:37
2
ответа
Это хвостовой вызов? (Javascript)
Предположим, у вас есть рекурсивная функция, такая как: Blah.prototype.add = function(n) { this.total += n; this.children.forEach(function(child) { child.add(n); }); }; Это child.add() хвостовой вызов? Если нет, то можно ли так написать?
09 июн '15 в 21:16
5
ответов
У программ на функциональных языках более вероятно переполнение стека?
Я начинаю изучать ocaml, и я действительно ценю силу рекурсии в языке. Однако меня беспокоит одна вещь - переполнение стека. Если ocaml использует стек для вызовов функций, не будет ли он переполнен стеком? Например, если у меня есть следующая функц…
18 авг '09 в 01:52
1
ответ
Исключение рекурсивного хвостового вызова для разложения квадри в Python
Используя Python, возможно ли исключить множественные рекурсивные хвостовые вызовы (преобразование в итерацию) в реализации квадродерева, которая присваивает точки (X, Y) поддоменам (так называемые листовые узлы)? Вот не такой уж псевдокод: def deco…
30 июн '15 в 16:35
5
ответов
Объясните мне, в чем заключается проблема оптимизации хвостового вызова и зачем она нужна Python
Очевидно, что возникла серьезная проблема с тем, нуждается ли Python в оптимизации хвостового вызова. Это пришло в голову, когда кто-то отправил Гвидо копию SICP, потому что он "не получил". Я в той же лодке, что и Гвидо. Я понимаю концепцию оптимиз…
20 май '09 в 21:55
2
ответа
Оптимизация вызова хвоста помимо хвостовой рекурсии?
Возможна ли какая-либо оптимизация хвостового вызова, кроме хвостовой рекурсии? Я пытался найти или подумать о том, что не связано с рекурсией, но безуспешно. Является ли это возможным? Есть примеры?
03 авг '13 в 18:55
1
ответ
Как изменить этот код для включения оптимизации хвостового вызова в ES6?
Я написал функцию для рекурсивного суммирования значений, но она не соответствует критериям оптимизации хвостового вызова в ES6 (по причинам, которые я не могу сформулировать). function sum(...values) { if(!values.length) { return 0; } return values…
15 апр '15 в 14:10
2
ответа
Почему scala не выполняет оптимизацию хвостовых вызовов?
Просто играю с продолжениями. Цель состоит в том, чтобы создать функцию, которая получит другую функцию в качестве параметра и количества выполнения - и функцию возврата, которая будет применять параметр заданное количество раз. Реализация выглядит …
14 май '13 в 09:24
1
ответ
Почему это вызов?
Вот простой привет мир: #include <stdio.h> int main() { printf("hello world\n"); return 0; } Вот это скомпилировано в LLVM IR: will@ox:~$ clang -S -O3 -emit-llvm ~/test_apps/hello1.c -o - ; ModuleID = '/home/will/test_apps/hello1.c' target dat…
03 сен '15 в 16:13
5
ответов
Функция добавления списка версий хвостовой рекурсии
Я вижу несколько примеров реализации append элемент списка, но все не используют хвостовую рекурсию. Как реализовать такую функцию в функциональном стиле? (define (append-list lst elem) expr)
06 ноя '12 в 16:55
2
ответа
Насколько ограничен повтор?
Насколько я могу судить, Clojure's recur поддерживается компилятором, тогда как в других lisps он реализован на более низком уровне. Пока я читаю, это не будет "общая" стоимость владения. Помимо очевидного (нужно ключевое слово + проверка), это ника…
16 апр '12 в 05:21
2
ответа
System.OutOfMemoryException для хвостовой рекурсивной функции
Я выделил проблемный код для этой функции (которая использует класс Membership ASP.NET): let dbctx = DBSchema.GetDataContext() let rec h1 (is2_ : int) (ie2_ : int) : unit = match is2_ >= ie2_ with | true -> let st2 = query { for row in dbctx.T…
14 янв '13 в 16:54
2
ответа
CIL (MSIL) рекурсия хвостового вызова в методах экземпляра
Фон: я программирую компилятор.NET (очень похожий на C#) для школьного проекта. Одна из возможностей, которую я сейчас пытаюсь добавить, - это рекурсия хвостового вызова в методах. Дополнительная информация: В CIL "this" передается в методы экземпля…
08 фев '12 в 23:40
2
ответа
Есть ли техническая причина, по которой C# не выдает "хвост". Инструкция CIL?
Возможный дубликат: Почему.net/C# не устраняет хвостовую рекурсию? Возьмите следующий код C#: using System; namespace TailTest { class MainClass { public static void Main (string[] args) { Counter(0); } static void Counter(int i) { Console.WriteLine…
17 авг '11 в 16:17