2022-11-05 (Sat) [長年日記]
_ Rubyで理解する統計解析の基礎: 4〜5章
4章(notebook)
4章はPyCallを使ったらほとんどPythonのコードそのままで動いてしまったので、Rubyで書き直した意味があまりなかったかも。
5章(notebook)
5章は確率関数などの表現にあまりnumpyの機能が必要なさそうだったので、普通の配列で書いて、グラフの描画だけMatplotlibを使うことにした。
確率関数などをメソッドで表現すると、メソッド定義内で外側の変数が見えない、first class objectでない、などの問題があってPythonのサンプルコードの直訳が難しいので、Procで表現することにした。
また、大文字ではじまる変数名はRubyだと定数になってしまって不都合があるので、 _X
のように先頭に _
を付けることにした。
2022-11-12 (Sat) [長年日記]
_ フクオカRuby大賞応募
mruby/c会議に来られていた福岡県庁の方から応募を勧めていただいたのでフクオカRuby大賞にTextbringerを応募してみた。
※MicrosoftOfficeがご利用いただけない場合は、応募用紙PDFをご覧いただき、記載されている各項目にご記入の上、ご提出ください。
ということだったが、Textbringerの応募資料をWordで書くのはプライドが許さなかったので、Markdownで書くことにした(「MicrosoftOffice」(スペースなし)という製品は知らないので「MicrosoftOfficeがご利用いただけない場合」に該当すると判断した)。
用紙サイズはA4です。
というレギュレーションをクリアするため、md-to-pdfでPDFに変換して、Textbringer上のMournmailから送信した。
問題は、
最近(概ね過去1年程度)のものを対象とします。
という部分だが、Mounrnmail 1.0.0を出したのが昨年6月なので周辺プラグインを含めて成熟したのがそのあたり、新規性を主張したString#byteindexの提案と利用も過去1年以内である。 担当者の方が「だいたいでいいですよ」とおっしゃっていたので大丈夫だろう。
2022-11-18 (Fri) [長年日記]
_ anonymous keyword rest parameterのバグ修正
とみたさんから報告があったanonymous keyword rest parameterのバグを修正した。 Ruby 3.2で
def foo(**)
bar(**)
end
のように匿名でキーワード引数を他のメソッドに転送する機能が追加されたが、
def foo(x: 1, **)
bar(**)
end
のようにキーワード引数を一部だけ転送する場合に文法エラーになるというもの。
修正自体はごく短いが、修正したらRubyVM::AbstractSyntaxTreeの動作が変わってしまったりしてあるべき動作を確認するのが大変だった。
調査の過程で動作に疑問がある部分があったので別のissueを作成しておいた。
def foo(...)
bar(*) # OK
baz(&) # OK
quux(**) # NG
end
上記のように ...
を使った時に *
と &
は使えるが、 **
は使えない、というもの。
全部使えるか、全部使えない、のどちらかがよいように思うが、 &
はRuby 3.1でも使えるので、全部使えるようにした方が互換性の面ではよさそう。