Scalaのソースを読んでいて辞めてほしいと思った12の機能
えーっと、 https://github.com/joshcough/Compilers このへんのソースを地道に呼んでいる訳ですが、正直、Scalaの機能をふんだんに使っていて、
やめてくれー!っと思っております。
俺は、Scalaマニアじゃないんだ!コンパイラの仕組みを知りたいんだー!なんて思う訳でした。
ということで、辞めてほしいと思った機能をいろいろと書いてみます。
1.traitで多重継承っぽくふんだんに使う
class A extends A1 with A2 with A3
とかやめてほしい。どこに何があるか分からないじゃないかー!
っと
2.traitを後付けでバックエンドを切り替えて嬉しいぜ機能
new A with X86Backend
とかなんとかやると、 AにX86Backendの機能が追加されて嬉しいぜ
ってことらしいのだけど、x86しかないんだから、やらんでいいよ、、、と思うのでした。
3. _:* なにこれって感じなんですけど
可変長引数らしいんだけど、なくても何とかなるので使わなくていいだろうという。
3.foldLeft, map
foreachでなんとかしたらいいような気もするけど、覚えれば大丈夫なのだけど、いつも悩むので、これは覚えるべきか。
4. yield
ストリーミングして云々なのは知っているけど、結局何やってるんだっけ?と悩むので使わなくていいんじゃないかと思うのでした。
8.時間計ってくれる関数
timedとかいう関数かなにかを使うといい感じに時間を計ってくれるんだけど、これ本質と関係ないしと思いました。
9.S式の読み込み、出力機能
Scalaなら、タプルやら、Listやらあるので、とくにいらないんじゃないかと。
10.パーサ機能
シンタックスエラーをチェックするのは、ちゃんと作る場合は必要だけど、俺はレジスタ割り付けだけ知りたいのでいらないと思うのでした。
11. case classによる、AST表現
これもなくても作れるのでないほうが読むソース短くなって嬉しいと思いました。
12. implicit conversion
new File("a.txt").readとやってファイル読み込めるぜ
っていうことなんですけど、readFile("a.txt")とかいう関数で読み込みでいいよって思ったのでした。
と、いうことで、来年は、このソースを呼んでちゃんと把握したら、もっと分かりやすいレジスタ割り付けするプログラムを書きたいと思いました。