新しいものを表示

ていうか小学校の算数で教えてる事って、実は型の構築(?)そのもの?><(つまり、式を組み立てる(?)って事は、みかんとかリンゴとかたかしくんとかを使って、どう計算すればよいのか?を定義してるわけじゃん?><)

これもある意味型システムの混乱?><;

orange さんがブースト

あーかいきつねときつねのたーぬーき

ていうか、掛け算順序問題を方システムの導入で解決しようとすると、さっき書いたようなコード(C# なので冗長なのはアレだけど)的なものを小学生が算数の授業で書く事になっちゃう?><;(それってもしかして本格的な(?)圏論?><;(数学苦手なのでわからない><;))

orange さんがブースト

太郎くんはりんごを3つ、花子さんはみかんを5つ買いました。あわせていくつでしょう。
→20歳

そもそも現行の小学校の算数に型が無いんだからあれだけど><;(じゃあ未定義じゃん!!!><;)

小学校の算数の "いくつ" は整数型(?)であるみたいに受け取るべきなのかも?><;(って考えちゃうと「リンゴとみかんを足すと」「何が?><」って言えなくなってしまう><;)

orange さんがブースト

太郎くんは単三電池を3本買ってきました。空には雲が1つ浮かんでいました。電池と雲はあわせていくつでしょう。

当たり前だけど、型推論してくれるから var c = a + b; でも型安全なまま(?)ちゃんと動くし小学校教諭並みには(?><;)ゆるふわな型システムだ><

出来ました><;(?)
C#で75行のコード書いたよ!ブラウザ上で実行できるよ! paiza.io/projects/hMp6bCN2dd8h

あ!><; 普通に継承でもできる!><;(継承にして、AppleCountとMikanCount のFruitCountへの型変換の定義は削除でおk><; 思い込みで出来ないと思ってた><;)

ていうか色々ぐぐってると「そういうのはF# でやりましょう」的な色々が出てる気がしなくもない><;

?><;
C# さん「インターフェイスに演算子を含めることは出来ません。」

orange さんがブースト

interface実装するとか拡張メソッドとか…?

で、それらを実際に実装してみたら、こうかけるようになった>< 

AppleCount a = (AppleCount)5;
MikanCount b = (MikanCount)3;
FruitCount c = ((FruitCount)a + (FruitCount)b);

Console.WriteLine((int)c);

・・・ということは、リンゴとみかんの合計の果物の数を計算したい場合は、最低限『果物の数』の+演算子を実装すればよい・・・?><

あ><; 演算子も定義しないと全部intに型変換して計算するコードになるから型の意味が無い><;(=型安全じゃ無い)

さっきのc# のコードのやり方で、リンゴとみかんの数を型安全に計算したいのであれば、さっきのコードで『果物の数』と『リンゴの数』と『みかんの数』を作って、『リンゴの数』と『みかんの数』に『果物の数』への明示的な型変換をつければおk?><(言語仕様としての継承が使えないのでちょっとキモイけど><;)

使い方><; 

MyInt_MinimumImpl a = (MyInt_MinimumImpl)1;
MyInt_MinimumImpl b = (MyInt_MinimumImpl)2;
MyInt_MinimumImpl c = (MyInt_MinimumImpl)((int)a + (int)b);
Console.WriteLine((int)c);

古いものを表示
:realtek:

思考の /dev/null