LINUX.ORG.RU
Ответ на: комментарий от Int0l

Я же уже говорил что не очевидно. Почему именно из eval?

turtle_bazon ★★★★★
()
Ответ на: комментарий от Int0l

Задача получить доступ к локальным переменным из eval. Что тут не очевидного?

Передавать их явно. Что не так?

yyk ★★★★★
()
Ответ на: комментарий от Int0l
(def ^:dynamic x)

(binding [x 5]
  (load-string "(println x)"))

Вот так будет работать. С динамической переменной. Только всё равно вопрос - зачем? Какая другая цель преследуется этой?

turtle_bazon ★★★★★
()
Ответ на: комментарий от turtle_bazon

Ну вот допустим у меня есть лексический контекст в котором много переменных.
И мне захотелось его поотлаживать, подергать функции этих переменных.
Писать биндиндинги и дефы в топ лвл мне не захотелось.

Int0l ★★
() автор топика
Ответ на: комментарий от unlog1c

Молодец. Теперь покажи мне в этой портянке локальную переменную «х». Естественно, из портянки должно быть понятно, что ее имя - «х» (иначе как ты собрался евалить внутри локального контекста)?

anonymous
()
Ответ на: комментарий от Int0l

Лексических переменных при запуске программы нет. Рантайм о них ничего не знает, конец истории.

anonymous
()
Ответ на: комментарий от unlog1c

Я не говорил про inlining, так что утрись, свинья.

anonymous
()
Ответ на: комментарий от unlog1c

Ну и где у тебя тут переменная «x», уебанец? Тут пронумерованный слот в стеке.

И почему ты показываешь такой промежуточный IR, от которого во время выполнения уже давно ничего не останется? Показывай выхлоп дизассемблера после JIT.

anonymous
()
Ответ на: комментарий от Int0l

А в clojure они есть и их можно юзать.

Не пизди, грязное уебище.

anonymous
()
Ответ на: комментарий от anonymous

Компиляция в байт код это абстракция более низкого уровня. Которая зависит от компилятора.

Int0l ★★
() автор топика
Ответ на: комментарий от Int0l

Ты запредельно ебанутая свинячья отрыжка. Нет здесь никакого x во время исполнения. Во время исполнения есть регистр CPU, а никакой информации о том, что когда-то была некая переменная «x» не сохранилось.

anonymous
()
Ответ на: комментарий от anonymous

Если продолжать твое ошибочную идею. То можно сказать что нет ни каких регистров CPU. А есть лишь проводники по которым идет ток.
Но у меня мозг пока еще не так деградировал как у тебя и я это говорить не будут.

Int0l ★★
() автор топика
Ответ на: комментарий от Int0l

Ну вот допустим у меня есть лексический контекст в котором много переменных.

А чем тут eval поможет?

turtle_bazon ★★★★★
()
Ответ на: комментарий от Int0l

Можно пример?

Пример чего? Где твой код? Где пример входных данных? Где вообще хоть что-нибудь?

Ну например

(my-mega-eval (hasheq 'x 3 'y 4) "x + y") ; => 7

В чем проблема?

korvin_ ★★★★★
()
Ответ на: комментарий от korvin_

К сожалению у меня ваш код не выполняется. Вы уверены что он на clojure?

Int0l ★★
() автор топика
Ответ на: комментарий от Int0l

Ебанутый ты выпездок, повторяю для тупой грязной блядвы, никакой *информации* о существовании переменной x и о ее области видимости в момент вызова eval нет и быть не может. Про регистр я тоже напиздел - внутри вызова eval уже даже того значения регистра ее будет.

anonymous
()
Ответ на: комментарий от Int0l

Что ты, шизофреник ебанутый, можешь знать о реальности?

anonymous
()
Ответ на: комментарий от Int0l

Этот пример доказывает обратное.

Что обратное? Как это пример доказывает что х существует во время рантайма, а не инлайнится?

anonymous
()
Ответ на: комментарий от Int0l

Ты не понял. Есть определенный стандарт виртуальной машины, и этот стандарт тебе не гарантирует наличие переменных после компиляции. Ты можешь, конечно, попытаться написать такой евал с передачей локального контекста - но его запуск будет undefined behavior. Кроме того, доподлинно известно, что все распространенные вм джавы такой хуйни не поддерживают. А поддерживают только еще не написанные вм существующие только в твоих фантазиях.

anonymous
()
Ответ на: комментарий от Int0l

Ну так ты можешь привести пример реализации джавы, в котором после компиляции контекст остается?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.