Size: a a a

Язык программирования Julia / Julia programming language

2020 March 19

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
надо исходники смотреть, как они сами-то смогли ntuple сделать type-stable
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Скорее всего какая-то магия 😊
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
а если я знаю, что у меня аргумент типа NTuple{N, T}, то как подсказать компилятору, что нечто будет типа N-1, T ?
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Так можно прямо так и заннотировать
x::NTuple{N, T} = ...
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
да, а как сделать из N -> N - 1
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
?
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Написать N-1? Или не работает?
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
неа )
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Разумеется компилятору это мало поможет, так как вычисляется динамически
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
хм
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
а может и работает
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Скорее всего надо на более общую проблему смотреть.

Но формально это можно решить через производящие функции, хотя на их использование сильно ругаются.
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
вроде code_warntype синим стал, спасибо, странно что я нашел ранее ситуацию, где не работало, но уже не вспомню
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
ntuple почему-то не всегда срабатывает у меня
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
например, когда я на каждом шаге применяю свою функцию
(i -> f[i](x), n)
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
в этом случае он вывести почему-то не в состоянии, хотя нормально выводит тип каждого из f[i](x)
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
и пришлось руками писать, что тип там NTuple{...} ( ... )
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Наверное потому что это замыкание получилось
источник
2020 March 20

ВФ

Виктор Федоров in Язык программирования Julia / Julia programming language
А вот можно еще и так удалить элемент (4-й, например) из NTuple:

a=ntuple(i->i*i, 9)
(1, 4, 9, 16, 25, 36, 49, 64, 81)

b=(a[1:3]...,a[5:end]...)
(1, 4, 9, 25, 36, 49, 64, 81)
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Можно, но эта штука не является type stable и как следствие работает немного медленнее.

Хотя, если честно, я в целом согласен: если данное конкретное место не является критически важным по скорости, то такой подход лучше, потому что намного читабельнее.
источник