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