SSブログ

Julia の missing と nothing [julia]

Julia の Missing 型の missing という値は、計算結果が全て missing に
なるという代物で、 SQL の NULL に相当する、とのこと。
https://docs.julialang.org/en/v1/manual/missing/
比較演算子の結果も missing になるけど、isequal() で missing 同士の同値チェックはできる。
julia> a = missing
missing

julia> b = missing
missing

julia> a + b
missing

julia> a + 1
missing

julia> a == b
missing

julia> isequal(a, b)
true


他に、似たようなものとして、 Nothing型の nothing というものもあって
そっちは、何か不正な値を表現するものらしい。
演算すると例外が発生するが、 == で比較すると同値として true が返る。
julia> a = nothing

julia> a + 1
ERROR: MethodError: no method matching +(::Nothing, ::Int64)
Closest candidates are:
  +(::Any, ::Any, ::Any, ::Any...) at operators.jl:529
  +(::Complex{Bool}, ::Real) at complex.jl:301
  +(::Missing, ::Number) at missing.jl:115
  ...
Stacktrace:
 [1] top-level scope at REPL[13]:1

julia> isequal(a, nothing)
true

julia> nothing == nothing
true


コメント(0) 
共通テーマ:日記・雑感

JuliaHub から、Julia の公式パッケージに登録する [julia]

公開パッケージにする手順は、ここに日本語で解説してくれている人がいて(高校生!)
https://abap34.github.io/my-website/julialang/2021/01/31/julia-make-public-pkg.html
簡単そうな、 JuliaHub からの登録をしてみることにした。

https://juliahub.com の Contribute -> Register Packages から必要事項(自分は、 Package URL に https://github.com/nakagami/Awabi.jl を入力しただけで、いい感じに補完された)を入力して、
Submit すると・・・
この↓リポジトリに pull request が作成される
https://github.com/JuliaRegistries/General/pulls

今回のは↓これ
https://github.com/JuliaRegistries/General/pull/33897

最初、 Project.toml に [compat] の項目がなかったら(requiredではないが)bot のチェックでエラーが出た。
[compat]の項を追加して https://github.com/nakagami/Awabi.jl/blob/master/Project.toml#L10
再度、 https://juliahub.com の Contribute -> Register Packages から Submit したら、チェックにパスした。

いろんな人のパッケージ公開の解説を見ると PkgTemplates.jl で雛形を作って、 docs ディレクトリの下にドキュメントを書かないと、公式パッケージにできないという記載もあったんだけど、 README.rst に記載があれば docs ディレクトリのドキュメントは必須ではないようだ。

3日経つと、マージされた。他の Pull Request 見ると、問題なさそうでも3日は置いておくようなので、3日は待つことになりそう。
その前に、コメントが付いたら、それを見て何か対処する必要はある。

コメント(0) 
共通テーマ:日記・雑感

Julia の第一印象 [julia]

文法は Python に似ている。もっというと、型が指定できてそれがコンパイルしてバイナリになって速く動く Cython に似ていると思った。
自分は Ruby はわからないけど、おそらく Python や Ruby と言ったスクリプト言語書いている人ならとっつきやすいのでは。

- 配列のインデックスが1始まり
- クラスとかメソッドとかはなくて、関数の引数の型によって同じ名前でも呼ばれる関数が変わる(多重ディスパッチ)でオブジェクト指向的な処理が書ける
- 配列は多次元配列が基本で、Python でいうところのリストは、1次元の配列
- C, Python, R などの実装を呼び出す機能が充実している

というあたりが特徴的かなと思っている。
もっと慣れてくると違うことを感じるかもしれないけど。

数値計算をしない(数学がわからない)ので、そうすると Julia を使うメリットは自分にはそれほどないのかなと思っている。
コメント(0) 
共通テーマ:日記・雑感

新しいプログラミング言語を学ぶこと [julia]

年末年始に Julia の本を読み始め、少しコードを書いて、これはいけるかな?と思っているところ。

過去 Perl, PHP, Scala は、何度本を読んでもしっくりこなくて、少しコードを書くところまで行かずに挫折してしまった。
条件分岐、式、関数あたりの説明を読んで理解したつもりでも、
「僕の知っている言語だとこう書くけど、新しいこの言語ではどう書くのか?」
という時によくわからない場合があって、そうなると挫折ということになる。
仕事で、どうしても必要になったらまた違ったかもしれないけど、今となっては Perl, PHP, Scala を僕が書くことはなさそうなので、これらはマスターできないまま終わってしまった。
結構時間かけたんだけどなぁ。
Julia は、ちょっと書いてみて雰囲気掴むところまで来たので手応えある。

「このプログラミング言語がすごい」みたいな話を聞くと気になっちゃうけど、僕の残りの人生の時間と、新しく学んだプログラミング言語で書く成果まで考えると、もう(Juliaの次の)新しいプログラミング言語の習得は無理なのかなぁと思う。

コメント(0) 
共通テーマ:日記・雑感