giantneco’s blog

技術メモ

ジェネリクス勉強会

ジェネリクス勉強会(https://connpass.com/event/56773/)に参加してきた。 会のテーマはジェネリクスで、その話を含めればおおよそ何でもよい感じの話。 テーマがテーマなので Java に言及することが多かった。一方で関数型言語の話は控えめ (最後のセッションが Scala だったが、その前に時間切れで途中で帰ってしまった…これはかなり残念)

ジェネリクス ディスパッチ 表裏 by κeen さん

Java と Rust、ときどき Scala で見るジェネリクス実装方法の違いの話。 実装面まで踏み込んで調べたことはないので興味深かった。Rust も楽しいそう。

また存在型についての話もあった。 存在型については一度調べたことがあるはずなのに、全然覚えていなかった。TaPL を読もう。 ただ存在型があった方がいい場面というのがいまいちイメージできず理解できてない。

ジェネリクスの概論とか by なぎせさん

ジェネリックスとはなんぞやという話。 Java8 で型推論が強化されたらしいが、最近も最近の Java を使えてないのでどうも恩恵を受けれてない。 あとこの発表を聞いて、リスコフ置換原則は若干間違えて覚えていたことがわかった。あぶない。

拡張可能レコードの恩恵 by fumieval さん

Haskell.Generic に関連していると思われる話。正直ついていけてなかった。

Generics on Xamarin products by atsushieno さん

https://speakerdeck.com/atsushieno/generics-on-xamarin-products

Xamarin でのジェネリクスの話。Xamarin、というか Mono は C で書かれていて、 その上でジェネリクスを実装するのはかなり大変だったらしい。 プリミティブがジェネリクスの引数に来てしまうとアドレスがずれてしまうとのこと。 解決策としては昔は多めに引数の領域をとるようにしていたが、現在はスタック上に 引数を置いて、後で CPU 側のトランポリンでメモリアドレスを構成しなおしている。

Xamarin についてはくわしくないが、低レイヤの話もあったので、かえって自分にはわかりやすかった。

Fluent Design のすすめ by haochenxie さん

Java で Fluent Design を構築するために、ジェネリクスをうまく使いましょうという話。 特に入れ子構造になる Fluent Design を実現するにはジェネリクスを使う必要があって、 かつその使い方がかなり工夫されていた。

どうせ Java でしょ?と思っていたが思いのほか楽しかった。 とくに Javaジェネリクスの文脈で継続が出てくるとはまったく思っていなかった。

あと、Java の型システムは実はチューリング完全で、また安全でもないという話は結構驚いた