Daily Julia #3

最大/最小値関数周りのリネームに関する議論 #7327

RFC: Added find_extrema, ind_extrema by kmsquire · Pull Request #7327 · JuliaLang/julia

Julia では Array の最大最小値の情報を得るための関数がいくつも存在する。

  • まず maximum, minimum という最大値と最小値のみをそれぞれ得る基本的な関数がある。

  • また extrema という関数がある。これはArray から最大値と最小値のタプルを返す関数である。

  • さらに indmax, indmin という Array から最大値あるいは最小値のインデックスを取り出す関数がある。

  • はたまた findmax, findmin という関数もある。これは値とインデックスのタプルを返却する。

現在ある最大最小値系の関数を表にすると次のようになる。

value (value, index) index
最小値 minimum findmin indmin
最大値 maximum findmax indmax
最大最小値 extrema - -

この Issue は「extrema における ind_extrema, find_extrema を追加しよう」というものだった。だった、というのは途中から議論の方向が「そもそもこの辺りの名前があまりよくない」という風向きになってきたからである。

まず口火を切ったのは Karpinski で、indmin, indmax という名前が lousy in the first place (そもそも気に食わない)と言い、argmax, argmin にリネームすべきと述べた。

すると johnmyleswhite は、argmax, argmin にするのはいいがそれは基本的に数学におけるある関数 f の最大/最小値を意味する言葉なのでインデックスを表す言葉に使うのはいかがなものかとコメントしている。

それにさらに応えて kmsquire 曰くいやいや関数 f をインデックスを値にマッピングする関数として捉えれば問題ないよ云々。高度なことを言っているわけではないが自分が同じように言い返せるかというと無理ですわ。

さて、いくらかの議論ののち kmsquire がまとめたところによると最大/最小値関数周りのネーミングは次のように整理され書き直された。

value (value, index) index
最小値 minimum findmin argmin
最大値 maximum findmax argmax
最大最小値 extrema findminmax argminmax

まだマージされていないがこれ以上あまり議論する余地もないだろうしそのうち取り入れられるだろう。

Git を Libgit2 に置き換える準備が整いつつある? #7339

WIP: andrioni's Libgit2 work by StefanKarpinski · Pull Request #7339 · JuliaLang/julia

Package のアップデートが遅いので (大量の git のシステムコールボトルネック?) libgit2 で書き換えて高速化しようという案件。前回の Issue が2013 年の 8 月なのでとっくに終わったものと思っていたら、ようやく一里塚に漕ぎ着けたというところだったのか。

Reimplement Git using libgit2 · Issue #4158 · JuliaLang/julia

関数が属しているモジュールを取るリフレクション #7322

added reflection method by mauro3 · Pull Request #7322 · JuliaLang/julia

これは便利なんじゃなかろうか。

julia> Base.@binding_module sin
Base

julia> Base.@binding_module a
ERROR: Symbol a is not bound in the current module Main and not exported in any 'used' module.
 in error at error.jl:21
 in binding_module at reflection.jl:171

julia> a = 4
4

julia> Base.@binding_module a
Main

julia> Base.binding_module(:a)
Main

Karpinski は REPL 上で属しているモジュール名を印字するようにすればいいんじゃねと言っている。

cumsum のパフォーマンスが悪い #7342

To improve performance in cumsum · Issue #7342 · JuliaLang/julia

cumsum は配列を類積和の配列にして返す関数。キャッシュを実装してないから遅い云々。どんなもんかなと実装見たらメタプログラミングされてて軽くビビった。