><https://twitter.com/orange_in_spacehttps://pawoo.net/@orange_in_space
つまり小学校のそういう みかんとかリンゴとかたかし君が出てくる問題って、さっきオレンジがC# で書いたような事をしてる、にもかかわらず、型の定義の部分を回答として書かせない(表現させない)から、掛け算順序問題みたいな奇妙な問題が起こるのでは?><
つまり、リンゴとみかんの合計の出し方を小学生が解く問題の場面では、リンゴとみかんを型として定義してどういう型変換(や演算子の定義?><;)をすればどういう数値が出るのか?(言い方を変えると、問題が意図する数値を計算できるのか?)を学んでるわけじゃん?><
型を無視して考えると「3+5は?」とかが解ければ良いわけじゃん?>< でも順序問題みたいな事を起こしてまで教えてるのは、「リンゴ3、みかん5」とかをどういう式(3+5とか)にすればいいのか?を学ぶ為じゃん?>< それ、型の定義そのものじゃん?><
ていうか小学校の算数で教えてる事って、実は型の構築(?)そのもの?><(つまり、式を組み立てる(?)って事は、みかんとかリンゴとかたかしくんとかを使って、どう計算すればよいのか?を定義してるわけじゃん?><)
これもある意味型システムの混乱?><;
あーかいきつねときつねのたーぬーき
ていうか、掛け算順序問題を方システムの導入で解決しようとすると、さっき書いたようなコード(C# なので冗長なのはアレだけど)的なものを小学生が算数の授業で書く事になっちゃう?><;(それってもしかして本格的な(?)圏論?><;(数学苦手なのでわからない><;))
太郎くんはりんごを3つ、花子さんはみかんを5つ買いました。あわせていくつでしょう。→20歳
そもそも現行の小学校の算数に型が無いんだからあれだけど><;(じゃあ未定義じゃん!!!><;)
小学校の算数の "いくつ" は整数型(?)であるみたいに受け取るべきなのかも?><;(って考えちゃうと「リンゴとみかんを足すと」「何が?><」って言えなくなってしまう><;)
とても難しい><;
太郎くんは単三電池を3本買ってきました。空には雲が1つ浮かんでいました。電池と雲はあわせていくつでしょう。
当たり前だけど、型推論してくれるから var c = a + b; でも型安全なまま(?)ちゃんと動くし小学校教諭並みには(?><;)ゆるふわな型システムだ><
出来ました><;(?)C#で75行のコード書いたよ!ブラウザ上で実行できるよ! https://paiza.io/projects/hMp6bCN2dd8h0TzML4EvwQ
あ!><; 普通に継承でもできる!><;(継承にして、AppleCountとMikanCount のFruitCountへの型変換の定義は削除でおk><; 思い込みで出来ないと思ってた><;)
ていうか色々ぐぐってると「そういうのはF# でやりましょう」的な色々が出てる気がしなくもない><;
?><;C# さん「インターフェイスに演算子を含めることは出来ません。」
interface実装するとか拡張メソッドとか…?
で、それらを実際に実装してみたら、こうかけるようになった>< もっと見る
AppleCount a = (AppleCount)5;MikanCount b = (MikanCount)3;FruitCount c = ((FruitCount)a + (FruitCount)b);
Console.WriteLine((int)c);
・・・ということは、リンゴとみかんの合計の果物の数を計算したい場合は、最低限『果物の数』の+演算子を実装すればよい・・・?><
思考の /dev/null