#Ruby endless method definitionについては以下の

パッチモンスター中田さん

へのインタビューが面白い!

hackerslab.aktsk.jp/2021/03/04/122…
【endlessと名のつく機能を“えんど”うさんが提案~「Rubyの文法はendを多用~縁起が悪い。だからendのない文法を~」という趣旨のエイプリルフールネタでした】
ちなみに #Ruby のように end を多用する #Julia言語 では endless method definition が

f(x) = x^2 - x - 1

のように可能です。

やはり end 多用系の言語では函数定義のシンプルな文法があった方が便利ということなのかも。
リンク先の #Ruby の例を #Julia言語 で書いてみた。

In[1] シンプルにべた書きせずにforと@ evalを使った。左右からスカラーをかけたり割ったりできるようにもしてある。

Out[3] 3vと書ける。Vec{Int64}型を3で割るとVec{Float64}型になる。

In[4:5] v•w、v×wと書ける。

gist.github.com/genkuroki/9fae… Image
#Julia言語 v*3 は *(v, 3) とも書ける。

上ではforループの内側で

Base.:*(v::Vec, c) = Vec(v.x*c , v.y*c, v.z*c)

と定義されている。Vec型の v について、これは、v.*(c) というメソッドを定義していることに近い。ただし、Juliaでは v.*(c) のように書かずに、*(v, c) と書く。 Image
#Julia言語

JuliaではT1型のobj1とT2型のobj2に関するメソッドfを

obj1.f(obj2)

と書かずに、単に

f(obj1, obj2)

と書く。定義の形式は

f(obj1::T1, obj2::T2) = ~

function f(obj1::T1, obj2::T2) ~ end

このスタイルの違いに注意すればOOP的なこともJuliaで容易に可能。メソッド追加も楽。
#Julia言語 でも「メソッドを生やす」obj.f(x) のような書き方を容易に実現できる。

In[2] 平均1標準偏差1の正規分布のオブジェクトdistを作って、「メソッドを生やす」スタイルで使っている。

このスタイルはJuliaの多重ディスパッチとは相性が悪い。
nbviewer.jupyter.org/gist/genkuroki… Image
#Julia言語 1つ前のツイートの例を見れば分かるように、確率分布を扱うパッケージの Distributions.jl と「メソッドを生やす」スタイルの相性は悪くない。

実際、Distributions.jlの設計はOOPスタイルに近い。

JuliaでのOOP的な設計について学びたい人はDistributions.jlを研究すればよいと思う。
#Julia言語 確率分布オブジェクトdistのメソッドを

rand(dist, n)
mean(dist)
std(dist)
pdf(dist, x)

ではなく

dist.rand(n)
dist.mean()
dist.std()
dist.pdf(x)

の形式で使えるようにしてある。

さらにpropertynamesの定義でメソッドのタブ補完にも対応(笑)

nbviewer.jupyter.org/gist/genkuroki… Image
#Julia言語 こういうことを容易にできても、Juliaの根幹である多重ディスパッチのスタイルとひどく相性が悪いので普通はやらない。

Juliaで obj.f(x) のスタイルを使うと、拡張性がものすごく悪くなりそう。

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with 黒木玄 Gen Kuroki

黒木玄 Gen Kuroki Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @genkuroki

7 Mar
高等教育を受けた後に、数学的厳密さへの反感をあらわにする人達は結構いて、多くの場合にルサンチマンが原因のように見えます。

数学にくだらないルサンチマンを持ち込まないで欲しい。

繰り返し述べているような意味で、高等教育が「数学的厳密さ」について教えることに失敗している点が問題。
具体的に、ルサンチマンを持ち込んでいるように見えるのは、以下のリンク先のリンク先(添付画像)における長大な余談の部分です。

その余談の部分に共感してビジネス数学を擁護したいと思った人達は有害なルサンチマンを共有している困った人達という扱いになってしまうと思っています。
Read 5 tweets
7 Mar
私もShiozawaさんが指摘しているように「そのようなグラフの悪質な使い方がすでに広く普及していること」をこの議論の基本的前提にすることは重要だと思います。

ビジネス数学はそれを「グラフを示す目的は自分の見解を伝えることである」という一見無害に見える考え方で正当化してしまった。
データの内容を誤解なく分かり易く(可能ならば一目で分かるように)グラフの描き方を工夫することであれば誰も否定していない。

そのとき重要なのは「自分の見解を伝えること」と「データの内容を誤解なく分かり易く伝えること」は違うということです。

自分の見解は有害で間違っているかもしれない。
以下のリンク先資料(添付画像)の③④で、ビジネス数学教育家の肩書きで深沢真太郎さんは、

【会議では、できるだけ上司にいいところを見せたい】

という設定で、自分にとって都合の悪いデータを出すのはNGで、都合の良いグラフを見せるのはOKだとしている。

これは論外!

president.jp/articles/amp/2… ImageImage
Read 11 tweets
7 Mar
グラフを描くことの目的を「自分の見解を分かりやすく伝えること」に特化させてしまうと大変なことになってしまうことを、この件で学ぶことができました。

伝えたいと思っている自分自身の見解がビジネス的に有害で会社や顧客に損害を与える可能性にも配慮することが常識にならないとまずいです。
あと、ビジネス数学への真っ当な批判を見て、自分にとって都合が悪いと感じている集団が存在していているようにも見えた。

そして、普通の常識に基いて「これはひどい」と言っているだけなのに、「ビジネスに無用な過度な厳密さを要求している」という印象を広めたい人達がいるように感じられた。
すでに何度か述べたことがあると思うのですが、高等教育で「数学的厳密さ」の御利益について適切に教えることに失敗していると私は考えています。

論理的に厳密な議論を空気を吸うごとく遂行できるスキルがあると、数学的な事柄について安心して直観を大胆に駆使できるようになります。
Read 6 tweets
6 Mar
#Julia言語 Plots.jlで棒グラフを作ってみました。

全体の様子が添付画像①のようなときに、各月の合計を素直にプロットすれば添付画像②のグラフが得られます。

受注数の増加を印象付けるために、棒グラフの上側を切り取って添付画像③のようにするのはまずいです。

gist.github.com/genkuroki/cc0b… ImageImageImage
#統計 9月と同じ調子で10月も受注を取っていただけという想定のもとで、総受注数がデータ以上に増える確率(所謂P値)を計算してみました。

モデルの仮定:各人が9月の受注数通りのポアソン分布で10月も受注する。

計算法:モンテカルロ法。

結果:データ以上に総受注数が増える確率は18%弱。 ImageImage
#統計 これは9月と10月で各人の受注の調子が全く同じであっても、たんなる偶然でデータ通り以上に受注数が増えてしまう確率が18%程度もあるということです。

これはデータの数値だけからは特別なことを何も言えそうもないことを意味しています。
Read 7 tweets
5 Mar
❌「できる」「できない」の2通りしかないから、「できる」の確率は1/2

から難しい測度の話に飛ぶ必要はなくて、標準的な数学的定式化では

⭕️「できる」「できない」の2通りしかないから、「できる」の確率(0以上)と「できない」の確率(0以上)の和は1

という制限しか付かないと説明すればよいだけ。
別に難しい話をする必要はなくて、標準的な数学的定式化では、

確率は常に0以上1以下になり、
すべての場合に関する確率の和は1になる

という制限しか付かず、

現実への応用時に確率の値をどのように設定するべきであるか

は純粋に数学的には決まらないだけの話です。
確率概念の標準的な数学的定式化である確率測度は、専門用語的には「確率」という語を含みますが、「ランダム性」の概念を一切含まず、単に「全体の大きさを1としたときの部分の大きさ」=「割合」の概念を抽象化したに過ぎません。

「割合」と捉えられるものなら、何でも確率測度で扱える。
Read 12 tweets
5 Mar
#数楽 #Julia言語

平面ℝ²の無限遠に地平線を360度付け加えて、地平線上の180度反対側の点を同一視して得られる平面の拡張を実射影平面といいます。

無限に広い平面を単位円盤内にテキトーに写してプロットしてみました。

添付画像2:直線

gist.github.com/genkuroki/dfc8… ImageImage
#数楽 射影平面上の直線は、180度反対側の点を同一視した地平線と一点で交わる。 Image
#数楽

楕円は無限遠にある地平線と共通点を持たない(当たり前)。 Image
Read 6 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!