Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@taisukeoe
Created March 2, 2021 14:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save taisukeoe/51caee6956e03e26d2041f56b611b47c to your computer and use it in GitHub Desktop.
Save taisukeoe/51caee6956e03e26d2041f56b611b47c to your computer and use it in GitHub Desktop.
20210302_rpscala
清水翔太20:59
一見でーす><
Ryuto Ishikawa20:59
こんばんは、初参加です。よろしくおねがいします。
あなた21:00
はじめまして~!よろしくお願いします ✋
Naoki Aoyama21:01
こんばんは〜〜〜
Nakamura Manabu21:01
よろしくおねがいします~
あなた21:01
わいわい
Tae Matsumoto21:01
歴史凄い!
安達聡司21:01
こんばんはー
あなた21:01
gitter channelも、あり〼
https://gitter.im/rpscala/rpscala
Shunsuke Otani21:01
こんばんは〜
Taketo Ikeda21:01
こんばんわ!
近藤豊峰21:01
こんばんは〜!
Tae Matsumoto21:02
地味に初参加です!よろしくおねがいしますー
Taketo Ikeda21:06
遅れて来られた向けに
rpscalaのonlineの資料です
https://docs.google.com/presentation/d/1Qhl4LiIgUTxUE1VaWbFwCk7qUK7ZbReXJwxkyp9RSS8/edit#slide=id.p
かとうじゅんいち21:09
おっさんが多いですからねー。僕もおっさんですが…。
omi end21:10
こんばんはー!
Naoki Aoyama21:10
こんばんはー!
Sekkei Unou21:10
私も初参加です、よろしくお願いいたします。
Kenji Yoshida21:11
https://togetter.com/li/316892
吉村優21:12
Setって共変だとマズいんでしたっけ?
taber cedre21:13
Set が Function1 を継承している……なるほど。
Kugiya Jiro21:13
Seq(1).toSet[Int].map(_ => + 1)// これはOK
吉村優21:13
あー、 Set[A] extends A => Boolean
:point_up: になってる感じなのかなw
Toshiyuki Takahashi21:13
yatta-
Toshiyuki Takahashi21:15
お悩み解決じゃん
清水翔太21:15
toSet と to(Set) って何がどう違うんですか?
あなた21:16
https://www.scala-lang.org/api/current/scala/collection/Seq.html#to[C1](factory:scala.collection.Factory[A,C1]):C1
Toshiyuki Takahashi21:17
fromもありますよね
Kugiya Jiro21:19
to(Seet)した後、mapした場合ってループ1回なんですかね?ループ2回?
あなた21:19
https://github.com/scala/scala/blob/v2.13.5/src/library/scala/collection/Set.scala#L221
https://github.com/scala/scala/blob/v2.13.5/src/library/scala/collection/Factory.scala#L260
Kenji Yoshida21:20
scala -Xprint:typer -e "Seq(1).to(Set)"
Kenji Yoshida21:22
https://github.com/scala/scala/blob/v2.13.5/src/library/scala/collection/Factory.scala#L270
清水翔太21:26
なんかすみません(?)
kiris21:27
Scala上級者も理解できてい良い質問だったということで
Kugiya Jiro21:27
breakOutと同じことした場合はviewですね。
taber cedre21:29
リモートでもいつもの rpscala だった。
Toshiyuki Takahashi21:29
2.13移行でbreakOutが使われてるコードをtoに書き換えまくった記憶
Taketo Ikeda21:29
https://www.lihaoyi.com/post/BenchmarkingScalaCollections.html
Kugiya Jiro21:31
メモリ効率と計算量は別かと
計算量が高い = CPU負荷が高い
omi end21:32
もうちょっと下の方にメモリについて書かれてます?
scala -Xprint:typer -e "Seq(1).to(Set)"
taber cedre21:32
時間計算量と空間計算量の話。
omi end21:32
https://www.lihaoyi.com/post/BenchmarkingScalaCollections.html#memory-use-of-immutable-collections
あImmutableの話だった↑
Naoki Aoyama21:34
Vector のパフォーマンス改善は 2.13.2 から
https://github.com/scala/scala/releases/tag/v2.13.2
Kugiya Jiro21:35
大体、1リクエスト終わったらGCされる
Taketo Ikeda21:36
ありがとうございます!
Nakamura Manabu21:36
http://dotty.epfl.ch/docs/reference/other-new-features/explicit-nulls.html
Toshiyuki Takahashi21:37
Nullの人だ!
kiris21:38
人(猫)
めっちゃScalaの求人でてる
omi end21:39
Some(null)
かにかま21:39
Javaの関数からNullが返ってきたらどうなりますか?
吉村優21:40
Javaのやつは全部 A | Nullのユニオンにするのかな?
taber cedre21:41
TypeScript じみてきた。
Toshiyuki Takahashi21:42
Scala3のインデントのシンタックスまだ頭にスッと入ってこない
かにかま21:42
A | NullをOption(x)に適用したらOption[A]になるんですかね?
Naoki Aoyama21:43
おこられた
scala> val a: Option[Int] = Some(null)
1 |val a: Option[Int] = Some(null)
| ^^^^
| Found: Null
| Required: Int
Kenji Yoshida21:43
https://github.com/search?q=%22-Yexplicit-nulls%22&type=code
Toshiyuki Takahashi21:43
typescriptじゃん
taber cedre21:43
TSだ。
かにかま21:43
C#だ
近藤豊峰21:43
typescript思いましたw
吉村優21:43
パターンマッチじゃだめなのかな。
Shinichi Harada21:44
kotlinのsmart castみたい
Naoki Aoyama21:45
思いのほか -Yexplicit-nulls 使われてるんですねぇ
8888888888888
taber cedre21:45
一番上が ExplicitNullsDemo.scala なの味がある。
小西俊司21:46
これbytecode変わるんですか?
Shinichi Harada21:46
そういえば、Scala3のインデントベースが3 spacesになってるのが気になってます
Yuichi Maekawa21:47
explicit-null使うとsbt compile時にnullな場合のcase matchにwarnでまくるんだろうか
Shinichi Harada21:52
Scala3とScala2.13.4の依存関係はこのへんに書いてありますね https://scalacenter.github.io/scala-3-migration-guide/docs/compatibility.html#examples
Kenji Yoshida21:54
インデント、ドキュメントは3の場合あるけど、公式ライブラリ2だったりするし謎…
taber cedre21:55
Rubyが3桁インデントというのは大昔のネタ……。
かとうじゅんいち21:56
Scala3 の end markerも書いてみたけど、難しかったなぁー
小西俊司21:56
ほぼ2しか見たことないです > Ruby
Toshiyuki Takahashi21:56
scalafmtでなんとか
Yuusuke Kounoike21:56
rubyリポジトリの.editorconfigでは2ですね
https://github.com/ruby/ruby/blob/33dc0a070a515811e71fccbdc8cf0cd5a5dd784c/.editorconfig#L18
taber cedre21:56
Scala3の新しい文法が目に馴染まなすぎて今は辛いけど、そのうち慣れるかな……。
かとうじゅんいち21:56
https://dotty.epfl.ch/docs/reference/other-new-features/indentation.html#the-end-marker
かにかま21:56
Scala3以降はインデントベースが主流になるんですかね?
かとうじゅんいち21:56
Scala でも end 書けるぞー
taber cedre21:57
オフサイドルールは好き嫌い分かれる印象がある。
Shinichi Harada21:57
これのvalのendは驚きでしたね
https://dotty.epfl.ch/docs/reference/other-new-features/indentation.html#the-end-marker
ポンコツ戦艦21:57
元Pythonista的には好き
omi end21:58
end marker なんかつらそう
taber cedre21:58
Python は4桁インデントなのでオフサイドルールでも良いのだけど、2桁インデントの言語でやると見辛いと思う(個人の感想)。
Toshiyuki Takahashi21:59
すでにインデント戦争の香りが
Tae Matsumoto21:59
戦争を招くルールいやなんですけどね、個人的には。
omi end21:59
エディターの力でなんとか、
Shinichi Harada22:00
インデントの他にも if ... then ... になったりとか
https://dotty.epfl.ch/docs/reference/other-new-features/control-syntax.html
taber cedre22:00
if then は小田好先生の趣味なんですかねやっぱり……?
Takashi Kawachi22:01
https://github.com/t2v/holidays
Tae Matsumoto22:02
おしました!
Nakamura Manabu22:02
ありがとうございます!!!!!
かとうじゅんいち22:03
https://users.scala-lang.org/t/scala-3-indentation-2-3-4-or-tabs-lets-fix-this/7140
「私は今まで2スペースインデントを受け入れてきましたが、3スペースインデントは実は構造的な読みやすさと行の折り返しの間の良い妥協点なのです。」
Nakamura Manabu22:03
なんと
かとうじゅんいち22:03
T. Tamaki22:04
ほお
Shinichi Harada22:04
戦争がw
taber cedre22:04
これすき "Now we know why it is called Scala 3."
omi end22:04
w
Shinichi Harada22:05
公式ドキュメントは全部3spacesなんですよねー
かとうじゅんいち22:05
Russさん
かとうじゅんいち22:06
https://scalacenter.github.io/scala-3-migration-guide/docs/scala-3-syntax-rewriting.html
中括弧スタイルをインデントスタイルに書き換えるコンパイラオプションあって、これを試したけど、普通に動いた。
Tae Matsumoto22:07
初めて知りました。心配です>3Space
taber cedre22:07
中括弧で書いても scalafmt さんが全部直してくれる。
Shinichi Harada22:08
公式のgitter8のテンプレートがScalaTestじゃないのは、マクロでまだ使えないからってことなんですかね
https://github.com/scala/scala3.g8/blob/master/src/main/g8/build.sbt#L11
Yuusuke Kounoike22:08
ASTで保存するIDE欲しい
Yuichi Maekawa22:09
主観によってしまうので言語のフォーマッターが頑張るのではなくIDEがよしなに表示するときに頑張って欲しい...GitHubもか...
taber cedre22:09
全然違う2種類の文法が採用されてるの、ちょっと F# みある。https://docs.microsoft.com/ja-jp/dotnet/fsharp/language-reference/verbose-syntax
あなた22:10
-Xignore-scala2-macros
Yuichi Maekawa22:11
上にコメントしたことがそのまま起きた
Tae Matsumoto22:13
ちょっとした感動味がある
Yuichi Maekawa22:13
:clap:
taber cedre22:14
マクロ関わらなければほとんどそのまま使えるのか。
通ったw
Ryuto Ishikawa22:15
おー
omi end22:15
きれいな緑色だ
Shinichi Harada22:18
謎ですね...
あ、ミスった
Yuichi Maekawa22:21
ifのところをcase matchで書くのじゃだめなのかな
taber cedre22:23
match で良さそう。
taber cedre22:25
if (祝日法施行 == null) return
小西俊司22:26
val a = {
a = LocalDate.of(...)
assert(a != null)
a
}
taber cedre22:27
null の時は例外投げるしか無いのでは?
Yuichi Maekawa22:28
case _: LocalDate => _
を上にすればよさそう
+1
omi end22:29
8888888
case date: LocalDate | Null => が通るか観てみたい
omi end22:30
Null をケアはしないけど、コンパイルとおりますか?Scala2で Union Type 使いたいケースがあったので
taber cedre22:31
網羅性チェック捨てるなら case null は不要そう。
omi end22:31
888888888
Yuusuke Kounoike22:31
888888
Ryuto Ishikawa22:31
88
かとうじゅんいち22:31
888888
Shinichi Harada22:31
88888888
taber cedre22:32
8888888
Yuichi Maekawa22:32
888
Kugiya Jiro22:32
888888
Naoki Aoyama22:32
おつかれさまでした!!
Kugiya Jiro22:32
お疲れさまでした。
Taketo Ikeda22:32
お疲れ様でした!
かにかま22:33
お疲れさまでした。
あなた22:33
お疲れさまでした~~~
Takahiro Sugiura22:33
お疲れ様でした。
安達聡司22:33
お疲れ様でした
Naoki Aoyama22:33
また隔週火曜日もよろしくおねがいします!!!!
Taketo Ikeda22:33
https://docs.google.com/presentation/d/1Qhl4LiIgUTxUE1VaWbFwCk7qUK7ZbReXJwxkyp9RSS8/edit#slide=id.p
Takashi Kawachi22:33
https://docs.google.com/presentation/d/1Qhl4LiIgUTxUE1VaWbFwCk7qUK7ZbReXJwxkyp9RSS8/edit
Takashi Kawachi22:37
ちょい離席しますー
Kenji Yoshida22:38
gitter全く使われてないけどどうなったんだろう…
別途Youtubeか何かでpublicにライブ配信するとか(?)
omi end22:39
rpscala 開催中はTwitterハッシュタグがいいですね。ここのチャットも終わったら読み返せなくなるかもです?
かとうじゅんいち22:40
youtube liveは一見さん参加しやすいですね。
Sekkei Unou22:40
アーカイブが残っていると、初めてでも雰囲気がつかめて参加しやすいかもしれません。
Tae Matsumoto22:41
> youtube liveは一見さん参加しやすいですね。
+1ですねー。外から雰囲気気軽にわかると良いなと思います
omi end22:41
今日はこいつを、コンパイルしていくっ!ででん
Nakamura Manabu22:42
いったい何クッキングなんだ……
かとうじゅんいち22:42
youtube liveのコメントで質問投げて、わいわいやれますね。
omi end22:43
YouTubeならそのうち投げ銭もできるのでは!!
Yuichi Maekawa22:43
今回初参加なので何も理解せずに書いてしまうかもしれないですが、感想です。
勉強会で何をどう話したかをブログなどで発信されていると嬉しいなと思いました!
- 実際にどんな雰囲気の勉強会なのか知れる
- 内容をみてnot for meか判断しやすい
- 忙しい人にはハイライトなどが伝わりやすい
また、文章にしておくとチャットツールなどにコンテンツとしてシェアされやすいなと思いました
Nakamura Manabu22:44
:+1:
Yuichi Maekawa22:48
上記に付随して、コンテンツ作成は運営が大変みたいな問題があると思います。
僕がこれまで参加した勉強会では「ブログ枠」という枠を用意して、有志でブログを書いてもらっているものもありました。
Naoki Aoyama22:49
🙏
Nakamura Manabu22:50
https://nagise.hatenablog.jp/entry/2021/01/06/215537
Tae Matsumoto22:50
オンラインならありなのでは
泥酔しなければ
かとうじゅんいち22:50
毎月ぐらい トーク配信番組→懇親会(配信なし) をやってるのですが、懇親会のが盛り上げるねぇ。
omi end22:51
飲み会というか、結構ベテランScalaエンジニアさんが話し合ってるのを聴いているだけでも楽しいです。Scala3のDoc観ながらとかでも楽しそう。
taber cedre22:51
rpscala の本体は懇親会的なところはあった(それがまた内輪感を醸し出していたのだけど)。
Yuichi Maekawa22:53
毎度違うゲストを招待して話すとかは内輪感減らせるかもしれない
omi end22:53
回数を重ねていくと、喋り枠が固定されていきそうな気はしますね。
Sekkei Unou22:53
rpscala関西支部はありますか・・・?
Tae Matsumoto22:54
全国から参加できるのは素敵
かとうじゅんいち22:55
あー、ちょっとしゃべれないですが、書いておきますー
かとうじゅんいち22:56
トークテーマが決まっていると盛り上がりますね。前々回はRustとScalaの似ているところ似てないところ、みたいな感じで。
Tae Matsumoto22:57
個人的には最適タイムです
Yuichi Maekawa22:57
意見言いっぱなしになりますが、今日はここで落ちます!楽しめました!
次回も楽しみにしております!
Takashi Kawachi22:57
ありがとうございました
Nakamura Manabu22:57
おつかれさまでしたー!
omi end22:58
おつかれさまでした!
Tae Matsumoto22:58
おつかれさまでした!
あなた22:58
お疲れさまでした~
omi end22:59
運営やります
かとうじゅんいち23:01
Discordが音声や画面共有も楽ですね。
Tae Matsumoto23:01
+1
omi end23:04
8888888888
foo bar23:04
おつかれさまでした
Ryuto Ishikawa23:04
おつかれさまでしたU^ェ^U
清水翔太23:04
お疲れ様でしたー
勉強になりました
かとうじゅんいち23:04
お疲れ様でしたー
Taketo Ikeda23:04
888888
omi end23:04
お疲れさまでしたー!88888888
Yuusuke Kounoike23:04
88888888888888
吉村優23:04
おつかれさまでした。
Shinichi Harada23:04
お疲れさまでしたー
taber cedre23:04
お疲れさまでした。
Takahiro23:04
お疲れさまでしたー
かにかま23:05
お疲れさまでした。
Sekkei Unou23:05
お疲れ様でした〜
小西俊司23:05
お疲れさまでした
Yoshiteru Takeshita23:05
Discord作った
https://discord.gg/sEwcERCAm8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment