Я не уверен, почему он сообщает об ошибке для -
, но причина довольно проста.
julia> (x[i] for i in 1:4)
Base.Generator{UnitRange{Int64},var"#5#6"}(var"#5#6"(), 1:4)
Это генератор, вы можете перебирать его; вы можете collect
его в список (с каким-то макетом x
для демонстрации):
julia> x = rand(4);
julia> collect(x[i] for i in 1:4)
4-element Array{Float64,1}:
0.82205289980846
0.1753822661463882
0.3134638596396617
0.24751968827319581
Но, конечно, нет смысла сравнивать генератор с целым числом:
julia> (x[i] for i in 1:4) >= 0
ERROR: MethodError: no method matching isless(::Int64, ::Base.Generator{UnitRange{Int64},var"#13#14"})
То, что вы скорее всего хотите, это:
julia> collect(x[i] >= 0 for i in 1:4)
4-element Array{Bool,1}:
1
1
1
1
Обратите внимание, что здесь использовалась обычная Julia. JUMP использует тот же синтаксис внутри макроса и, вероятно, попытается придерживаться той же семантики, но внутренне переписывает код. И все же сравнивать генератор с числом не имеет смысла.