@chomado その発言だと、「型の有無」が変数の型の話なのか値の型の話なのか、やや曖昧な気がします。 JS の例で言えば、型の有無が問題というより、「値に型はあるけど ad-hoc polymorphism のルールが酷い」という話だと思います。
2014-12-27 23:26:33@chomado JSの話だよね。jsの場合、+記号が文字列連結もするから、"5"+1の場合文字として処理されて、51になるだけやね。
2014-12-27 23:30:54そういえばPerl 0 # false "0" # false "0.0" # true "0" == 0 # true "0.0" == 0 # true "0" == "0.0" # true だしこのあたりどうなっているのか良く分からない.
2014-12-27 23:44:05@chomado JavaScript楽しいですよ!(白目向きつつ) 10 Small Things You May Not Know About Javascript samuli.hakoniemi.net/10-small-thing…
2014-12-27 23:47:30@chomado 浮動少数点数floatと整数int間の変換は、希にものすごい見つけにくいバグの潜在性をはらんでいますね。手計算では3だけどfloatが絡んだことで約3=2.99999見たいな計算結果になることがたまにあります。
2014-12-27 23:47:49"5" + 1 JS勢「"5"+1 は "51" にしといてくれよ。気を利かせて。ここでの+は文字列連結だ」 厳格な型勢「型が違う」 ー "5" - 1 JS勢「-1したいということは"5"は数値として扱って5-1と評価するべきだ。気を利かせて」 厳格な型勢「型が違う」
2014-12-27 23:48:49@chomado 整数を浮動少数点数に型変換したときに、2進法で整数と同値を作れないことに起因するので、信頼性が重要な場合は、はじめから浮動少数使わないってルールでプロジェクト進めたりしました。本当に厄介なんです( ;∀;)
2014-12-27 23:56:30@chomado なおJavaScriptでの"0"はtrue。 javascript:alert((0 || "true" === "false" || "0" || "") + 0);
2014-12-27 23:57:54暗黙的に型変換をする言語「勝手によしなにしといたで」←型安全 暗黙的に型変換をしない言語「許さん!動かさん!!」←型安全 C言語「おwwwメモリ操作したらなんか動いたwwwどうなるかは知らんわwww」←型安全ジャナイ!!
2014-12-28 00:10:53コードゴルフとか以外で暗黙の型変換を期待してコード書いてるJS勢とかいないと思ってるし、いたらいなくしてやる。 twitter.com/chomado/status…
2014-12-28 00:35:53