00:14:54 @lo48576@mastodon.cardina1.red
2021-12-08 00:09:12 アカハナの投稿 akahana@fla.red
icon

このアカウントは、notestockで公開設定になっていません。

00:14:56 @lo48576@mastodon.cardina1.red
2021-12-08 00:09:36 アカハナの投稿 akahana@fla.red
icon

このアカウントは、notestockで公開設定になっていません。

00:14:57 @lo48576@mastodon.cardina1.red
2021-12-08 00:11:40 コロコロコロ助の投稿 naota344@social.mikutter.hachune.net
icon

このアカウントは、notestockで公開設定になっていません。

00:15:05 @lo48576@mastodon.cardina1.red
2021-12-08 00:12:57 コロコロコロ助の投稿 naota344@social.mikutter.hachune.net
icon

このアカウントは、notestockで公開設定になっていません。

00:15:12 @lo48576@mastodon.cardina1.red
2021-12-08 00:13:29 コロコロコロ助の投稿 naota344@social.mikutter.hachune.net
icon

このアカウントは、notestockで公開設定になっていません。

00:15:15 @lo48576@mastodon.cardina1.red
2021-12-08 00:14:15 コロコロコロ助の投稿 naota344@social.mikutter.hachune.net
icon

このアカウントは、notestockで公開設定になっていません。

00:22:04 @lo48576@mastodon.cardina1.red
2021-12-08 00:21:00 kb10uyの投稿 kb10uy@mstdn.maud.io
icon

コンクリート床はなぜ鉄鉱石を要求するのだ

00:22:04 @lo48576@mastodon.cardina1.red
2021-12-08 00:21:18 Giraffe Beerの投稿 giraffe_beer@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

00:22:05 @lo48576@mastodon.cardina1.red
2021-12-08 00:21:38 kb10uyの投稿 kb10uy@mstdn.maud.io
icon

RC 床は別にあるんだよな……

00:22:30 @lo48576@mastodon.cardina1.red
icon

あれのせいで鉄鉱石を採掘した瞬間に鉄にして運搬してしまうメソッドに迷いが生じるんだよなぁ

00:22:46 @lo48576@mastodon.cardina1.red
2021-12-08 00:22:08 kb10uyの投稿 kb10uy@mstdn.maud.io
icon

Attach image
Attach image
00:22:55 @lo48576@mastodon.cardina1.red
2021-12-08 00:22:50 kb10uyの投稿 kb10uy@mstdn.maud.io
icon

基本的に鉱床のすぐそばで鉄板・銅板に加工してから鉄道輸送しているのでコンクリ床だけは別のラインを確保しなければならない

00:27:29 @lo48576@mastodon.cardina1.red
2021-12-08 00:23:39 kb10uyの投稿 kb10uy@mstdn.maud.io
icon

加工前を要求されて微妙に困るシリーズとしては他に線路がありますね(石レンガではなく石を要求するため)

00:27:54 @lo48576@mastodon.cardina1.red
2021-12-08 00:26:34 ぼろんじ(100tpt)の投稿 boronology@social.penguinability.net
icon

このアカウントは、notestockで公開設定になっていません。

00:31:32 @lo48576@mastodon.cardina1.red
icon

「大東亜以下」メールでマイナビが謝罪 “学歴フィルター説”は否定(1/2 ページ) - ITmedia NEWS
itmedia.co.jp/news/articles/21

> マイナビの新卒向け採用サービス「マイナビ新卒紹介」が12月6日に送信したメールの件名が「<第1>大東亜以下➈」となっていた

これで学歴フィルタ否定して信じるやつがいるのかよwww

Web site image
「大東亜以下」メールでマイナビが謝罪 “学歴フィルター説”は否定
00:32:24 @lo48576@mastodon.cardina1.red
icon

いい話すぎてヤバいな

05:48:59 @lo48576@mastodon.cardina1.red
2021-12-08 05:30:31 ぽな (C.Ponapalt)の投稿 ponapalt@ukadon.shillest.net
icon

サイクルが一定で睡眠時間を確保できていればみんな生活習慣マトモ組です。

05:49:56 @lo48576@mastodon.cardina1.red
icon

ワイは生活周期は安定しているが恒常的に寝不足なので何もかも駄目

06:05:42 @lo48576@mastodon.cardina1.red
2021-12-08 05:58:31 ぽな (C.Ponapalt)の投稿 ponapalt@ukadon.shillest.net
icon

人体の構造が雑なんじゃなくて仮説が間違っている

ukadon.shillest.net/@fine_l/10

Web site image
Fine Lagusaz (@fine_l@ukadon.shillest.net)
06:06:26 @lo48576@mastodon.cardina1.red
2021-12-08 06:03:58 しようの投稿 hiwan@heislandmine.work
icon

このアカウントは、notestockで公開設定になっていません。

06:06:57 @lo48576@mastodon.cardina1.red
icon

創作上の NL でケツ使う場合にもいちいち洗う描写してないこと多いし、それは単にどれだけ神経質になるか文化圏の問題でしかなさそう (?)

06:07:50 @lo48576@mastodon.cardina1.red
icon

よーするに「BL だから穴を追加した」じゃなくて「読者や作者にそういうことを気にする人々が多いから穴が追加された」じゃない? という (めちゃくちゃどうでもいい)

06:41:28 @lo48576@mastodon.cardina1.red
icon

ヒューマノイドが可哀想という話で思い出した

19:20:32 @lo48576@mastodon.cardina1.red
2021-12-08 19:08:02 かつと@5/4都産貿【MBF-43】の投稿 kat_cloudair@pawoo.net
icon

ニコ生アプリ、インストールしたら初手からこれで完全に終わり

Attach image
19:20:35 @lo48576@mastodon.cardina1.red
2021-12-08 19:19:12 rinsukiの投稿 rinsuki@mstdn.rinsuki.net
icon

このアカウントは、notestockで公開設定になっていません。

19:21:27 @lo48576@mastodon.cardina1.red
2021-12-08 18:49:39 久遠ミチヨシ/ミチミチ原稿再開🔞🎨🍔の投稿 quon_michi@pawoo.net
icon

このアカウントは、notestockで公開設定になっていません。

19:21:29 @lo48576@mastodon.cardina1.red
2021-12-08 19:13:37 あっきぃの投稿 akkiesoft@social.mikutter.hachune.net
icon

言った言わない型浄水器

19:21:30 @lo48576@mastodon.cardina1.red
2021-12-08 19:13:48 Giraffe Beerの投稿 giraffe_beer@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

19:21:31 @lo48576@mastodon.cardina1.red
2021-12-08 19:13:53 めざせ引越しくんの投稿 sota_n@social.mikutter.hachune.net
icon

このアカウントは、notestockで公開設定になっていません。

19:23:33 @lo48576@mastodon.cardina1.red
icon

ぴちょんくん……

19:30:44 @lo48576@mastodon.cardina1.red
2021-12-08 19:30:37 Giraffe Beerの投稿 giraffe_beer@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

19:52:05 @lo48576@mastodon.cardina1.red
2021-12-08 19:30:09 🖕の投稿 mimorinka@fedibird.com
icon

このアカウントは、notestockで公開設定になっていません。

20:50:45 @lo48576@mastodon.cardina1.red
2021-12-08 20:43:56 もちゃ(あと-18.60Kg)の投稿 mot@mastodon.motcha.tech
icon

このアカウントは、notestockで公開設定になっていません。

20:50:53 @lo48576@mastodon.cardina1.red
2021-12-08 20:45:38 無宛@零月のラウラ良かった……の投稿 LwVe9@mstdn.poyo.me
icon

このアカウントは、notestockで公開設定になっていません。

20:51:25 @lo48576@mastodon.cardina1.red
icon

いや駄目でしょう

20:52:23 @lo48576@mastodon.cardina1.red
icon

そもそも比較演算子も boolean を返す演算子なんだから、
「v が true と等しいことを確認する」を v == true と書くなら、それは結局「v == true という演算の結果が true と等しいことを確認する」ことでもあるんだから (v == true) == true と書かなければ筋が通らないし、以下略

20:53:01 @lo48576@mastodon.cardina1.red
icon

(((v == true) == true) == true) と書かないのに v == true と書くのは一貫性がないでしょう

20:53:59 @lo48576@mastodon.cardina1.red
icon

a == b を「事実の表明」か何かだと勘違いしているのかもしれないが、そんなものはない。ただの比較演算子です

20:54:24 @lo48576@mastodon.cardina1.red
icon

まあ数学の文脈を引き摺っているのだとしたら多少は同情するけど、いや論理学というものがあってね……

20:55:13 @lo48576@mastodon.cardina1.red
icon

逆に中学高校までの数学で「a が 2 と等しいかどうか」の『かどうか』を表現する記法が存在しないので、その影響でというのはあるかもね

20:55:45 @lo48576@mastodon.cardina1.red
icon

やっぱり意味論を知るべしという話なんだよなぁ

20:57:09 @lo48576@mastodon.cardina1.red
2021-12-08 20:42:45 酸性雨の投稿 acid_rain@amefur.asia
icon

このアカウントは、notestockで公開設定になっていません。

20:57:13 @lo48576@mastodon.cardina1.red
icon

元の文脈これか

20:57:43 @lo48576@mastodon.cardina1.red
icon

間違いではないので減点はしないけど == true はコメント付けるかなぁ

20:57:59 @lo48576@mastodon.cardina1.red
2021-12-08 20:53:08 酸性雨の投稿 acid_rain@amefur.asia
icon

このアカウントは、notestockで公開設定になっていません。

20:58:01 @lo48576@mastodon.cardina1.red
2021-12-08 20:53:53 kb10uyの投稿 kb10uy@mstdn.maud.io
icon

ヨーダ記法のおたくは true == booleanvar をやるかもしれない

20:58:09 @lo48576@mastodon.cardina1.red
icon

@tacumi 中括弧?

20:58:46 @lo48576@mastodon.cardina1.red
icon

暗黙の型変換とか動的型付きの話をするのやめようね

20:58:56 @lo48576@mastodon.cardina1.red
2021-12-08 20:52:44 おさの投稿 osapon@mstdn.nere9.help
icon

あまりコーディング規約がきちんとしているところで仕事をする機会が無いが、trueの比較でif(bool)はやるけど、falseのときはif(!bool)じゃなくてif(bool == false)と書くようにしている。なんか見落としそうで。!使えと言われたら使うけども。

20:59:10 @lo48576@mastodon.cardina1.red
icon

if(!strcmp(s, t)) とかもなかなか治安が悪い

20:59:21 @lo48576@mastodon.cardina1.red
2021-12-08 20:47:10 酸性雨の投稿 acid_rain@amefur.asia
icon

このアカウントは、notestockで公開設定になっていません。

21:02:06 @lo48576@mastodon.cardina1.red
icon

@tacumi そもそも Haskell だと括弧によるブロックよりもオフサイドルールを使うし、もっといえば guard とかでどうにかするケースの方が多そう

21:02:19 @lo48576@mastodon.cardina1.red
2021-12-08 21:02:03 kb10uyの投稿 kb10uy@mstdn.maud.io
icon

[[ ... ]] と (( ... )) は中身がゼロか非ゼロかで真の扱いが逆になってるとかね

21:02:57 @lo48576@mastodon.cardina1.red
icon

sh は文字列型しかないから静的型付き言語定期

21:03:32 @lo48576@mastodon.cardina1.red
2019-11-29 01:01:43 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

🖕 ← これはですね、下が点で上が棒、すなわち「!」記号を表現したものであり、 C 言語などの論理否定演算子にちなんで否定の意味を持っています

21:03:53 @lo48576@mastodon.cardina1.red
icon

# define 🖕 !

21:06:06 @lo48576@mastodon.cardina1.red
icon

Cがクソなのは今更なので今更Cがクソな話をしてもしょうがない……

21:06:29 @lo48576@mastodon.cardina1.red
icon

if(!!stream) の話します? (pre C++11)

21:07:15 @lo48576@mastodon.cardina1.red
icon

C++11 からは contextual conversion で operator bool() が (たとい explicit であろうと) 呼ばれるようになったので無事 if(stream) で済むようになった。めでたし (?)

21:07:21 @lo48576@mastodon.cardina1.red
2021-12-08 21:06:54 shibafu528の投稿 shibafu528@social.mikutter.hachune.net
icon

クソの話をするなら===falseの話をしますが、しなくていい場ですね?

21:07:22 @lo48576@mastodon.cardina1.red
2021-12-08 21:06:54 しらか :saba:の投稿 crakaC@don.crakac.com
icon

このアカウントは、notestockで公開設定になっていません。

21:07:27 @lo48576@mastodon.cardina1.red
2021-12-08 21:07:21 おさの投稿 osapon@mstdn.nere9.help
icon

0とfalseが返ってくるさん

21:07:36 @lo48576@mastodon.cardina1.red
icon

null に equals を使う話は!

21:09:22 @lo48576@mastodon.cardina1.red
2021-12-08 21:07:24 しらか :saba:の投稿 crakaC@don.crakac.com
icon

このアカウントは、notestockで公開設定になっていません。

21:09:24 @lo48576@mastodon.cardina1.red
2021-12-05 02:03:32 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

インドネシア・ジャワ島で火山が噴火、1人死亡 逃げ遅れた住民も(朝日新聞デジタル) - Yahoo!ニュース
news.yahoo.co.jp/articles/05f4

JAVA + YOU,
EVACUATE
TODAY!

21:11:21 @lo48576@mastodon.cardina1.red
icon

nullable な String s に対して s.equals(t) みたいなことをすると危険なんじゃ、みたいなとんでもない罠

21:11:32 @lo48576@mastodon.cardina1.red
icon

それはそうなんだけどさぁ……

21:11:51 @lo48576@mastodon.cardina1.red
icon

NonNull いっけー!!!

21:12:17 @lo48576@mastodon.cardina1.red
icon

根本的に「暗黙に nullable」という型システムがもう破滅への序章でしかない

21:13:13 @lo48576@mastodon.cardina1.red
icon

近年の話だと、 Java の Optional<T> を null が入れられるやつが一番好きかな

21:13:31 @lo48576@mastodon.cardina1.red
2021-12-08 21:13:10 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

たとえばビットパターン混ぜ混ぜする時とかは「PatternA | PatternB」みたいに書きたいけど、条件とかの時は「条件A | 条件B & 条件C」よりも「条件A or 条件B and 条件C」みたいに予約語方式の方が目に入りやすくて見間違えにくいじゃん?><

21:13:56 @lo48576@mastodon.cardina1.red
icon

その条件はテキストで書かれるので、メタな意味を持つ and や or や not はテキストで書くより記号で書いてほしいですね。というわけで and / or / not キーワードきらい。

21:14:28 @lo48576@mastodon.cardina1.red
icon

日本語崩壊してた、「Optional<T> の値として null が使える」

21:15:53 @lo48576@mastodon.cardina1.red
icon

Optional<String> a = null;
Optional<String> b = Optional.empty();
Optional<String> c = Optional.of("hello"); // ←これ合ってたっけ?

21:16:21 @lo48576@mastodon.cardina1.red
icon

もう Java の String 生成で new String〜 的なのが必要かどうかなんて覚えてないよ (たぶん mutate しないなら不要)

21:16:34 @lo48576@mastodon.cardina1.red
2021-12-08 21:15:10 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

だからさっきから書いてるように、| とか ! とか記号小さすぎて見間違いとか見落としの危険高いじゃん!?><;

21:16:57 @lo48576@mastodon.cardina1.red
icon

条件が並んでいて | に見落しも何もないと思う。条件が2つ以上並んでいるなら必ず接続があるんだから。

21:17:10 @lo48576@mastodon.cardina1.red
icon

! が見落しやすいというのはわかるよ。でも not は嫌い。

21:19:09 @lo48576@mastodon.cardina1.red
2021-12-08 21:17:47 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

わかりやすくするために超極端に言うと、(!illiliilllilli | iilliillili)よりも (not illiliilllilli or iilliillili)のほうが見やすいじゃん!?><;

21:19:11 @lo48576@mastodon.cardina1.red
icon

そんなクソコードが許されるなら
and_ and nad _or or and_and and or_ or
は読みづらいじゃん……その論法はクソすぎる

21:19:50 @lo48576@mastodon.cardina1.red
icon

ちなみにこれはそもそも成立してないです (成立していないことを看破するのさえコスト高い)

21:20:08 @lo48576@mastodon.cardina1.red
2021-12-08 21:19:09 もちゃ(あと-18.60Kg)の投稿 mot@mastodon.motcha.tech
icon

このアカウントは、notestockで公開設定になっていません。

21:20:10 @lo48576@mastodon.cardina1.red
2021-12-08 21:18:17 まちカドおるみん御嬢様の投稿 orumin@mstdn.maud.io
icon

はちゃめちゃに長い operator とかでなければ人類は必ず見間違いや見落しをするので開発環境やコンパイラが適切な指示や指摘をしてくれるならなんだっていい

21:20:33 @lo48576@mastodon.cardina1.red
icon

まあ正直これなんだけど、シンタックスハイラトなしの極限環境をたまに使うものぐさオタクなので気にしてしまう

21:21:10 @lo48576@mastodon.cardina1.red
2021-12-08 21:20:13 kb10uyの投稿 kb10uy@mstdn.maud.io
そぎぎ
icon

「i が 3 以下」ってセックスっぽく見えないか?

21:21:26 @lo48576@mastodon.cardina1.red
icon

今日のVIP

21:21:45 @lo48576@mastodon.cardina1.red
icon

i は括弧に入れると良いかもしれない (???)

21:23:39 @lo48576@mastodon.cardina1.red
2021-12-08 21:22:46 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

ifでnotの有無の間違いによるミスってコンパイラが検出できないバグの率高くない?><;

21:23:49 @lo48576@mastodon.cardina1.red
icon

そもそもそんなに気になるなら boolean 避けた方がいいんだよなぁ

21:24:52 @lo48576@mastodon.cardina1.red
icon

あるいは is_foo() と is_not_foo() を用意する手もあるだろうし、あるいは enum class Foo { Present, Absent } のようにする手もあるだろうし、やりようはいくらでもある。ただ API デザインをする人が思想を持っているか次第

21:25:11 @lo48576@mastodon.cardina1.red
icon

まあ誤りがあるにせよテストで検知できないようでは駄目じゃん? というお気持ちがあります

21:25:37 @lo48576@mastodon.cardina1.red
icon

条件の意図せぬ反転なんて assert 挟みまくってユニットテストちゃんと書けばそれなりの割合で検知できそうだし (根拠なし)

21:26:05 @lo48576@mastodon.cardina1.red
icon

というか assert 挟みまくって意図せぬブランチに進んでいるのに気付くのはデバッグ以前の段階でコーディング作業の一部なので

21:26:19 @lo48576@mastodon.cardina1.red
2021-12-08 21:26:09 まちカドおるみん御嬢様の投稿 orumin@mstdn.maud.io
icon

開発環境やコンパイラ、と含みを持たせたのは、当然テストを書くだとかなんとかもっと色々やるのがラクな環境があることの含みであって、syntax checker さえあればという話ではない

21:29:54 @lo48576@mastodon.cardina1.red
2021-12-08 21:29:05 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

「読みづらくても(コンパイラやテスト環境がしっかりしてれば)何とかなる!」って、それ「読みづらいコードでもコンパイラやテスト環境がしっかりしてれば問題ないので読みづらいコードを書いてもよい」って主張と何が違うのか?><;

21:30:10 @lo48576@mastodon.cardina1.red
icon

その「読みづらい」は「視認性が良くない」と「意図を読み取りづらい」が混同されていて、区別するべきだと思いますね

21:30:48 @lo48576@mastodon.cardina1.red
icon

どうでもいいけど { ... } はわかりづらいから BEGIN ... END にしたがる人の話を思い出したわ

21:31:00 @lo48576@mastodon.cardina1.red
icon

# define BEGIN {
# define END }

21:32:02 @lo48576@mastodon.cardina1.red
icon

Cプログラミング診断室/Pascalが好き/Pascal?
pro.or.jp/~fuji/mybooks/cdiag/

> ■破門■

Cプログラミング診断室/Pascalが好き/Pascal?
21:32:31 @lo48576@mastodon.cardina1.red
icon

よくみると
# define END ;}
になってて、気が利いているのかいないのか……

21:32:58 @lo48576@mastodon.cardina1.red
2021-12-08 21:32:43 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

そこまではしないけど、Pascal好きとしては色つきのエディタならばbegin endの方が見やすく感じてる><;

21:33:28 @lo48576@mastodon.cardina1.red
icon

これって結局「括弧がクソデカく見えてくれ」とかの話であって、「{ はブロック開始であるという意味が読み取りづらいからクソコードの温床になる!」みたいな理屈にはならないじゃん、という気持ち

21:34:55 @lo48576@mastodon.cardina1.red
icon

たとえばこれが case-esac だったり い if-fi だったり、または for-endfor だったり if-endif だったりといった追加情報がある方が { ... } よりいいじゃん、という理屈であれば私も同意するけど、 begin-end って幅と占有面積以外何も違わないじゃん。そういうのは議論の対象外。

21:35:15 @lo48576@mastodon.cardina1.red
icon

トレードオフ関係がある好みの問題でしかない。

21:36:25 @lo48576@mastodon.cardina1.red
icon

幅と占有面積以外にも「識別子っぽいかそうでないか」も違いますね (個人的にはここが重要だけど)

21:37:16 @lo48576@mastodon.cardina1.red
2021-12-08 21:35:40 もちゃ(あと-18.60Kg)の投稿 mot@mastodon.motcha.tech
icon

このアカウントは、notestockで公開設定になっていません。

21:37:17 @lo48576@mastodon.cardina1.red
2021-12-08 21:37:05 もちゃ(あと-18.60Kg)の投稿 mot@mastodon.motcha.tech
icon

このアカウントは、notestockで公開設定になっていません。

21:37:19 @lo48576@mastodon.cardina1.red
icon

<=>

21:38:52 @lo48576@mastodon.cardina1.red
2021-12-08 21:38:29 まちカドおるみん御嬢様の投稿 orumin@mstdn.maud.io
icon

@kb10uy 日本で有名なのは『C プログラミング診断室』のやつだけど、それ以前に Unix v7 の Bourne Shell の実装からしてそんななので由緒正しい(?)邪悪な記法 minnie.tuhs.org/cgi-bin/utree.

21:39:10 @lo48576@mastodon.cardina1.red
2021-12-08 21:37:54 ꙮ itochan ꙮの投稿 itochan@misskey.io
icon

このアカウントは、notestockで公開設定になっていません。

21:41:26 @lo48576@mastodon.cardina1.red
icon

}//なんとか

だと、ズレてても検出できないんですよね。

while(cond1) {
while(cond2) {
foo();
}//while
if(cond3) {
bar();
}//if
}//while

while(cond) {
while(cond2) {
/* このあたりでごっそりコードを消したが、うっかり消しすぎた */
bar();
}//if
}//while

になっていても、コンパイルが通ってしまう。
で、ブロックの中身がデカかったらミスマッチに気付けない。

21:46:50 @lo48576@mastodon.cardina1.red
2021-12-08 21:44:47 おさの投稿 osapon@mstdn.nere9.help
icon

UFO演算子を聞いたときは、ふざけてんのかって思った。

21:46:59 @lo48576@mastodon.cardina1.red
2021-12-08 21:46:06 めざせ引越しくんの投稿 sota_n@social.mikutter.hachune.net
icon

このアカウントは、notestockで公開設定になっていません。

21:47:01 @lo48576@mastodon.cardina1.red
2021-12-08 21:46:35 めざせ引越しくんの投稿 sota_n@social.mikutter.hachune.net
icon

このアカウントは、notestockで公開設定になっていません。

21:47:03 @lo48576@mastodon.cardina1.red
2021-12-08 21:46:40 もちゃ(あと-18.60Kg)の投稿 mot@mastodon.motcha.tech
icon

このアカウントは、notestockで公開設定になっていません。

21:47:23 @lo48576@mastodon.cardina1.red
icon

\:=  ←ヒトラー演算子

21:47:39 @lo48576@mastodon.cardina1.red
2021-12-08 21:47:21 まちカドおるみん御嬢様の投稿 orumin@mstdn.maud.io
icon

知らん operator や keyword、APL に勝るものはないのでもうなんでもいいです

21:49:24 @lo48576@mastodon.cardina1.red
icon

Haskell の not equal が /= なのを誰も挙げてなくて、界隈の偏りを感じる

21:49:57 @lo48576@mastodon.cardina1.red
icon

あと Scheme の eq? / eqv? / equal? も

21:50:20 @lo48576@mastodon.cardina1.red
icon

手続き型言語を親と思って育った人しかいなそう

21:50:59 @lo48576@mastodon.cardina1.red
2021-12-08 21:50:16 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

宇宙船演算子、こういう風に静的型付けの環境でこういう風にするのであれば普通に便利なのではかもって気がしてる><

ちゃんと型検査される、『「どっちがでかいの?ていうか同じ?」型』>< gist.github.com/orange-in-spac

Web site image
ちゃんと型検査される、『「どっちがでかいの?ていうか同じ?」型』><
21:51:41 @lo48576@mastodon.cardina1.red
icon

doc.rust-lang.org/stable/std/c

もう世界で百億人くらい同じこと考えていて綺麗な言語は既にそうなっているので、そうなっていないレガシー言語がしょーもないとかいう話をグダグダしていること自体がしょーもない

21:52:41 @lo48576@mastodon.cardina1.red
2021-12-08 21:51:07 めざせ引越しくんの投稿 sota_n@social.mikutter.hachune.net
icon

このアカウントは、notestockで公開設定になっていません。

21:52:41 @lo48576@mastodon.cardina1.red
2021-12-08 21:51:10 kb10uyの投稿 kb10uy@mstdn.maud.io
icon

=/= を忘れてもらっちゃ困りますわ

21:52:42 @lo48576@mastodon.cardina1.red
2021-12-08 21:51:01 まちカドおるみん御嬢様の投稿 orumin@mstdn.maud.io
icon

APL はたぶん手続き型じゃないから……

21:52:43 @lo48576@mastodon.cardina1.red
2021-12-08 21:51:45 まちカドおるみん御嬢様の投稿 orumin@mstdn.maud.io
icon

APL の not equal はちゃんと /= でも =/= でもなくて ≠ ですからね!!!

21:52:51 @lo48576@mastodon.cardina1.red
2021-12-08 21:52:45 kb10uyの投稿 kb10uy@mstdn.maud.io
icon

HSP のモジュロ演算子が \ な話とかしますか?

21:52:53 @lo48576@mastodon.cardina1.red
2021-12-08 21:52:48 まちカドおるみん御嬢様の投稿 orumin@mstdn.maud.io
icon

=/= って Erlang なのか

21:53:35 @lo48576@mastodon.cardina1.red
2021-12-08 21:53:26 kb10uyの投稿 kb10uy@mstdn.maud.io
icon

Prolog のつもりで言ったけど系統的に Earlang も受け継いでるのか

21:54:18 @lo48576@mastodon.cardina1.red
icon

理屈の上での美しさと正しさを考えたいならまず Haskell をやるべき

22:03:42 @lo48576@mastodon.cardina1.red
icon

型定義のまんまですね

22:04:21 @lo48576@mastodon.cardina1.red
icon

Ordering::cmp() が Ordering を返す。 Ordering は Greater, Equal, Less の3つの値のいずれかをとる。
素朴。

22:04:39 @lo48576@mastodon.cardina1.red
22:05:31 @lo48576@mastodon.cardina1.red
icon

@orange_in_space gist.github.com/orange-in-spac

この部分と何が違うのかわからないんですが
(a.cmp(&b) は Ord::cmp(&a, &b) とも書けますが、そうすればもっと同じですよね)

Web site image
ちゃんと型検査される、『「どっちがでかいの?ていうか同じ?」型』><
22:07:08 @lo48576@mastodon.cardina1.red
icon

@orange_in_space 「a<=>b の結果が OrderIs.LessThanRight であるとき以下略」と「Ord::cmp(&a, &b) の結果が Ordering::Less であるとき以下略」のどこが本質的に違うのかわからないんですが。
<=> 演算子がないと満足できないって話ですか?

22:07:16 @lo48576@mastodon.cardina1.red
2021-12-08 22:07:00 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

@lo48576 ぜんぜん違うじゃん?><; それで言う所のOrd型(?)を返す演算子があったら便利だよね!>< って話を書いてるのに><

22:07:20 @lo48576@mastodon.cardina1.red
icon

あ、本当に演算子の話なのか

22:08:01 @lo48576@mastodon.cardina1.red
icon

演算子か否かなんてマジで表象の話じゃん

22:09:13 @lo48576@mastodon.cardina1.red
icon

@orange_in_space なぜそうなっていないかというと、 PartialOrd (<doc.rust-lang.org/stable/std/c>) などの概念があり、「NaN と NaN を比較したときどうすんの」などの問題があるからだと思われます。
Nan <=> NaN は何を返すべきだと思いますか? Rust ではそういう面倒な問題はそもそもありません

22:11:40 @lo48576@mastodon.cardina1.red
icon

そういえば C++ の ordering も strong と weak があって云々などあった気がするけど、今どうなってんだ?

22:12:05 @lo48576@mastodon.cardina1.red
2021-12-08 22:11:52 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

宇宙船演算子 - Wikipedia ja.wikipedia.org/wiki/%E5%AE%8

”Perl (数値のみ)[1]、PHP (バージョン7以上)[2]、Ruby[3]、Apache GroovyはA < B、A == B、A > Bのケースでそれぞれ-1、0、1を返す実装契約を規定している。”
みたいな実装だと型がゆるふわで気持ち悪いけど、ちゃんと型がかっちりしてる言語で導入すれば、宇宙船演算子が返すのが『「順序はこうだよ!」って型』を返すので安全だし、安全なまま短く書くメリットが出ていいじゃん!?><
っていう話をしてる><

Web site image
%E5%AE%87%E5%AE%99%E8%88%B9%E6%BC%94%E7%AE%97%E5%AD%90
22:12:27 @lo48576@mastodon.cardina1.red
icon

だから、それが「a.cmp(b)」でなく「a <=> b」のような形でないといけないという強い信念は何なんだ? という話をしてます

22:12:49 @lo48576@mastodon.cardina1.red
icon

ちゃんと比較演算の結果は「デカい」「同じ」「小さい」の3値の専用型で返ってくるわけですよ

22:12:51 @lo48576@mastodon.cardina1.red
2021-12-08 22:12:45 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

宇宙船演算子の話が出てたからその話をしたんじゃん!?><

22:14:03 @lo48576@mastodon.cardina1.red
icon

宇宙船演算子の本質は「(boolean ではなく) 3値を返す、情報量の多い比較である」ところであって、宇宙線の形でも演算子であることでもないでしょう

22:15:11 @lo48576@mastodon.cardina1.red
icon

特に、比較結果専用の型が返ってくるという点で安全性というか「設計の正しさ」は十分に実現されているといえるはずなのでは?

22:15:23 @lo48576@mastodon.cardina1.red
icon

こだわりポイントがわからない

22:16:08 @lo48576@mastodon.cardina1.red
icon

Standard library header <compare> - cppreference.com
en.cppreference.com/w/cpp/head

C++ は各 ordering に型を用意するようにしたのね

Standard library header - cppreference.com
22:16:32 @lo48576@mastodon.cardina1.red
22:16:50 @lo48576@mastodon.cardina1.red
icon

それは「ThreeWayComparison.Compare(a, b)」と「a <=> b」を比べるから落差が大きいのであって、言語仕様の問題では?

22:18:41 @lo48576@mastodon.cardina1.red
icon

たとえば Rust ではさっきの例 (a.cmp(&b)) はフル修飾すると
<std::string::String as std::cmp::Ord>::cmp(&a, &b)
になるわけですが、言語仕様と標準ライブラリ設計がうまくできているのでこれを
a.cmp(&b)
と書けるわけです。ここから敢えて (a.partial_cmp(&b) の存在を無視してまで) a <=> b を導入しないと片手落ちだと主張するほどの強い信念って何なんですか?

22:19:06 @lo48576@mastodon.cardina1.red
2021-12-08 22:18:53 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

だから、短く書けたら便利だから宇宙船演算子欲しい(けども整数型で帰ってくるなんてキモイ仕様は絶対ヤダ)って言ってるんじゃん!?><

22:19:20 @lo48576@mastodon.cardina1.red
icon

つまり C# ではそういう演算子が欲しい、というだけで言語一般の話はしてなかったわけですか

22:19:39 @lo48576@mastodon.cardina1.red
icon

短く書けて整数で返ってこない比較の例を出したのに満足されていないので

22:20:39 @lo48576@mastodon.cardina1.red
icon

あと結局 NaN <=> NaN では何が返ってくるべきだと思ってるのだろう (これは素朴な疑問)

22:22:16 @lo48576@mastodon.cardina1.red
icon

「比較や順序にも複数の概念がある」という前提で考えたとき、

1. その中の特定のひとつだけに演算子を与える
2. すべてを統合して、オペランドの型次第で比較結果の型も変化する
3. 演算子を割り当てない

のいずれかを選択することになるよね。
C++20 は 2 (のはず) で、 Rust は 3 なんだけど

22:23:23 @lo48576@mastodon.cardina1.red
icon

Standard library header <compare> - cppreference.com
en.cppreference.com/w/cpp/head

C++ の ordering のあれこれを知っていたら、「three way comparison は Greater / Eq / Less を返す!」みたいな簡単な発想では足りないというのはわかりそうなものだけど……

Standard library header - cppreference.com
22:24:37 @lo48576@mastodon.cardina1.red
2021-12-08 22:24:17 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

mstdn.nere9.help/@orange_in_sp

"宇宙船演算子、"
"こういう風に静的型付けの環境でこういう風にするのであれば"
↑つまり型がしっかりしてるならば

"普通に便利なのではかもって気がしてる><"
"がも"が"ではかも"になってて意味不明だけど、つまり元ネタには型の問題があるけどそれさえクリアできれば普通に便利かもって言ってる><

Web site image
orange (@orange_in_space@mstdn.nere9.help)
22:24:48 @lo48576@mastodon.cardina1.red
icon

元ネタつったって <=> を実装している言語なんて沢山あるって話ですよ

22:25:24 @lo48576@mastodon.cardina1.red
icon

PHP か何かの話をしているなら、そもそもそんな静的型付きでさえない言語を論って一体なにを言いたいのというレベルだし

22:28:26 @lo48576@mastodon.cardina1.red
2021-12-08 22:28:12 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

オレンジ語っぽさをがんばってなくすなら
「宇宙船演算子って簡潔に書けて便利そう。でも、型がゆるふわで整数型で返すような実装はごめんだなぁ」
って言うことを最初に書いた><
そしたら「Rustはハイカラなので順序はちゃんと型で返す!!!」って話が返ってきて「そういう話をしてるんじゃないんだけど?><;」ってなった><

22:29:40 @lo48576@mastodon.cardina1.red
icon

私が言いたいのは、「『でも、型がゆるふわで整数型で返すような実装はごめんだなぁ』は動的型付き言語について言ってるならナンセンスだし、静的型付き言語相手に言ってるならマトモな言語は皆そうなってるし、誰を批判してるんだ?」ということです。
雑に言えば藁人形っぽい。

22:30:20 @lo48576@mastodon.cardina1.red
icon

型が雑な言語に「型がキッチリしてればいいのになぁ」って、それ単なる嫌味だし何ひとつとして得るものがない非建設的な話ですよね

22:30:46 @lo48576@mastodon.cardina1.red
icon

型がマトモな言語で三方比較が -1 / 0 / 1 を返す例を知らないので

22:31:12 @lo48576@mastodon.cardina1.red
icon

もしかして strcmp の話してました? (そんなことはないと勝手に思ってたけど)

22:32:22 @lo48576@mastodon.cardina1.red
icon

mastodon.cardina1.red/@lo48576

「綺麗な言語は既にそうなっているので、そうなっていないレガシー言語がしょーもないとかいう話をグダグダしていること自体がしょーもない」がまさに「動的型付き言語について言ってるならナンセンスだし、静的型付き言語相手に言ってるならマトモな言語は皆そうなってるし、誰を批判してるんだ?」の部分です

Web site image
らりお・ザ・何らかの🈗然㊌ソムリエ (@lo48576@mastodon.cardina1.red)
22:33:10 @lo48576@mastodon.cardina1.red
icon

そもそも批判の意図が一切なかったという話ならサーセン……

22:34:32 @lo48576@mastodon.cardina1.red
icon

まさかこれから比較で -1 を返すような演算子を新規導入する静的型付き言語とか常識的になさそうなので、わざわざ言うようなことでもなくね? との理解から批判だと思い込んでたけど

22:38:14 @lo48576@mastodon.cardina1.red
icon

宇宙船演算子 - Wikipedia
ja.wikipedia.org/wiki/%E5%AE%8

改めて確認してきたけど、整数返す実装なんて全部動的型付き言語やんけ

Web site image
%E5%AE%87%E5%AE%99%E8%88%B9%E6%BC%94%E7%AE%97%E5%AD%90
22:38:17 @lo48576@mastodon.cardina1.red
2021-12-08 22:37:57 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

少なくともwikipedia日本語版の記事の例示だと型がゆるふわな環境以外での宇宙船演算子の実装事例が書いて無いけど、型がきっちりな宇宙船演算子導入事例って具体的にどんなのがあるの?><

22:38:19 @lo48576@mastodon.cardina1.red
icon

C++

22:39:13 @lo48576@mastodon.cardina1.red
icon

はい、「<=>」を実装している沢山ある言語のなかでも静的型付きなのは C++ だけでしたね

22:39:27 @lo48576@mastodon.cardina1.red
icon

<=> を勝手に脳内で「三方比較」と読み替えていました

22:40:41 @lo48576@mastodon.cardina1.red
icon

mastodon.cardina1.red/@lo48576
こういう考えなので、欲しいのが「マトモで端的な三方比較」ではなく「<=>という演算子」だとは思ってなかったんですよ

Web site image
らりお・ザ・何らかの🈗然㊌ソムリエ (@lo48576@mastodon.cardina1.red)
22:40:53 @lo48576@mastodon.cardina1.red
icon
Web site image
らりお・ザ・何らかの🈗然㊌ソムリエ (@lo48576@mastodon.cardina1.red)
22:42:47 @lo48576@mastodon.cardina1.red
icon

まあ言いたいことはわかりました、 C# (.NET) では現状存在する三方比較では短く書くことができないので <=> みたいな形で演算子がどうしてもほしい、なるほどそうですね

22:42:56 @lo48576@mastodon.cardina1.red
2021-12-08 22:42:46 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

じゃあ最初から「そんな心配しなくてもC++では宇宙船演算子が型をきっちりとした実装で導入されるからそんな心配しなくても大丈夫だよ!」で50分の謎のやり取りしないで済んだじゃん?><

22:43:23 @lo48576@mastodon.cardina1.red
icon

や、だってまさか言いたいことの本題が「C# の三方比較クソ長ったらしすぎ」だったとは思いませんよ

22:43:37 @lo48576@mastodon.cardina1.red
icon

もっと本質的な言語設計の話をしているものだとばかり思っていました

22:45:15 @lo48576@mastodon.cardina1.red
icon

まああと前の文脈を掘り起こすなら、「a <=> b」と「a.cmp(b)」のどちらが読解しやすい? みたいなアレのお気持ちもある (べつに私は慣れだと思うので心底どうでもいいんだけど、 {} と begin-end だったり and/or と &/| を気にする人はそういうの気にしそうだなとは思った)

22:45:32 @lo48576@mastodon.cardina1.red
2021-12-08 22:44:25 ぼろんじ(100tpt)の投稿 boronology@social.penguinability.net
icon

このアカウントは、notestockで公開設定になっていません。

22:45:34 @lo48576@mastodon.cardina1.red
2021-12-08 22:45:07 ぼろんじ(100tpt)の投稿 boronology@social.penguinability.net
icon

このアカウントは、notestockで公開設定になっていません。

22:46:17 @lo48576@mastodon.cardina1.red
icon

C# の switch 知らんけど見たところ C の switch とおおよそ似たようなものだと考えると、「switch が式ではない制御構文である限り楽にはなれない」くらいが答えという気がする

22:46:40 @lo48576@mastodon.cardina1.red
icon

まあこの言説は暗黙に「ブロックを式にする方法があるべし」も含んでいるけど

22:47:17 @lo48576@mastodon.cardina1.red
2021-12-08 22:46:41 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

C# はそこに関してはなぜか型がゆるふわだけど、別に長くないよ?>< むしろオレンジの書き方の方が冗長><

22:48:10 @lo48576@mastodon.cardina1.red
icon

IComparable インターフェイス (System) | Microsoft Docs
docs.microsoft.com/ja-jp/dotne

え、マジで現代に静的型付きなのに三方比較を int で返す言語があったの!?
それはごめんなさい、 C# のマトモでなさを見誤ってました

22:48:32 @lo48576@mastodon.cardina1.red
icon

えぇ……そんなことある? Java の仕様を引き継いでるとかそういう系か?

22:49:31 @lo48576@mastodon.cardina1.red
icon

Comparable (Java Platform SE 8 )
docs.oracle.com/javase/jp/8/do

やっぱり Java 由来っぽい雰囲気あるな。
まあ組込み配列型が共変な言語だからなぁ…… (←何回擦るのか)

22:50:11 @lo48576@mastodon.cardina1.red
2021-12-08 22:50:01 ぼろんじ(100tpt)の投稿 boronology@social.penguinability.net
icon

このアカウントは、notestockで公開設定になっていません。

22:50:21 @lo48576@mastodon.cardina1.red
icon

いいじゃん、人々が求めていたものだ

22:51:45 @lo48576@mastodon.cardina1.red
icon

C# 、2000年発の言語なのにどうしても新しめな印象を持ってしまうけど、コア部分の言語仕様が Java のあれこれを引き継いでいて、そもそも2000年って結構昔……みたいなアレ

22:52:45 @lo48576@mastodon.cardina1.red
icon

うーん……

22:52:59 @lo48576@mastodon.cardina1.red
icon

歴史の重みなぁ

22:53:06 @lo48576@mastodon.cardina1.red
2021-12-08 22:53:01 shibafu528の投稿 shibafu528@social.mikutter.hachune.net
icon

バージョン覚えてないからランタイムで言うけど.NET FW <= 2.0までに産まれたやつと4.5 <=あたりで産まれたやつの差がデカすぎるだろ…

22:53:45 @lo48576@mastodon.cardina1.red
icon

@yumetodo 専用の enum

22:55:11 @lo48576@mastodon.cardina1.red
2021-12-08 22:53:17 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

オレンジのさっきのgistでの本題として言いたい事はそのおかしさで、なおかつ、ちゃんと型安全にするのであれば宇宙船演算子を導入すると便利そうって言いたかった><
あと、この事例がまさにそうだけど、こういう場合には静的か動的かって話ではなく型安全とか強い弱いの文脈の話であって動的でゆるふわだけど強い型付けとか色々あるわけであって、静的/動的ではあんまり書かないほうがいいんでは感><

22:55:57 @lo48576@mastodon.cardina1.red
icon

そもそも静的型付き言語は型をしっかりつけろという前提があると仮定していたので、静的型付きなのにガバい言語とかいまどき新しく用意するか? と思っていたという話です。
古代言語の系譜なら C みたいにガバいのも仕方ないとなるけど

22:57:01 @lo48576@mastodon.cardina1.red
icon

@yumetodo 意味が明確化されるとか、メソッド生やせるとか
(まで書いたところで C++ の enum にはメソッドを生やせないことを思い出してしまった……)

22:59:48 @lo48576@mastodon.cardina1.red
icon

@yumetodo や、でも
class Ordering {
int v;
constexpr Ordering(int n):v{n} {}
public:
operator int() { return v; }
static constexpr Ordering greater = Ordering{n};
// ...
};
みたいな感じで擬似的に enum っぽくして整数への型変換も許してメソッド (たとえば .reverse()) を生やせるようにするみたいな手はあった気がするんですよね。

23:00:21 @lo48576@mastodon.cardina1.red
icon

ジェネリックであることとゆるふわであることは全然違う……

23:00:39 @lo48576@mastodon.cardina1.red
icon

や、件の言語がどうなのかは知らんけど

23:01:11 @lo48576@mastodon.cardina1.red
icon

@yumetodo あ、でもこれだと switch での網羅性検査ができないんですね……もうだめだ

23:04:46 @lo48576@mastodon.cardina1.red
icon

@yumetodo 比較にも種類があるというのは完全に同意で、その結果として比較種類次第で結果型もまた変わってくるはずなので、整数だとその辺り曖昧にならないか……? みたいな気持ちがちょっとあります (たとえば NaN と NaN を比較して unordered だというのは整数でどう表現するんだ? という)

23:05:07 @lo48576@mastodon.cardina1.red
2021-12-08 23:02:18 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

そもそも型がゆるふわかどうか面って、どこがどのようにゆるふわかで例えばオレンジが大好きな(だけど実用はしたことが無い)Adaの思想であれば「整数型とかそのまま使うのマジ!? ちゃんと名前ついた型作れよ」みたいな発想だし、あれかも><

23:05:09 @lo48576@mastodon.cardina1.red
2021-12-08 23:03:57 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

で、強い弱いも型安全も文化圏によってかなり指すものが違ったりするので、オレンジは「ゆるふわ」ってゆるふわな書き方をしてた><;

23:06:20 @lo48576@mastodon.cardina1.red
icon

そもそも雑でいいやという思想だと動的型付けになりがちなので (スクリプト言語の大半もそうだし)、そのあたりのコアの思想が明確でない中途半端というか一貫しない言語はそもそも考慮する価値をあまり感じないですね……

23:07:23 @lo48576@mastodon.cardina1.red
icon

en.cppreference.com/w/cpp/util

weak ordering、 Rust が Option<Ordering> を使っている一方で C++ は std::partial_ordering を用意しているの、個性というか方向性の違いを感じる

23:08:47 @lo48576@mastodon.cardina1.red
icon

Rust は代数的データ型のパターンマッチがあって C++ はそうではないという文法が表れているという認識。
C++ だとswitch(ord) { case optional.value(greater): ... } みたいなこと書けないから

23:09:02 @lo48576@mastodon.cardina1.red
2021-04-01 20:18:09 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

オレンジが言いたい事としては、この議論をするなら、特に型システムの議論に慣れてない人がいる場合には、『動的静的の厳密な違いの話』( mstdn.nere9.help/@orange_in_sp mstdn.nere9.help/@orange_in_sp )と、『静的型な環境と動的型な環境それぞれの傾向の話』は厳密には違うって話もしてあげないと、混乱して可哀想かもって・・・><

Web site image
orange (@orange_in_space@mstdn.nere9.help)
Web site image
orange (@orange_in_space@mstdn.nere9.help)
23:09:22 @lo48576@mastodon.cardina1.red
icon

そもそも言語の設計の話をするならその辺りは教養の範囲内ではの気持ちがなくもないので……

23:10:05 @lo48576@mastodon.cardina1.red
icon

特定の相手を想定するならそこに合わせようとは思うけど

23:11:44 @lo48576@mastodon.cardina1.red
icon

Go が代数的データ型を導入してないの本当に謎なんだよな、いや謎もなにも言語としての表現力や抽象のしやすさよりも多数のユーザに書かせるときのコードの複雑さのアラインとかを考えているとか、そういう産業的な理由なのだろうけど

23:11:54 @lo48576@mastodon.cardina1.red
2021-12-08 23:11:30 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

でも、お約束の
1 + "hoge"
がエラーになるかどうかみたいなのもどう型付けするかの話であって動的静的の話とは直接関係ないって、そこ理解してない人が多い話ではあるかも><

23:12:53 @lo48576@mastodon.cardina1.red
icon

そういう (言ってみればエッジケース的でもある) 話、結局「自然なセマンティクス」があるよねという話になるので、最低限意味論という概念を認識できていないとどうしようもないし、この話をするたびにいちいち意味論について書くほど暇でもないというのがある

23:13:59 @lo48576@mastodon.cardina1.red
icon

@yumetodo 目が潰れた (単純なエラーなのにどうしてこうも……)

23:15:02 @lo48576@mastodon.cardina1.red
icon

C++ のエラーメッセージは先頭から読むこと。お兄さんとの約束だぞ

23:15:36 @lo48576@mastodon.cardina1.red
2021-12-08 23:15:18 砂狼あずにゃんの投稿 osa_k@social.mikutter.hachune.net
icon

このアカウントは、notestockで公開設定になっていません。

23:16:39 @lo48576@mastodon.cardina1.red
2021-12-08 23:16:33 砂狼あずにゃんの投稿 osa_k@social.mikutter.hachune.net
icon

このアカウントは、notestockで公開設定になっていません。

23:17:02 @lo48576@mastodon.cardina1.red
2021-12-08 23:16:52 ぼろんじ(100tpt)の投稿 boronology@social.penguinability.net
icon

このアカウントは、notestockで公開設定になっていません。

23:17:15 @lo48576@mastodon.cardina1.red
icon

文字通り終わりの見えないコンパイルエラーの話は

23:17:36 @lo48576@mastodon.cardina1.red
icon

自然でないセマンティクスの好例としては Malbolge などが挙げられる

23:28:12 @lo48576@mastodon.cardina1.red
icon

昔、代数的データ型がどう代数的なのかとてもよく語っているブヨグがあったんだけど、たぶん消えてしまった

23:29:00 @lo48576@mastodon.cardina1.red
icon

以後そのような web 記事を他で見たことがないので、なんとなれば私が書く必要が……みたいな気持ちがちょっとある (いやまあ探せば沢山あるんだろうけど)

23:29:12 @lo48576@mastodon.cardina1.red
icon

代数的データ型は教養

23:30:00 @lo48576@mastodon.cardina1.red
icon

こういう話をするたびに「なぜ Go は……」とか思ってしまうのでマジで健康に悪い、 Go に関するすべての知識を脳から一掃して健康になりたい

23:32:34 @lo48576@mastodon.cardina1.red
icon

育ちが悪いので、 Rust を書いててブロックが式になるけど手続き型っぽいのなどを見て最初に浮かんだ感想は「これ Ruby で見たやつだ、いいじゃん」でした (Scheme ではなかった)

23:33:25 @lo48576@mastodon.cardina1.red
icon

ポヨグヤミン入門が論理回路からの Verilog からの C だったので、どうしても手続き型視点がなぁ

23:38:22 @lo48576@mastodon.cardina1.red
2021-12-08 23:37:33 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

なんでVerilogから入ったのにPascal系の風習に慣れなかったのか謎><;

23:38:37 @lo48576@mastodon.cardina1.red
icon

CPU を設計するときと CPU を駆動するプログラムを設計するときは脳の使う領域が違うので……

23:39:33 @lo48576@mastodon.cardina1.red
icon

論理回路の設計なんてリアクティブプログラミングの典型例みたいなところがある (適当) けど、それは日頃コードを書くとき CPU の声を聞きたくなるというのとは別のレイヤーの話なので

23:40:00 @lo48576@mastodon.cardina1.red
icon

(言語意味論の定義で利用される抽象機械の) CPU の声

23:40:49 @lo48576@mastodon.cardina1.red
icon

あと言語について語るとき大抵は syntax の話なんて興味なくて semantics の方しか見てないので

23:41:07 @lo48576@mastodon.cardina1.red
icon

シェルスクリプトで case - esac なのが { ... } じゃなくて不満だとか、そういうことは思わないし

23:41:16 @lo48576@mastodon.cardina1.red
icon

自分で設計するときそうするかというのは別の話

23:41:38 @lo48576@mastodon.cardina1.red
2021-12-08 23:40:27 しらか :saba:の投稿 crakaC@don.crakac.com
icon

このアカウントは、notestockで公開設定になっていません。

23:43:22 @lo48576@mastodon.cardina1.red
icon

for (int x = 0; x < col; x++) {
for (int y = 0; y < row; y++) {
arr[y][x] = foo(x, y);
}
}

こうですか

23:45:02 @lo48576@mastodon.cardina1.red
icon

これからの人生であと何回「共変な配列型」と打つことになるのか…… (クズ)

23:52:34 @lo48576@mastodon.cardina1.red
2021-12-08 23:51:49 砂狼あずにゃんの投稿 osa_k@social.mikutter.hachune.net
icon

このアカウントは、notestockで公開設定になっていません。

23:52:49 @lo48576@mastodon.cardina1.red
icon

実際厄介な問題ではある、どうするのがいいんでしょうね

23:53:24 @lo48576@mastodon.cardina1.red
icon

Rust の AsRef<T> と AsMut<T> みたいなのはひとつのやり方だと思うけど、 AsMut<T> の前提として AsRef<T> の実装が求められているのであまり継承がどうという方向で適当かは……

23:53:39 @lo48576@mastodon.cardina1.red
icon

subtyping をなくす、正解!!!

23:53:47 @lo48576@mastodon.cardina1.red
icon

23:54:06 @lo48576@mastodon.cardina1.red
2021-12-08 23:53:58 砂狼あずにゃんの投稿 osa_k@social.mikutter.hachune.net
icon

このアカウントは、notestockで公開設定になっていません。