新しいものを表示
orange さんがブースト

もうちょっとわかりやすい例にするなら、行列のサイズが演算ごとに自動的に定まるのと同じ原理を使えます

スレッドを表示
orange さんがブースト

たとえば物理単位を型で表現して計算可能にしようみたいなのは、依存型で実現できますよね

これ、今のままだと例えば距離型が振る舞いの大部分が基本型の実数型だとしても、演算子全部オーバーロード書かないといけない・・・><

スレッドを表示
orange さんがブースト

結局、 opaque typedef は静的型があればどの言語でもできそうなんだけど、一番面倒なのは演算子オーバーロードをいかに簡単にするか、あるいは実用的な柔軟性をもって自動化するかというところなのよな

orange さんがブースト

Nim、一応
type Hoge = distinct huga
とすることで「基本型な数値型を継承して」「基本型とは暗黙の型変換は無効化される」は達成される
が、演算子はデフォルトではオーバーロードされないので手動でやる必要がある(一応 {.borrow.} として省略できるが)

そういうのプラス、演算子のオーバーロードも今より気軽に書けるように、なんかする(?)と、例えば時間型と距離型を掛けると速度型が返ってくるみたいなのも今よりも簡潔に書けそう?><

orange さんがブースト

derive_more - Cargo: packages for Rust
crates.io/crates/derive_more
opaque_typedef - Cargo: packages for Rust
crates.io/crates/opaque_typede

まあ似たようなことを考える人はどこにでもいるんですが、結局それなりに柔軟で簡単なちょうどいいソリューションが見付からないみたいな状態なのかな

スレッドを表示

"Ninnzuu" "Ninzuu" ・・・・・・><;

こういうのもすごく気軽に書けたらいいのに><(C# っぽく例示) 

class Ninnzuu : Int64;//人数型><;
//この場合は演算子のオーバーロードとか色々抜きだけど、普通にオーバーロードとかも出来るとする><
//・・・って型を定義して

Ninzuu takasikunn = 42;//人数型><(たかしくんが42人(?))
Int64 nankaNoKazu = 10;//64bit整数型
//って宣言して

//エラー!><
Int64 nanka_kekka1 = takasikunn * nankaNoKazu;

//明示的にキャストしてるのでおk><
Int64 nanka_kekka2 = (Int64)takasikunn * nankaNoKazu;

// 実際のC# だとこのままだややこしい事になるかもだけどあくまでそれっぽい例示><;

基本型な数値型を継承して、そのままだと演算子も全て継承して(特に新たな定義が必要な演算子だけオーバーロードする(この場合だとオーバーライド?><))、でも基本型とは暗黙の型変換は無効化されるみたいな、そんな形の機能と言うか糖衣構文と言うかなんかそういうのあったら、Adaみたいにちょこまか型作る人増えると思うんだけど無理なのかな・・・><

orange さんがブースト

とはいえ、大量に型を定義して、あるいは演算子もいくつも実装するのであれば、それは当然自動化されて然るべきだし、その十分な自動化機構なしにボイラープレートを許容して「型を用意すれば」というのは、これもまたポヨグヤミンとしては上質といえない

スレッドを表示
orange さんがブースト

や、元から安全性なんて考えてなくて「いちいち型なんて定義してられっか面倒くせえ!」という素朴な発想なんだと思いますよ

延長で考えると(?)、静的型システムとかそれをより活用したIDEとかって、"理屈はさておき手を動かし"た時に、より正しい方向に導いてくれる(教えてくれる)し、正しくない物を排除してくれるので、むしろそういう環境の方が習うより慣れろでも正しく学べそう?><
(型が軽視されてる環境だと、そういうのが過ったまま先に進んじゃうよね><)

orange さんがブースト

これは偏見になるんですが、「理屈はさておき手を動かして覚えよう」みたいなメソッドって、こういう「動けばよかろう」的な考え方に感じられてとても好きじゃないです

スレッドを表示
orange さんがブースト

そういう人に「静的検査の方が『正しい』コードを書きやすい」と言っても、たぶん響かないんですよね

スレッドを表示
orange さんがブースト

件の動的手動型検査の人は「正しいプログラム」というより「開発効率」に言及している事実は一考に値すると思うというか、正しさと「書けること」を並べて後者を好む人がいるんだなという

わりとハイカラで21世紀的な静的型システムな言語、オレンジ(Adaとかが好き)から見ると、データ型の型システムを軽視してるようにしか思えない傾向わりと謎><
(なんで匿名だったり基本型を多用しちゃうのか>< その方が楽なのはわかるけど><;((例えばタプル使わないで、いちいち(><;)型新しく作るほうがより安全じゃん?><;(「そのために複雑化するから安全じゃないじゃん?」って発想もわからなくも無いけど本質的に複雑な物をチェックをスルーさせてるだけじゃん?><;って思うんだけど><;))))

AdaとかPascalとか方面の頭固い言語(頭固すぎてカーニハンがブチキレて「Cの方が優れてる!」ってPascalをdisってたし><;)に触れるとわりと違うと思うし、実際触れたのでオレンジはこうなった><;(元から頑固だからぴったり合ったのかもしれないけど><)

"プロぐらいミング"・・・・・><;

微妙に偏見だけど、動的型つけな環境に(型システムがなぜあるのか?みたいな事を考えずに)どっぷり浸かりながらプロぐらいミングを学んだあとに、(主に特に最近流行の関数型を全面的に押し出してるような言語で)静的型システムに触れて感動したてみたいな人って、このqiitaの記事の人みたいな感じになんかこう微妙に・・・・><

古いものを表示
:realtek:

思考の /dev/null