なんかtweet流れてきたので
TypeScriptの型がどれほど強力かというと、コードエディタ上で直接数独ができるほどの複雑な型を作成した方がいるほどです。このSudoku型を使用すると、TypeScriptの型チェッカーが間違いを正確に指摘してくれます。 pic.twitter.com/mCXXjGqK9D
— Jeffry Alvarado (@jalva_dev) September 7, 2024
- Scala 3のmatch type自体の詳細な説明は省略しますが、compile時計算的なことができて、チューリング完全です https://tarao.hatenablog.com/entry/lambda-scala3
あくまで答えがvalidか?のcheckerだけで、プレースホルダー部分実装してない- それも実装しました。下記に貼った
少なくともIntelliJ IDEAだとリアルタイムにエラー表示はしてくれなかった気がする誰か他の環境で試してくれ- 一応できた。下記に追記したtweet参照
- 雑にcompile errorにするのか?丁寧にtrueかfalse返すのか?あたりは選択肢があり得る。そのあたりの方針が雑
- typescriptの実装見ずに1から数十分?で自作したけど、Scalaのmatch type素直に書け過ぎて、慣れてるとそんなに難易度高くないので面白みがない(?)
- そもそも、あまり調べてないけど、Scalaでの前例は普通にある気がする(?)
- 細かい部分色々雑なので、もっとリファクタしがいがありそう
- サンプルの回答の1箇所どれか雑に変えたらcompile errorになることを確認したので、多分あってると思うが、コピペミスとかあったら教えてください
- 実装にあたっては、ロジック考えるとかより、81個ボイラープレートあるのが辛かった
- 効率と読みやすさの点でも、どちらを優先するか?どっちも頑張るか?によって、もっと書き方はいくらでもありそう
checkerだけの初期版
IntelliJ IDEAでも作成時に
— Kenji Yoshida (@xuwei_k) September 7, 2024
"BSP project"
の方にすると、若干もっさり(?)してるけど、一応リアルタイムにエラー表示されたわ pic.twitter.com/WnLLg67orC
プレースホルダー対応版
今度はプレースホルダー対応含めてScala 3のMatch Typeで完全再現しましたhttps://t.co/37TlrwZrdD pic.twitter.com/MnVHhuTu89
— Kenji Yoshida (@xuwei_k) September 7, 2024