Size: a a a

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

2020 May 25

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Андрей Оськин
То есть либо в какой-нибудь enumerate оборачивать и тогда копия будет в потенциально другом порядке писаться, либо итератор должен возвращать значение и индекс.
опять Ruby-пример
> i1 = (1..1/0.0).lazy.select(&:even?)
=> #<Enumerator::Lazy: #<Enumerator::Lazy: 1..Infinity>:select>
> i2 = i1.clone
=> #<Enumerator::Lazy: #<Enumerator::Generator:0x00007fc7ae82c670>:each>
> a1 = i1.take(5).to_a
=> [2, 4, 6, 8, 10]
> a2 = i2.take(5).to_a
=> [2, 4, 6, 8, 10]
> a2 = i2.take(5).to_a
=> [2, 4, 6, 8, 10]

> i1
=> #<Enumerator::Lazy: #<Enumerator::Lazy: 1..Infinity>:select>
> i2
=> #<Enumerator::Lazy: #<Enumerator::Generator:0x00007fc7ae82c670>:each>
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
с порядком значений в итераторах всё в порядке
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Да, это красиво.
Хороший lazy итератор/transducer/whatever наверное и правда не помешал бы.

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

RS

Roman Samarev in Язык программирования Julia / Julia programming language
я хочу летом добраться до проблемы потоковой обработки данных на Julia. Заодно поковырять transducer…
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
можно даже попробовать приделать ещё один тест к https://github.com/yahoo/streaming-benchmarks
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
блин ntuple просто жесть жестяная, почему там постоянно нестабильность типов
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
есть кортеж функций funs
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
funs[i](x) он нормально тип выводит для каждого i
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
просишь ntuple(i -> funs[i](v), Val{N}()) — лезет откуда-то Tuple{Any}
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
julia> funs = (x -> x^2, x -> x^3)
(var"#14#16"(), var"#15#17"())

julia> @code_warntype ntuple(i -> funs[i](1), Val(2))
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
Body::Tuple{Any,Any}
1 ─      nothing
│   %2 = (f)(1)::Any
│   %3 = (f)(2)::Any
│   %4 = Core.tuple(%2, %3)::Tuple{Any,Any}
└──      return %4
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
я уже вопрос по ntuple наверное в десятый раз задаю ))
источник

АО

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

АО

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

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
@code_warntype ntuple(i -> funs[i](1)::Int, Val(2))
источник

АО

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

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
почему для каждой из funs он может вывести тип
источник

АО

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

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
а в целом для tuple не в состоянии
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Потому что для каждой отдельной функции он по сути в рантайме определяет.
Что и указывает тем, что возвращаемый тип Any
источник