Описание тега trampolines

Метод имитации (или увеличения) переходов / вызовов функций с помощью настраиваемой диспетчеризации. Одного батута достаточно, чтобы выразить все передачи управления программой.
0 ответов

Как отличить импортированную функцию от импортированной глобальной переменной в PE-заголовке DLL?

Я пишу небольшой инструмент, который должен иметь возможность проверять произвольный интересующий процесс и проверять, были ли трамплины какие-либо из его статически связанных функций. (Примером батута может быть то, что Microsoft Detours делает с п…
1 ответ

Как написать функции анализатора / оценки, такие как `eval-if`, в форме CPS?

Я пытаюсь написать игрушечный интерпретатор Python Scheme, основанный на мета-циклическом оценщике в SICP. Поскольку python поддерживает только стек вызовов ограниченной глубины, я должен исключить хвостовые вызовы. Я читал о батутах и ​​реализовал …
15 фев '12 в 05:37
1 ответ

Функция экспорта должна быть установлена ​​как чистая функция

В следующем фрагменте кода батута я буду звонитьonclick = export(add,5) от моей кнопки присутствует на мой взгляд. Как мне убедиться, что этот вызов всегда возвращает значение 5 без раскомментирования строки, где //x=0 в коде ниже? var x = 0; functi…
07 май '17 в 05:55
3 ответа

Аппликативные против монадических комбинаторов и свободная монада в Скалазе

Пару недель назад Dragisa Krsmanovic задал вопрос о том, как использовать свободную монаду в Scalaz 7, чтобы избежать переполнения стека в этой ситуации (я немного адаптировал его код): import scalaz._, Scalaz._ def setS(i: Int): State[List[Int], Un…
1 ответ

Переадресация обратного вызова из C++ в ObjC

Я встраиваю движок C++ в проект ObjC iOS, используя.mm (ObjC++). // consumer.m Wrapper* wrapper = ...; [wrapper setupWithTarget: self selector: @selector(gotData:)]; -(void) gotData: (int) k {...} //wrapper.mm @interface Wrapper() { id targ; SEL sel…
7 ответов

Что такое функция батута?

Во время недавних обсуждений на работе кто-то упомянул батутную функцию. Я прочитал описание в Википедии. Достаточно дать общее представление о функциональности, но я бы хотел кое-что более конкретное. У вас есть простой фрагмент кода, который будет…
1 ответ

Что означают "Батуты во время выполнения" в Замечаниях по выпуску MonoTouch 6.0.8?

В примечаниях к выпуску MonoTouch 6.0.8 говорится: Батуты во время выполнения: больше нет необходимости вручную управлять батутами во время выполнения Mono, батуты теперь обрабатываются динамически. Что это значит? Как вы вручную управляете батутам…
19 дек '12 в 00:17
1 ответ

Код единства батута не работает

Поэтому я пытаюсь создать реалистичный прыжок на батуте, вместо того, чтобы игрок провалился через батут, а затем выстрелил назад, одновременно позволяя игроку мгновенно выстрелить при контакте с батутом и снизить относительную гравитацию. Куда я ид…
19 фев '14 в 17:14
2 ответа

Почему функция return/redo оценивает функции результата в контексте вызова, а результаты блока не оцениваются?

Прошлой ночью я узнал о параметре /redo, когда вы return из функции. Это позволяет вам вернуть другую функцию, которая затем вызывается на вызывающем сайте и повторно вызывает оценщик из той же позиции. >> foo: func [a] [(print a) (return/redo…
2 ответа

Дизайн шаблона для исключительных безопасных батутов

Этот вопрос следует отсюда. Тем не менее, предыдущий вопрос был сформулирован настолько плохо (на самом деле неправильно), что было предложено задать вопрос с нуля. У меня есть таблица указателей на C-функции. В некотором C-коде (назовем его lib-X) …
07 янв '15 в 18:26
1 ответ

Как сделать функцию Hook and Trampoline в одном для перехвата WinAPI

Итак, я изучал концепцию перехвата и использования трамплинов для обхода / выполнения данных в функции перехвата WinAPI (в другом исполняемом файле с использованием внедрения DLL). До сих пор я знаю, как сделать это (батут и крюк), используя смесь с…
11 июл '17 в 19:26
2 ответа

Как использовать TailCalls?

Если я правильно понимаю, scala.util.control.TailCalls может использоваться, чтобы избежать переполнения стека для нерекурсивных функций с помощью батута. Пример, приведенный в API, прост: import scala.util.control.TailCalls._ def isEven(xs: List[In…
13 дек '10 в 12:34
1 ответ

Почему вложенные FlatMaps могут взорвать стек в Scala?

Я изучаю трюк с батутом в Скале, читая эту статью Рунара Бьярнасона " Безжизненная скала со свободной монадой". Но я застрял в разделе 4.3 "Легко ошибиться". Меня смущает то, как f(x) может напрямую вызвать другой внутренний вызов, учитывая FlatMap(…
0 ответов

Как создать хороший универсальный API для построения строк?

В наших приложениях мне часто нужно загружать изображения для таких элементов пользовательского интерфейса, как кнопки. Есть несколько вариантов каждого изображения, например, пейзаж / портрет, отключено / включено, нажата / обычная и даже цвета, та…
07 май '12 в 09:28
1 ответ

Батут как функтор

Я пытаюсь продемонстрировать Батут [+A] как Функтор (т. Е. Предоставляет карту [B](f: A = >B)). Я понимаю классическую реализацию батута как монады, описанную в Stackless Scala. Однако, есть ли способ реализовать функцию карты (а не flatMap) только …
3 ответа

Каковы некоторые хорошие способы реализации исключения хвостовых вызовов?

Я написал небольшой интерпретатор Scheme в безобразной смеси C/C++, но мне еще предстоит реализовать правильные хвостовые вызовы. Я знаю о классическом Чейни о алгоритме MTA, но есть ли другие хорошие способы реализации этого? Я знаю, что мог бы пом…
1 ответ

Стиль передачи продолжения против агрессивно урезанного стека вызовов?

Я рассматриваю что-то вроде CPS для использования в качестве переводчика для актерского языка. Аргументы функции передаются в массиве вариантов, а продолжение возвращается в том же массиве, поэтому простая функция def add (x,y) => x + y поэтому в…
06 фев '09 в 16:42
1 ответ

Как создать батутную функцию для крючка

Я заинтересован в подключении, и я решил посмотреть, смогу ли я подключить некоторые функции. Я не был заинтересован в использовании библиотеки как обходной путь, потому что я хочу иметь опыт делать это самостоятельно. С некоторыми источниками, кото…
17 фев '12 в 19:57
2 ответа

MonoTouch SIGABRT Ошибка "Закончились батуты типа 2"

При запуске приложения MonoTouch на нативном устройстве (iPad) появляется ошибка SIGABRT / закончились батуты. Это происходит довольно рано в моем приложении - я создаю раздел, используя MonoTouch.Dialog. ItemTypeRadio = new RootElement ("Type", new…
19 фев '12 в 23:28
1 ответ

JSON.NET: Не работает с MonoTouch "Закончились батуты типа 2 "

Я пробовал JSON.NET и порт MonoTouch по адресу https://github.com/ayoung/Newtonsoft.Json но получаю эту ошибку сериализации: Ran out of trampolines of type 2 in '/private/var/mobile/Applications/A901C3E6-D9AB-44AF-AA13-6B6E44467BAE/StaffRostering.ap…
03 авг '12 в 04:26