Как указать тип иррациональных чисел у Юлии? - PullRequest
2 голосов
/ 22 мая 2019

Это был сюрприз:

$ julia
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.1.1 (2019-05-16)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia> typeof((Base.MathConstants).e)
Irrational{:ℯ}

julia> typeof((Base.MathConstants).e) == Irrational{:e}
false

Как мне написать тип Irrational{:e} в Julia 1.1.1?

Это выражение вернуло true в Julia 0.5, но только потому, что e был идентификатором верхнего уровня. Что-то изменилось в языке между 0,5 и сейчас. Я обнаружил, что e был перемещен в Base.MathConstants, но я не понял, как написать его тип. REPL говорит об одном, но то, что он говорит, нельзя использовать в выражении ==.

1 Ответ

3 голосов
/ 22 мая 2019

Обратите внимание, что ответ от

typeof((Base.MathConstants).e)

есть

Irrational{:ℯ}

с "курсивом" e. Если вы скопируете и вставите ответ в выражение

typeof((Base.MathConstants).e) == Irrational{:ℯ}

и оцените его, вы получите значение

true

Вот причина. В старых версиях Julia константа e использовалась для известного числа 2.718281828 ... но, очевидно, людям нравилось использовать e для исключений, поэтому e был перемещен в Base.MathConstants.

Однако в Base была введена новая константа, а именно . Это символ U + 212F , «маленький сценарий е».

Вы можете использовать этот идентификатор непосредственно в своем коде Джулии.

...