Size: a a a

Compiler Development

2020 January 10

AK

Andrei Kurosh in Compiler Development
а питон умеет встроенными средствами трансформировать лямбду в AST? по аналогии с тем, как в сишарпе компилятор умеет из Func<T> генерировать Expression<Func<T>>
источник

А

Алексей in Compiler Development
Andrei Kurosh
а питон умеет встроенными средствами трансформировать лямбду в AST? по аналогии с тем, как в сишарпе компилятор умеет из Func<T> генерировать Expression<Func<T>>
ну это что-то совсем круто
источник

YS

Yuriy Syrovetskiy in Compiler Development
Andrei Kurosh
а питон умеет встроенными средствами трансформировать лямбду в AST? по аналогии с тем, как в сишарпе компилятор умеет из Func<T> генерировать Expression<Func<T>>
извлечь исходный код или сгенерить выражение-вызов?
источник

А

Алексей in Compiler Development
хотя вроде есть к примеру numba
источник

JC

Julian =) Coffee in Compiler Development
ну декораторы точно есть
источник

А

Алексей in Compiler Development
где вешаешь декоратор и тебе функция jit-ится как-то хитро
источник

JC

Julian =) Coffee in Compiler Development
Да и ничего не мешает просто вернуть функцию от лямбды
источник

AK

Andrei Kurosh in Compiler Development
Yuriy Syrovetskiy
извлечь исходный код или сгенерить выражение-вызов?
в шарпе это используется для ORM: можно один и тот же запрос применить к обычному массиву данных и к SQL-базе, и в первом случае он просто выполнится на клиенте, а во втором будет транслирован в SQL и выполнен на сервере
источник

YS

Yuriy Syrovetskiy in Compiler Development
Andrei Kurosh
в шарпе это используется для ORM: можно один и тот же запрос применить к обычному массиву данных и к SQL-базе, и в первом случае он просто выполнится на клиенте, а во втором будет транслирован в SQL и выполнен на сервере
то есть извлечь исходный код?
источник

AK

Andrei Kurosh in Compiler Development
типа foo.Where(x => x.A == 1).OrderBy(x => x.B)
источник

VK

Vladimir Kazanov in Compiler Development
Andrei Kurosh
а питон умеет встроенными средствами трансформировать лямбду в AST? по аналогии с тем, как в сишарпе компилятор умеет из Func<T> генерировать Expression<Func<T>>
в питоне есть модуль ast, который всякое позволяет делать, связанное с деревом. Есть дерево - можно трансформировать
источник

YS

Yuriy Syrovetskiy in Compiler Development
Andrei Kurosh
в шарпе это используется для ORM: можно один и тот же запрос применить к обычному массиву данных и к SQL-базе, и в первом случае он просто выполнится на клиенте, а во втором будет транслирован в SQL и выполнен на сервере
в Хаскеле для этого полиморфизм используют
источник

VK

Vladimir Kazanov in Compiler Development
Andrei Kurosh
типа foo.Where(x => x.A == 1).OrderBy(x => x.B)
такое точно можно
источник

YS

Yuriy Syrovetskiy in Compiler Development
In [1]: d = lambda x: 2 * x

In [6]: inspect.findsource(d)
Out[6]: (['d = lambda x: 2 * x\n'], 0)

что-то не то
источник

AK

Andrei Kurosh in Compiler Development
ну как вариант, но это просто текстовый исходник
источник

AK

Andrei Kurosh in Compiler Development
чтобы с ним что-то делать, его сначала придется заново распарсить
источник

А

Алексей in Compiler Development
там есть работа с ast
источник

А

Алексей in Compiler Development
вроде можно и распарсить питоном любой код в рантайме
источник

А

Алексей in Compiler Development
и скомпилировать, а потом достать байткод тоже
источник

AK

Andrei Kurosh in Compiler Development
Алексей
вроде можно и распарсить питоном любой код в рантайме
есть подозрение, что в таком случае потеряются замыкания
источник