Size: a a a

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

2020 April 02

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
foo(::Int) = 1
foo(::Type{Int}) = 2
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
foo(1) == 1
foo(Int) == 2
источник

ВФ

Виктор Федоров in Язык программирования Julia / Julia programming language
Спасибо, это понятино, но пока еще не осознал в какой практической ситуации это может понадобиться
источник

KT

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

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
zeros(5)
zeros(Int, 5)
zeros(UInt8, 5)
источник

ВФ

Виктор Федоров in Язык программирования Julia / Julia programming language
Точно
источник

ВФ

Виктор Федоров in Язык программирования Julia / Julia programming language
Спасибо
источник
2020 April 03

ВФ

Виктор Федоров in Язык программирования Julia / Julia programming language
julia> Type{Type}<:Type
true

julia> Type{Type}>:Type
false

НО

julia> supertype(Type{Type})
Any

а казалось бы, должно быть не Any, а Type
Тоже самое касается других параметрических типов:

julia> Complex{Int}<:Complex
true

julia> Complex{Int}>:Complex
false

НО

julia> supertype(Complex{Int})
Number

Почему Number, а не Cоmplex, почему так?
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Потому что Int игнорируется вроде бы при наследованиях типов.
Что-то такое уже было какое-то время назад в этом чате - ко и контравариантности типов.
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
По крайней мере я почти 100% уверен, что supertype(Complex{Int}) при вычислении превращается в supertype(Complex)
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Так что Number это вполне логичный ответ, несмотря на то, что
julia> Complex <: Complex
true

julia> Complex >: Complex
true
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
https://www.youtube.com/watch?v=Y95fAipREHQ&t=2113s
хорошая лекция по типам в Julia
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Я так понимаю, что наивно стоило бы ожидать в качестве ответа не Complex, а Complex{Signed}, что-нибудь в этом духе
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
в частности, время 17:26:
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
источник

ВФ

Виктор Федоров in Язык программирования Julia / Julia programming language
Это-то мы как раз недавно обсуждали, но это немного другое
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Ага, можно с другой стороны подойти
Тип Complex - это абстрактный тип?

То есть определение Complex{T} как выглядит?

abstract type Complex end

struct Complex{T <: Real} <: Complex
...


Или

struct Complex{T <: Real} <: Number
...

?
источник

АО

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

VG

Viktor G. in Язык программирования Julia / Julia programming language
complex.jl:
Complex{T<:Real} <: Number
источник

KT

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