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

min(max(v, 最小値), 最大値)ってやつね。いちいち作るの面倒だから用意しておいてほしいのは同意。hlslにはclamp, processingにはconstraintって関数があるんだけどねぇ。

orange さんがブースト
orange さんがブースト

そういえば、なんでmathって名前がついてるような数学な標準ライブラリ、どの言語のでもほとんど(?)、maxとminはあっても、最大値と最小値を両方指定してその範囲にカットする(?)って無いっぽいんだろう?><
特にGUIでは使う場面が結構あると思うんだけど・・・><

壊れてるかも許容型?><(null許容なるべくやめようって潮流のなかでは流行らなそう><;)

それオレンジの最初の「壊れてるかも」モデルに壊れてるかもインタフェースを標準化して追加したらほぼそれのような・・・><(nullは「壊れてる」ではないけど、null流用で言うならnull許容型っぽさ・・・><)

orange さんがブースト

そもそも「もしかして壊れてる○○型」と「壊れてない○○型」を両方作るのって明らかに重複多くて無駄なので、
「○○型」と「もしかして壊れてる表明」だけ用意して、「もしかして壊れてる<○○>」を使うと、新たな型をいちいち名付けたり定義せず使える

インタフェースの仕組みはそれはそれで静的だけど、ダックタイピングっぽさの名前つき版(名前つきなんだから全く逆の発想だけど)っぽさがアレだけど><;(でも便利><;)

話が無限に広がっちゃうけど、継承がないと、さっきからの例のような、壊れれない版と壊れてる版を作る時にも、ツリー状に関係を表現できなさそうで謎><;

壊れてない型を継承して、壊れてるインタフェースをくっつけた壊れてる型を作れば、「これって壊れてる型?(=壊れてるインタフェース持ってる?)」って型チェックもできるかも・・・><

(限定的な)多重継承できる言語、例えばC# (のインタフェース)ならば、IBroken(?><;)みたいなインタフェースを標準化して、壊れてる版はそれを混ぜた派生クラスを作ればエレガント・・・?><

orange さんがブースト
orange さんがブースト

そうなったとき、一番基本になる型は「必ず○○である」という制約を表明できる型であって、そういうものを作る。これを組み合わせて制約を弱くすることは簡単だし

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

型でも同じようなことをやってほしくて、「なんでも単一の型を用意してドキュメントで補足するよりも、 Result とか Option とかその他『意味だけを表明する容れ物』を利用して意図する型を作る方がよい、という感じです

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

たとえば「なんでも goto を使うより while や for や iterator を」とか「なんでも再帰を使うより map や filter や fold を」みたいなのと同じで、高階のものとパラメータを組み合わせることで制約を人間にとってわかりやすく、かつ機械が理解可能な状態で表現するということが可能になります

orange さんがブースト

ていうかRustとか的発想(?)で言うならば、「なんとか型」と「なんとかが壊れてる型」を作って、後始末に必要なものはどちらにも持たせるってすれば、オレンジの発想に近い?><

「壊れてるかもしれない」ってモデル、かなり楽な考えだと思うんだけど><;

古いものを表示
:realtek:

思考の /dev/null