代数的データ型と直和型と直積型とTypeScript

正直TypeScriptはあんまり関係ない
3
わかめ@毎日猫がいる @vvakame

TypeScriptのunion typesと直和型と直積型と多相と小クワガタの区別をつけるための学習を始めよう。zakki 先生の教えに従う。 twitter.com/k_matsuzaki/st…

2014-11-25 23:04:27
zakki @k_matsuzaki

@vvakame site:ac.jp つきでぐぐって講義スライド探すのわりといいです

2014-11-16 15:46:44
わかめ@毎日猫がいる @vvakame

TypeScriptのunion types、普通に直和型っぽい。

2014-11-25 23:08:50
わかめ@毎日猫がいる @vvakame

代数的データ型ってなんだっけ

2014-11-25 23:12:14
Masanori Ogino @omasanori

@vvakame 型を組み合わせて作られる型です。タプルやHaskellでいうEitherなど

2014-11-25 23:19:09
わかめ@毎日猫がいる @vvakame

@omasanori Maybeは違うんです?(2種類以上必要?

2014-11-25 23:19:47
わかめ@毎日猫がいる @vvakame

直和型あるのにパターンマッチないの片手落ち感高い

2014-11-25 23:20:49
わかめ@毎日猫がいる @vvakame

union typesだけで直和型なのかなー。type aliasまで含めて直和型なのかなー。それとも直和型じゃないのかなー。

2014-11-25 23:22:09
Masanori Ogino @omasanori

@vvakame あー、なるほど。正直に言って意識したことはなかったですが、Maybe aも代数的データ型だと思います。Maybe aはaが表せる値に加えてNothingが表せるので、Either a ()のようなものとみなせるというのが私がそう思う理由です。

2014-11-25 23:33:28
tomo🐧@learning @cocoatomo

代数データ型の話題に入りたいけど, 圏論の言葉でしか語れないので怖がらせそうで自粛(′・ω・`)

2014-11-25 23:35:29
わかめ@毎日猫がいる @vvakame

直和型も直積型も代数的データ型の一種っぽい気がするな?

2014-11-25 23:37:28
Masanori Ogino @omasanori

(謎の頭痛に襲われる)

2014-11-25 23:38:29
わかめ@毎日猫がいる @vvakame

そもそも混ぜて扱っていい概念なのかコレ

2014-11-25 23:38:38
わかめ@毎日猫がいる @vvakame

この辺のワード使って普段議論してる人々は本当に細かい区別がついているのかしらん…。

2014-11-25 23:39:26
わかめ@毎日猫がいる @vvakame

Maybe a も Just a と Nothing の直和型なのか。そういえばそうですね?

2014-11-25 23:41:49
tomo🐧@learning @cocoatomo

@vvakame @omasanori 横からすみません. Maybe, List, Tree あたりが頻出の代数的データ型です. Bool も実は代数的データ型です. > lunashade.wpblog.jp/?p=81 slideshare.net/syamino/ss-129…

2014-11-25 23:43:46
Masanori Ogino @omasanori

@vvakame 直和型は和だと思うとおおむね良くて(というか実際に和)、n_a通りの値をとる型aとn_b通りの値をとる型bに対してa | bはn_a + n_b通りの値をとって、Maybe aはn_a + 1通りの値をとるのでa | ()も同然みたいな感じです

2014-11-25 23:46:50
わかめ@毎日猫がいる @vvakame

説明されたらわかるけど自分で説明できる感じはあんまりない(小声

2014-11-25 23:47:44
Masanori Ogino @omasanori

説明に迷っている間にもっとまともな解説が来た

2014-11-25 23:47:53
わかめ@毎日猫がいる @vvakame

n_a通りの値を取る型aとn_b通りの値を取る型bの a | b は n_a + n_b 通りの値をとるという話はなるほどなーという感じだ。

2014-11-25 23:48:46